開発者として、仕事に関することで1日に何回Googleを利用していますか?ライブラリの使い方を調べたり、遭遇した問題の修正方法を探したりしていませんか?
おそらく答えは、少なくとも1日1回、ではないでしょうか。
今日、インターネットは開発者の時間を大幅に節約してくれます。どんな問題に遭遇しても、適切なキーワードでGoogle検索を行えば、多くの場合、ニーズに合った結果をすぐに見つけられます。
たとえば、ファイルを1行ずつ読み込む方法を知りたい場合、次のような検索を実行するかもしれません:

最初の検索結果は、高評価のStack Overflow回答です。

開発者はインターネットに依存するようになりました。これには明確な利点があります。多くの問題を迅速に解決でき、生産性が高まるからです。しかし、開発者はインターネット接続がなくても生産的でいられるのでしょうか?
まず、インターネットが普及する前、ウェブ上で利用できる開発リソースが限られていた時代に、どのように作業していたのかを見てみましょう。
私の記憶では、20年前に問題を解決する必要があるときには、次のような方法を試していました:
- 書籍で答えを探す:職場や自宅で、開発者は自分の分野に関する書籍を蔵書として持ち、行き詰まったときには、解決策が見つかることを期待してそれらを調べていました。しかし、書籍は現実世界のあらゆる問題を網羅できるわけではなく、探しているものが見つからないこともよくありました。
- 同僚に尋ねる:もう1つの方法は、同僚の経験を頼ることでした。特定の問題をすでに経験した人がいないか尋ね、その人が解決策を持っていることを期待しました。
- コードに潜り込む:ライブラリ使用中に問題が発生した場合、最も効果的な方法は、そのライブラリ自体をデバッグして問題の解決方法を理解することでした。利用できるリソースが非常に少なかった時代にCORBAバスを使っていたときのことを覚えています。何が起きているのかを理解するために、外部ライブラリをデバッグしなければなりませんでした。
- サポートに連絡する:複雑な問題に遭遇し、ソースコードにアクセスできない場合は、解決策を見つけられることを期待してソリューションプロバイダーに連絡することもありました。たとえば、複雑なDCOMの問題でMicrosoftに連絡したことを覚えています。適切な担当者にたどり着くのが容易ではなかったため、解決まで3週間かかりました。
幸い、ウェブは開発者にとって宝の山となり、数回クリックするだけで解決策を見つけられることがよくあります。しかし、インターネットに依存することの欠点は何でしょうか?
- 悪いコピー&ペーストの習慣が身につく:開発者はウェブで見つけた解決策をそのまま自分のコードにコピー&ペーストし、動作すれば次へ進んでしまうことがあります。提案された解決策の背景にある理屈を完全に理解しようとしないかもしれません。
- 怠惰な開発者になる:開発者は怠惰になり、解決策を自分で探すことを完全に省略して、基本的な質問を直接投げ、他の人に調べてもらおうとすることがあります。実際、Stack Overflowにある多くの基本的な質問は、非常に簡単な検索で答えられるものだという点には驚かされます。
- 開発者間のコミュニケーションが減少する可能性がある。
元の問いに戻り、C++に焦点を当ててみましょう。インターネットにアクセスせずに、これらの基本的なタスクに対する効率的な解決策をすばやく見つけられますか?
- std::stringが別の文字列で始まるかどうかを確認する。
- std::stringが別の文字列で終わるかどうかを確認する。
- 数値の階乗を計算する。
- 数値が素数かどうかを確認する。
これらの問題を自分で解いてみると、自分がどれほどインターネットに依存しているかに驚くかもしれません。ウェブがなければ、基本的なタスクでさえそれほど簡単ではないかもしれないからです。ウェブへの依存度が高まること自体は必ずしも問題ではありませんが、その欠点は認識しておくべきです。ウェブで検索する前に、数分間だけ自分で問題を解こうとしてみることで、問題に何が関係しているのかを正確に理解できます。これにより、適切なキーワードを使ったより関連性の高い検索が可能になり、解決策が見つかったときには、その背景にある理屈を十分に理解できるようになります。
