AI・機械学習
AIがソフトウェアエンジニアリングの中間層を排除している
AI is removing the middle class of software engineering (blog.florianherrengt.com)
要約
AIの進化により、ソフトウェア開発の現場ではコード生成の速度が劇的に向上しましたが、それに伴い、コードの品質や保守性を維持する責任が曖昧になっています。AIは大量のコードを迅速に生成できますが、その結果生じる複雑さや技術的負債の管理、そして根本的な問題解決能力は依然として人間のエンジニアに依存しています。この状況は、AIの能力を超える判断力や設計能力を持つエンジニアの価値を高める一方で、それを持たないエンジニアの需要を低下させる可能性があります。
全文翻訳
2020年です。
あなたはチームで最も経験豊富な人物であり、コード品質とアーキテクチャを担当しています。
あなたは優れたエンジニアリングプラクティスを確立し、経験の浅い人々からのPRを徹底的にレビューし、健全なコードベースを維持するために懸命に働いています。
そしてある時、あなたは休暇に出かけます。
戻ってくると、コードベースはめちゃくちゃになっています。
誰もがほとんど注意を払わずに互いのPRをマージし、誰かがデータベースに新しいテーブルを大量に追加して正規化を解除しました(それが簡単だったため)、そしてサーバーレスやKafkaを、それらが必要であるという確固たる証拠なしにスタックに追加しました。
大丈夫です。あなたはこれを修正できます。
2026年に早送りします。
あなたは休暇に出かけていません。
それは普通の月曜日の朝です。
あなたは美味しいコーヒーを淹れ、コンピューターを開き、レビューすべき7つのPRを見つけます。
最初のPRを開きます:+24506 -3938行、そしてそれらが何をするべきかのAI生成の説明が添えられています。
どういうわけか、あなたのチームは金曜日以降、あなたが数週間不在だったときよりも多くの変更を加えています。
AIはスピードリミッターを解除した
AIは、エンジニアリング文化が弱いプロジェクトをはるかに速く失敗させます。
かつては、人々が座ってどのように何かを行うかについて話し合った時代がありました。
今では、数時間エージェントにプロンプトを与えるだけでPRを開くことができます。
この働き方の最も悲劇的な側面は、訓練されていない目には、それが機能するように見えることです。
ブランチをプルしてテストすると、おそらくある程度機能的なものが得られるでしょう。
では、彼らは何をしますか?
彼らは続けます。
何度も、何度も。
プロジェクトが誰も何もどのように機能するかを知らない状態になるまで。
まるで誰かがクレジットカードで新しい高級車を買うようなものです。
借金は見えません。
ただ、素晴らしく見える車が見えるだけです。
しかし、ユーザーは奇妙なバグを報告し始めます。
あなたのチームがそれを修正しようとするのは4回目です。
つまり...AIに修正を依頼しているのです。
残念ながら、Fableでさえもそれを理解できないようです。
あなたは、この機能に取り組んだ人に話をしに行きます。
「それで、データはどこから来るのですか?」
「うーん...実はよく知りません。Claudeに聞いてみましょう。」
あなたは隣に座り、画面に表示される無限のテキストの壁を見つめます。
どちらもそれが真実かどうか分かりませんが、Claudeは非常に自信を持っているようです。
「ウルトラコードをオンにして、確認を依頼してみましょうか?」
これは時間がかかりそうです。
あなたはXでの最新のドラマについて話し始めます。
ついに答えが得られました。
「これ、何か意味わかりますか?」
「よくわかりません。」
「これ、確か...先週作ったんじゃないですか?」
沈黙。
このプロジェクトは非常に複雑になり、多くのレイヤーとサービスが追加されたため、チームの誰も何が起こっているのかを理解することは不可能になりました。
では、どうしますか?
それを修正するには、誰かに正当化することさえ不可能になるほどの膨大な作業が必要になります。
そして、何を考えているのですか?
数ヶ月後には、結局同じ状態に戻るだけです。
「Claudeに修正を依頼しましょう。」
「わかりました。ループとゴールを設定して、すべてが機能することを確認するまで停止しないようにします。」
「良さそうですね。」
「実は、今日Fableの使用量の上限に達してしまったので、明日実行します。」
あなたはさらにコーヒーを手に取り、コンピューターに戻ります。
レビュー待ちのPRが13件残っています。
理解できないものを見つけ、それを書いた人にメッセージを送ります。
「なぜここでこれを行うのですか?」
彼らはリンクを送ってきます。
それはClaudeの会話です。
その会話のどこかに、Claudeが自信を持ってあるアーキテクチャを推奨し、謝罪し、考えを変え、あなたの同僚がそれを再考するように依頼し、さらに15回の変更ラウンドを経て、このコードの背後にある設計上の決定が隠されているようです。
「どの部分を読むべきですか?」
「おそらく全部です。」
これは聞き覚えがありますか?
私がこれについて話すたびに、誰も大規模なシステムを完全に理解したことなどない、と言う人が現れます。
それは本当です。
あなたはすべてのサービスとすべてのデータベースを理解することを期待されていませんでした。
しかし、少なくとも誰かはそれを理解しており、あなたに説明してくれたはずです。
今では、彼らはLLMに尋ねます。なぜなら、彼ら自身も知らないからです。
悪いエンジニアを雇う余裕はもうない
どのチームにも、プロジェクトを可能にする有能な人々がいます。
また、本質的に他のすべての人にとって仕事を難しくする人々もいます。
そして今、誰でも1日で、かつて1年かかっていたよりも多くのコードを生成できます。
上記の物語では、誰もが失敗しています:
25,000行のPRを開いたエンジニアは、エージェントがそこまで到達するずっと前に停止すべきでした。
彼らは、それが何をしているのかを理解し、作業をより小さな部分に分割し、それが導入したすべての新しい抽象化に疑問を呈すべきでした。
それをレビューした人は、レビューを拒否すべきでした。
Kafkaを追加した人は、なぜそれが必要なのかを正確に説明できたはずです。
機能を作成した人は、Claudeの会話へのリンクを送ることなく、データがどこから来るのかを説明できたはずです。
しかし、問題は何なのでしょうか?
AIを使って修正すればいい。
さて、それはそれほど簡単ではありません...
これに飛びつく前に、技術的負債が常に悪いという意味ではありません。
重要なのは、それがショートカットであることを知っていることです。
anyway、悪い決定を元に戻すのは難しいです。
非常に難しいです。
例えば、LLMがデータベースにテーブルや列を大量に追加するのにどれくらい時間がかかるでしょうか?
10分?
しかし、そこにデータを保存し始めると、すぐに削除することはできません。
移行計画を立て、人々が毎日使用してお金を払っているシステムを混乱させないようにする必要があります。
移行が失敗した場合にどうするかを考える必要があります。
孤立した外部キーで終わらないようにする必要があります。
最高のモデルを使っても、それは非常に困難です。
そして、それを修正している間に、さらにPRが次々と入ってきます。
より多くのコード、より多くの抽象化、より多くの決定。
人は午後に20,000行のコードを生成できますが、あなたはまだそこに座って、それらの行が実際に行っていることを理解する必要があります。
1つの悪い決定を解きほぐす頃には、さらに5つがマージされています。
新しいAI経済
もちろん、悪いエンジニアは常にリスクでした。
これは何十年も前からこうでした。OpenAIやAnthropicが存在するずっと前から。
悪い決定は積み重なり、不必要な複雑さが蓄積し、チームは誰も本当に理解していないシステムを維持することになりました。
違いは、かつてはそれを実行できる速度に限界があったということです。
今日、実装は安価です。
あなたは良い決定を下すために報酬を得ています。
複雑さを管理しながらスケーラブルなソフトウェアを構築するために。
なぜ企業がロンドンやサンフランシスコでエンジニアに6桁の給与を支払っているのか、自問してみてください。
もし彼らが必要としていたのが、仕様を動作するコードに変換できる誰かだけなら、なぜ彼らはそれほど多くを支払っていたのでしょうか?他の場所では安価にそれができていたのに。
「ソフトウェアは解決された」と主張するテクノロジー企業が、最高の才能を引き付けるために依然として高給を支払っているのはなぜですか?
私の推測では、AIは給与をさらに引き離すでしょう。
雇用されるためには、クリアしなければならないバーがあり、そのバーは現在の最新モデルが何ができるかということです。
優秀なエンジニアは、AIが彼らをはるかに速く動かすことができるため、より価値が高くなりました。
彼らは、実装作業を行うためだけに、周りにそれほど多くの人々を必要としなくなりました。
同時に、悪いエンジニアを雇うのははるかに高価になりました。
私は以前、バイブコーダーのキャリアパスは終わっていると書いたときに、これについて書きました。
エージェントにプロンプトを与えることで得られるもの以上の貢献が必要です。
LLMの推奨を評価するために必要な判断力が欠けている場合、より多くの判断力を求めるだけでは問題は解決しません。
ある時点で、誰かが何が起こっているのかを知る必要があります。
そして、それがチームで最も価値のある人物です。
そうでない人々は、雇用がはるかに安くなるか、完全に置き換えられる一方で、お金は実際に信頼できるごく少数の人々に流れていくでしょう。
これはソフトウェアエンジニアリングに限ったことではないと思います。
私は、ほとんどの知識労働で同じことが起こると信じています。
AIは最高の人物を...