AIはソフトウェアエンジニアの「中流階級」を消し去るのか?生存戦略を考える
AI is removing the middle class of software engineering?
AI is removing the middle class of software engineering?
最近、業界で頻繁に議論されているのが「AIによってソフトウェアエンジニアの中間層が不要になるのではないか」という懸念です。ジュニアやミドルレベルのエンジニアが担ってきたタスクがAIによって自動化される中、果たして私たちの価値はどこに残るのでしょうか?このトピックについて、皆さんの意見を聞かせてください。
AIは、エンジニアリング文化が未熟なプロジェクトの失敗を劇的に加速させる。
かつては皆で座って、どう進めるかを話し合う時間があった。今では数時間エージェントにプロンプトを投げてPR(プルリクエスト)を出すだけで済んでしまう。
この作業スタイルの最も悲劇的な側面は、素人目にはうまく機能しているように見えることだ。
ブランチを落としてテストすれば、とりあえず動くものができてしまう。だから彼らはどうするか?そのまま突き進むんだ。何度も何度も。誰もその中身を理解していないプロジェクトに到達するまで。
これって「失敗を加速させる」どころか、本来なら最初の難関でつまずいて諦めていたような人たちを奥深くまで引きずり込み、「プロンプトさえ投げれば何とかできる」という誤った希望を抱かせ、結果として深いスパゲッティコードの迷宮に落とし込んでいるだけじゃないの?
AIとH-1Bビザ保持者とのグローバルな競争が重なって、エントリーレベルや中級のソフトウェアエンジニアの職を得るのがこれまでになく難しくなっている。
つまり、シニアエンジニアへと繋がるパイプラインが完全に壊れてしまっているということだ。
全てのサービスやデータベースを理解しておく必要なんてなかった。でも少なくとも、誰か一人はそれを理解していて、あなたに教えてくれたはずだ。
これにはほとんど同意だけど、この部分だけは違うかな。美化しすぎているか、俺の運が悪かっただけだと思う。
AI以前の時代だって最悪だったよ。教えてくれる人なんて誰もいなかった!全部自分で解決しなきゃいけなかったんだ。先輩たちはとっくに辞めていたか、他のことで忙しかったしね。
誰も(俺の基準に合うような)テストなんて書いていなかったし、運用作業のほとんどは放置。ドキュメントなんて存在しなかったし、lintすらまともにかけられていない。本当にひどいもんだったよ。
無能なエンジニアは常に足かせだった
記事のこの部分は痛いほどよくわかる。AIの登場で、「無能な」エンジニアがその「無能な」エンジニアリングを組織全体で10倍に増幅できるようになった。特にひどいのは、技術への情熱を失ったベテランエンジニアだよ。リリースできる程度の能力はあるけれど、それを「良くしよう」とする気力がないという、非常に危険な組み合わせだ。
私は今でも「ゴミを入れればゴミが出てくる(Garbage in -> Garbage out)」を信じている。AIの価値は、それを使うために用意した抽象化や契約の質で決まるんだ。AIが生成したコードが根本的にダメだとは思わない。ただ、今の人はエージェントを使いこなして良いコードを書かせるためのスキルが足りていないだけだと思う。
今年初めに、これからのキャリアにおいてアーキテクチャやデザインがどうあるべきかについての社内向けトークを作成したんだ。結構自信作なので、もし同じような考えを持つ人がいれば共有するよ:https://youtu.be/SIZrt9Rt05Q?si=W57eirniWmoSFeBu
自分はこれを「StackOverflowエンジニアの自動化」と捉えている。エンタープライズソフトウェアの世界には、これまで書くことが避けられない膨大な量のコードが存在していた。伝統的には、シニアエンジニアが頭を使って難所を考え、それをJiraチケットに落とし込み、実際にコードを書くエンジニアに渡していた。そのエンジニアはGoogleで調べながら一つ一つ壁にぶつかっていたわけだ。でも今や、シニアエンジニア自身がエージェントを立ち上げて実装を任せてしまえば、この受け渡しプロセスすら不要になる。
これを業界の「自然治癒」と呼ぶ人もいるね。もし給料が高いという理由だけでこの業界に入り、自分の作業を深く考える気がなかったのなら、これまで手作業だった部分が自動化されるのは痛手だろう。エンジニアとして価値があると言えるためのハードルが引き上げられたんだよ。
テクノロジーは数十年前からずっとこういうことをしてきた。よく言われる「K字型経済」の話は、アッパーミドル層の二極化と、教育は受けたが経済的に下向きに流れる若年層の話だと思う。うちの妻の家族は誰も大学を出ていないけど、妻やいとこたちは親世代より間違いなく裕福だよ。義父はスープ工場でフォークリフトを運転していたし、義妹は今看護師の勉強をしている。大きなステップアップだ。でも「ホワイトカラー」のミドルクラスは勝者総取りの構造になってしまった。自分の専門分野で例えると、親が地方の法律事務所のパートナーだったとしても、その道が君に開かれているとは限らない。テクノロジーによって集約と規模拡大が可能になったから、米国の全ての都市に弁護士を配置する必要がなくなったんだ。ウォール街のクライアントを抱える大手法律事務所の弁護士はかつてないほど稼いでいるが、それ以下の層は急激に落ち込んでいる。Amazonなどと競合する中小企業も同じだ。これはプチブル層に多大な影響を与えている。
もちろん、これは経済的に効率的だよ。地域の小規模な店の経営者の子供たちが、平均的な人より良い暮らしをするために、誰がAmazonの即日配送を諦めるだろうか?
このブログ記事は、批判的思考や意思決定を絶対にLLMに丸投げしてはいけないという重要性を物語っているね。近道をしてはいけない。学習は大変だけど、正しく学ぶことで「今何が起きているか」が理解できる。そして、エージェントが提案する変更が、将来的に不要な技術的負債を生まず、本当にプロジェクトの目標にかなっているのかを見極めるための正しい問いを投げかけられるようになるんだ。
個人的な意見だけど(他の人の意見も聞きたいな):仕事や開発でLLMを使うとき、私は「フルオート」モードは絶対に使わないし、理解できないものを手動で承認することもしない。エージェントがやろうとしていることがわからないときは、一旦寄り道してでも自分で調べて勉強するようにしている。時間はかかるけれど、盲目的に期待して進むよりも、理解した上で「承認」「拒否」「方向転換」を判断する方が絶対に正しいと思う。
著者が議論していることに加えて、過度なLLM依存はスキル低下や、現状維持バイアスによる停滞(「エージェントができるなら学ぶ必要はない」という考え)、そして思考の怠慢といったリスクがあると思う。人間は考えるために存在しているし、LLMはあくまでツールだ。
長い時間をかけて学んできたことが、突然誰にでもできるようになるのは辛いものだ。かつては希少で価値があったものが、今はありふれていて安価になったわけだから。
今でも手作業で加工をする機械工はいるけれど、実際の製品作りやプロトタイピングでは、ほとんどの人が5軸CNCマシンのようなものを使うようになった。オペレーターは必要だけど、かつて熟練の職人技が必要だった作業の多くは、今ではCNCがこなしている。
同じことがここでも起きているんだよ。ただ、その過渡期がゴタゴタしているだけだ。
5年後を見てごらん。どうやって最終結果にたどり着いたかなんて、今ほど重要視されなくなるはずだ。コードベースが乱雑かどうかは無意味になる。LLMが管理・制御し、人間のためではなく、LLM自身にとって最適化された方法で書かれるようになるからね。
LLMコーディングエージェントの導入によって、実際にソフトウェアエンジニアが解雇されたという、反論の余地のない証拠はもう出ているのかい? エージェントが登場してからもう十分な時間が経っているし、経営層はこの手の話に飛びつきたくてたまらないはずなんだから、いくつか顕著な例があってもいいはずだよね。
経済用語を忘れたけど、ツールの改善って、業界全体が同じレベルで底上げされるから正味の変化はほとんどないんじゃないかな? つまり、雇用の面では現状維持になるのでは? エージェントを使っても「10倍エンジニア」になれるわけじゃない。ほとんどの製品は24時間365日のオンコール体制が必要だし、サポートするチーム(知識レベルは様々)、開発の企画者、実際に作る人(通常は別の人)、コミュニケーションの非効率性などは変わらない。自分が働いている会社でも、エージェントのおかげで効率は改善したけど、それらが消滅したわけじゃない。だから、基本的にはあまり変わらないんじゃないかな。本当に優秀なエンジニアなんて数は限られているし。彼らは以前よりも価値を増すだろうけど、それはAI以前から価値があったはずだ。業界全体が優秀なエンジニアだけで構成されるようになるなんてことはないよ。