知識を蓄えるための読書はやめよう。問題を解決するための読書を始めよう。
ほとんどのエンジニアリングの読書リストは、知識を集めることに焦点を当てています。しかし、現代のエンジニアリングにおいて評価されるのは、ボトルネックを解消することです。
最近、あるジュニアエンジニアが「エンジニアのための必読書トップ10」というリストを見せてくれました。それは10年前のリストと何も変わらないものでした。それは、古くからある同じ前提に基づいています。
その前提とは、「十分な数の本を読めば、より優れたエンジニアになれる」というものです。しかし、高いパフォーマンスを発揮するチームは、そのような方法では学びません。
最良のエンジニアは、制約(constraints)に基づいて学習計画を立てます。
標準的な読書リストは、すべての知識に価値があると考えています。しかし現実には、エンジニアリングにおける価値はコンテキスト(文脈)に依存します。
• データベースの問題に直面しているバックエンドエンジニアに、アジャイルに関する本は必要ありません。 • AIの推論コストがかかりすぎているチームに、一般的なクラフトマンシップの本は必要ありません。 • レイテンシの問題に直面しているスタートアップに、リーダーシップのフレームワークは必要ありません。
彼らに必要なのは、目の前にある特定のボトルネックに対する解決策です。読書リストは「網羅性」を最適化しますが、エンジニアリングにおいて報われるのは「関連性」です。
データベースやネットワークといった基礎は、今でも重要です。しかし、それだけではもはや不十分です。
現代のシステムは、新たな制約をもたらします。AIの推論コストはその代表的な例です。従来のリストでは、こうした問題が扱われることはほとんどありません。
課題は、単に正しいソフトウェアを書くことだけではなくなりました。課題は、確率的なコンポーネント(probabilistic components)の上に、いかに信頼性の高いシステムを構築するかです。
かつて、エンジニアは決定論的な(deterministic)システムを扱っていました。同じ入力に対しては、常に同じ出力が得られました。
今日、システムの挙動は異なります。プロンプトによって回答が変わり、エージェントは異なる経路を辿ります。モデルをアップグレードしただけで、コードを変更していないにもかかわらず挙動が変わることもあります。
新たな問いは次の通りです: • 品質をどのように評価するか? • こうした変化をどのように管理するか?
これらはエッジケースではありません。日常的なエンジニアリングのタスクなのです。
有能なエンジニアは、本を最初から最後まで読み通したりはしません。彼らはメカニズムを理解するために読みます。ボトルネックを見つけ、そのメカニズムを特定し、必要なことだけを学びます。
• レイテンシが高いなら、バッチ処理(batching)を学ぶ。 • コンテキストが問題なら、検索(retrieval)を学ぶ。 • エージェントが失敗するなら、評価(evaluation)を学ぶ。
これにより、学習が直接プロダクション(本番環境)へとつながります。知識はレバレッジとなります。
この学習ループを活用してください:
- ボトルネックを特定する。
- その問題に対する具体的なリソースを見つける。
- 解決策を適用する。
読書リストを終わらせようとするのはやめましょう。システムを改善しようとし始めましょう。
次の一冊を手に取る前に、問いかけてみてください。「自分のシステムにおける最大の制約は何か?」
レイテンシか、コストか、信頼性か、それともオブザーバビリティか?
そのボトルネックを打破するためのリソースを見つけなさい。エンジニアリングは読書量競争ではありません。制約を解決するための専門職なのです。
次に何を学ぶべきかは、システムが決定します。