なぜ優秀なエンジニアがさらに価値を持つのか

 


作者:Florian Herrengt
元記事:https://blog.florianherrengt.com/ai-removing-middle-class-software-engineering.html

もし2020年だったら

あなたはチームで最も経験豊富な人物で、コード品質とアーキテクチャ設計を担当している。整備されたエンジニアリング規約を作り、自分より経験の浅い同僚が提出するPRを丁寧にレビューし、健全なコードベースを維持するために努力してきた。

ある日、あなたは休暇に出かける。そして戻ってくると、コードベースは完全にめちゃくちゃになっていた。

みんながお互いのPRをマージし合い、ほとんど真剣にレビューしていない。手間を省くために、データベースへ大量の新しいテーブルを追加して非正規化を進めた人もいる。十分な根拠もないまま、ServerlessやKafkaを技術スタックに直接追加した人もいる。

それでも大丈夫だ。まだ直せる。

時は2026年。あなたは休暇にすら出ていない。ただの月曜の朝だ。コーヒーを淹れ、PCを開くと、レビュー待ちのPRが7件ある。

最初のPRを開く。

+24,506 行、-3,938 行

横には、AIが生成した「このPRが何をするものか」を大まかに説明する文章が添えられている。

なぜか、金曜から今までの間にチームが行った変更量は、かつてあなたが数週間チームを離れていた間に彼らが完了させた作業量を上回っている。

AIは速度制限をなくした

AIは、エンジニアリング文化の弱いプロジェクトを、より速い速度で失敗へ向かわせる。

以前なら、チームはあることをどのように実装すべきか、座って議論していた。今では、AIエージェントを数時間走らせてPRを作るだけでよい。

この働き方で最も悲しいのは、訓練を受けていない人の目には、実際に動いているように見えることだ。

ブランチを取得してテストすれば、かろうじて動くものが手に入るかもしれない。では、彼らはどうするか。

続ける。

何度も、何度も繰り返す。

そしてプロジェクトは、誰も何がどう動いているのか、本当の仕組みは何なのかを把握していない段階まで進んでいく。

これは、誰かがクレジットカードで高級な新車を買うようなものだ。あなたに見えるのは見栄えのよい車だけで、背負っている負債は見えない。

しかしその後、ユーザーから奇妙なバグが報告され始める。これはチームとして4回目の修正試行だ。

正確に言えば、AIに4回目の修正を試させている。

残念ながら、Fableですら何が問題なのか把握できていないようだ。

続いて、あなたはこの機能を開発した担当者を見つけ、長い会話を始める。

「このデータはどこから来ているの?」
「ええと……実は自分も分かりません。Claudeに聞いてみます」

二人で並んで座り、画面上に次々と現れる文章を見つめる。

そこに書かれている内容が本当かどうかは、二人とも分からない。それでもClaudeは自信満々に見える。

「ultracodeを開いて、もう一度確認させましょうか?」

今回は少し待つことになりそうだ。そこであなたたちは、Xで最近話題になっているニュースについて話し始める。

ようやくAIが答えを出す。

「これ、筋が通ってる?」
「分からない」
「これって、あなたが先週やったものじゃないの?」

沈黙。

このプロジェクトは、あまりにも複雑になっている。多くのレイヤー、多くのサービスが積み重なり、チーム内の誰一人として、実際にどう動いているのかを本当に理解できなくなっている。

では、何ができるのか。

修復には莫大な労力が必要になる。その価値をなぜ管理職に説明すべきなのか、あなた自身にも分からないほどだ。

しかも、今あなたが何を悩んでいるのか。仮に本当に直したとしても、数か月後にはまた同じ状態に戻る。

「Claudeに直させればいいんじゃない?」
「そうしよう。ループと目標を設定して、すべてが正常だと確認できるまで動かし続ける」
「よさそうだね」
「待って、今日のFableの利用枠はもう使い切った。明日実行しよう」

あなたはもう一杯コーヒーを取り、PCの前に戻る。

今度はレビュー待ちのPRが13件ある。

その中に、どうしても理解できないコードがある。そこで、そのコードを書いた人にメッセージを送る。

「なぜここでこうしているの?」

相手はリンクを送ってくる。Claudeとの会話ログだ。

その会話のどこかに、このコードの設計判断が埋もれている。ただし、そこへたどり着くには、大量の内容をかき分けなければならない。

Claudeが自信満々にアーキテクチャを勧め、その後で謝って意見を変える。同僚がもう一度考え直すよう求める。さらに15回の修正を経て、ようやく今のコードの設計方針にたどり着いたらしい。

「どの部分を読めばいい?」
「たぶん……全部読んで」

聞き覚えはないだろうか。

こういう話をすると、いつも誰かが言う。

「以前だって、大規模システムを完全に理解している人なんていなかった」と。

それは正しい。すべてのサービス、すべてのデータベースを理解する必要はない。

だが少なくとも、以前は誰かが理解していた。

問題が起きたとき、その人たちはそれを説明できた。

今では、彼ら自身も答えを知らないからLLMに聞く。

もはや、悪いエンジニアを抱えてはいられない

どのチームにも、本当に有能で、プロジェクトを動かしている人がいる。同時に、本質的には他の全員の仕事を難しくしている人もいる。

そして今、一人が一日に書くコードは、かつて一年かけて書いた量を超えるかもしれない。

先ほどの話では、実際には全員に問題がある。

2万5,000行のPRを出したエンジニアは、エージェントがそこまで進むずっと前に止めるべきだった。エージェントが何をしているのか理解し、作業をより小さく分割し、新たに導入するあらゆる抽象化に疑問を投げかけるべきだった。

レビュー担当者は、これほど巨大なPRをレビューすることを拒否すべきであり、最終的に妥協すべきではなかった。

Kafkaを導入したエンジニアは、なぜKafkaが必要なのかを正確に説明できるべきだった。

この機能を開発した人も、データがどこから来ているのか説明できるべきであり、Claudeとの会話リンクをそのまま投げるべきではなかった。

しかし、そこで疑問が出てくる。

AIを使って、これらの問題を直せばいいのではないか。

そう単純ではない。

すぐに反論されないように言っておくと、これは技術的負債が常に悪いという意味ではない。

本当に重要なのは、自分が近道をしていることを理解しているかどうかだ。

問題は、一度下した悪い判断を取り消すのは、本当に難しいということだ。

たとえば、LLMにデータベースへ大量のテーブルやカラムを追加させるのに、どれくらいかかるだろうか。10分かもしれない。

しかし、一度そこにデータを保存し始めたら、簡単に削除することはできない。

移行計画を立てなければならない。そして移行がシステムの正常な稼働に影響しないことを保証しなければならない。なにしろ、毎日あなたたちの製品にお金を払っているユーザーがいる。

移行に失敗したらどうなるかも考える必要がある。最終的に孤立した外部キーが残らないようにしなければならない。

これらを修正するのは、はるかに難しい。

手元に最高のモデルがあったとしても同じだ。

そしてあなたがこれらの問題を修正している間にも、新しいPRは絶えず流れ込んでくる。

さらに多くのコード、さらに多くの抽象化、さらに多くの意思決定。

一人が一日の午後だけで2万行のコードを生成できる。しかしあなたは、それが実際に何をしているのかを理解するために座り続けなければならない。

ようやく一つの悪い判断を整理できたころには、似たような判断がさらに五つマージされているかもしれない。

AIがもたらす新しい経済

もちろん、悪いエンジニアは以前から負担だった。

この問題は何十年も続いており、OpenAIやAnthropicが登場するずっと前から存在していた。

悪い判断が積み重なり、不必要な複雑さが蓄積され、最終的にチーム全体が、誰も本当に理解していないシステムを保守することになる。

違いは、かつてはこのようなことが進む速度に限界があったことだ。

しかし今日、実装コードは非常に安くなった。

あなたがお金を払って手に入れるべきものは、正しい判断を下すこと、そして複雑さを制御しながら継続的に拡張できるソフトウェアを構築することだ。

なぜ企業がロンドンやサンフランシスコで、エンジニアに六桁の年収を支払うのかを考えてみてほしい。

もし彼らが必要としているのが、要件定義を動くコードに変換できる人だけなら、なぜこれほど多くのお金を払うのか。

結局のところ、その仕事はすでに他の場所で、より低いコストで実現できたはずだ。

「ソフトウェアはすでに解決された」と主張するテクノロジー企業が、なぜ今でも最高額の報酬を提示して優秀な人材を奪い合うのか。

私の考えでは、AIはむしろエンジニア間の給与格差をさらに広げる。

雇用市場で競争力を保つには、一つの基準を越えなければならない。

その基準とは、現在最も優れたモデルができることに対して、少なくともそれ以上の価値を提供できることだ。

優秀なエンジニアは、むしろさらに価値を持つようになる。AIによって、彼らははるかに速い速度で仕事を進められるからだ。

彼らの周囲には、具体的な実装を専門に支援する人が、これまでほど多く必要ではなくなる。

一方で、悪いエンジニアはさらに高くつく。

以前、「Vibe Coder」という職業の道は成立しないと書いたが、その理由もこれだ。

あなたは何かを貢献しなければならない。そしてそれは、エージェントにプロンプトを与えるだけで得られるものではいけない。

LLMの提案が正しいかどうかを判断するための判断力がないなら、AIにさらに多くの「判断」をさせても問題は解決しない。

結局のところ、システム内で何が起きているのかを、本当に理解している人が必要になる。

その人こそが、チームの中で最も価値のある人だ。

理解していない人は、ますます安くなり、代替されやすくなるか、最終的には淘汰される。

同時に、資金は本当に信頼できる少数の人々へ、ますます集中していく。

そして私は、この変化がソフトウェアエンジニアリングだけに起こるとは思わない。

大半の知識労働が、同じ変化を経験すると考えている。

AIは最も優秀な人を極端に高効率にし、能力の低い人を雇う価値がほとんどない存在にする。

以前なら、一人が悪い判断をしても、それがあまり大きな影響を与える前に、他の誰かが発見できる可能性が高かった。

しかし今では、周囲の人が適切にレビューする時間も、理解する時間さえもない速度で、彼らは絶えず変更を加え続けることができる。

━━━━━━━━━━━━━━━━━━

コメント

このブログの人気の投稿

比較サイト!ITreviewからソフトウェアのレビューをスクレイピング

通販サイト・お酒!逸酒創伝からお酒の情報をスクレイピングする

分散チームとAI時代のソフトウェア開発の教訓