世界を動かす技術を、日本語で。

今、何が起こっているのか?

概要

  • エンジニアの燃え尽き問題 とAIツール乱用に対する懸念
  • ジュニアエンジニアの学習機会喪失 と現場の混乱
  • AIによるコード品質低下 とレビュー負担増加
  • AIビジネスモデルの持続可能性 への疑問
  • 技術の本質的価値と今後の展望 に対する批判的考察

エンジニアリング現場の混乱とAIツール乱用

  • エンジニアの燃え尽き症候群 が深刻化
  • シニアエンジニア が「vibe-coded」な動作不明な機能のレビュー・修正を強いられる現状
  • 優秀なエンジニア ほど後輩育成に熱心だが、フィードバックが学びに活かされない状況
  • ジュニアエンジニア がLLM(大規模言語モデル)を濫用し、AI生成コードをそのまま提出する事例
  • コードの内容や目的が不明確 なまま、AI利用を誇る風潮
  • シニアマネージャー によるAI活用の称賛と組織の表面的な評価文化
  • AIによる大量コード生成 (例:Claudeによる4,000行)を無批判に受け入れる現場

コードレビューとコミュニケーションの崩壊

  • コードの小規模改修 依頼時、ジュニアエンジニアからAI経由で生成された回答が返ってくる体験
  • 人間同士の知識共有や学び がAIによって形骸化
  • レビュー作業の形骸化 と、AI生成の「vibe-coded」なコードのレビューに多人数が長期間費やす非効率
  • エンジニア自身の成長機会の喪失 と、レビュー担当者の無力感

AI活用の経済的・技術的限界

  • ChatGPTやClaude 等のサブスクリプションコストと、レビュー・修正にかかる人的コストの逆転現象
  • AIツールの導入による本質的な生産性向上の不在
  • AI企業の資金調達モデル とVC(ベンチャーキャピタル)サイクルの問題点
    • AI活用企業がVCから資金調達
    • AIサービスプロバイダー(OpenAI等)へクレジット支払い
    • 事業継続性の欠如、企業の消滅
  • OpenAIですら黒字化できていない という現実
  • 技術的なスケーラビリティの限界 と電力消費、環境負荷の深刻さ

AIツールの本質的価値再考

  • AIツールの使用停止実験 の提案
  • 独自の調査や文献検索 による自己解決能力の優位性
  • AIによる回答の信頼性・精度の低さ に対する実感
  • AIツールの価値に対する根本的疑問
  • AIバブルの構造 と「皇帝の新しい服」的な現状認識

現場への提言と問題意識

  • エンジニアリングの本質 は「良いものを作り、他者を助け、学び合う」こと
  • 人材育成投資の無意味化 と、AIへの知識移転の虚しさ
  • ジュニアエンジニア不要論 への警鐘と、暗い未来像の提示
  • 現実を直視し、AI幻想から脱却 する必要性

この現状に対し、 エンジニアリング組織 は本質的な価値観と向き合い、 AIツールの使い方と人材育成 のバランスを再考する必要性

Hackerたちの意見

10年後、ジュニアの連中が自分でコードを書くことを学ばずに、シニアエンジニアだと思ってるのが怖いな…

おい、まさに俺のキャリアを説明してるじゃん - LLMなんて必要ないよ!

みんな配管工や学校の先生になればいいな。ジュニア開発者の才能があふれてるのに、ジュニアが取り組める本当の問題が足りないんだ。だから、ほとんどの人が次のスキルレベルに進むための経験を得られない。昔は、安価な概念実証や自己完結型のスクリプトを作るために使えたけど、それはAIがあまり悪くないことなんだよね。でもその頃もジュニアが多すぎて、役割が足りなかったけど。

10年?明らかにスタッフになるよね。今や3年の経験があればシニア扱いだよ、そんなこと知らなかったの?

このトレンドはAIが登場するずっと前から始まってる。どこでも10年以上の経験が必要だって。業界全体で若い世代を育てるのが下手くそだった。自分の組織でも何年もこの戦いを続けてきたけど、進展が見えるたびにまた危機が起きて、ジュニアスタッフを手放さなきゃならなくなる。で、再度採用が必要になると緊急事態で、すぐに仕事をこなすためにシニアスタッフしか雇えない。これが悪循環になってるんだよ。

バイブコーディングという概念は昨年の12月に始まった。たった9ヶ月前のことだ。数年後には、誰もコードを書いたりメンテナンスしたりしないんじゃないかな。

ちゃんとやってる人が書いたソフトウェアは常に存在するよ。LLMが生成したコードが完璧じゃない限り、高品質なコードの需要は常にあると思う。

AIは変革管理の問題だよ。うまく使うには、信頼と透明性を持って一緒に働く優秀なチームが必要なんだ。人間の指導や専門知識とLLMが得意なことをうまくバランスさせるプロセスを作るためにね。小さなチームがすごいことを成し遂げてるけど、大きな組織は健康的な文化から遠く離れていて、AIがその毒性を増幅させてる。 "ストーリーポイント"を「それにどれくらい時間がかかるのか」と解釈する経営者たちは、なんで今はすべてが半ポイントじゃないのかと疑問に思ってる。彼らはメンテナブルで効果的なソフトウェアを作るプロセスから完全に離れていて、AIを単に利益を得るための道具として使おうとしてるんだ。最近の研究で95%のAIパイロットがROIを提供できなかったっていうのは、現代のマネジメントが実際に仕事をするのがいかに無能かを示すケーススタディだね。

もしかしたら、売り出されてるほど良くないだけかも。小さなチームがすごいことを成し遂げてるのは見たことないけど、どのチームのことを考えてるの?

その研究見たけど、確かにパイロットについてのものだったよね。パイロットがすぐに大きな収益を上げるなんて期待することある?それって完全にストローマンだよ。

これ、何度も言ってるけど、すでにマネジメントが機能不全の組織にAIを導入するのは、バイキングの集団に自動小銃を渡すようなもんだよ。確実に彼らの滅亡を早める結果になる。現代の機能不全の組織の場合、完全な官僚的失敗の結果として数年後に滅びることが多いけどね。技術を「重要な力」に引き上げようとする試みは、常に大多数(または少数だけど重要なマネジメントのマイノリティ)が利己的な自己利益ではなく、共通の利益のために行動するという根本的な社会的・道徳的失敗を見逃していると思う。

もうこのAI擁護の話にはうんざりだよ。すべての欠点が「どうせ起こることだった」と説明されるのは。AIが人の脳を破壊して精神病を引き起こす?どうせ彼らは精神的におかしくなってたはずだ!AIが企業文化の問題を引き起こす?その会社はどうせ毒だったんだ!道具は思っているほど無罪じゃないよ。

記事の核心はこの結論だと思う。これらのツールやそれを使おうとしているチームとの直接的な経験から見ても、正しいと思うよ。じゃあ、これらのツールは何の役に立つの?全く価値があるのか?客観的に見ると、答えは「いいえ」みたいだね。

あなたは「客観的に」という言葉の意味を理解してないと思うよ。

AIツールは特定のユーザーやユースケースに対して価値を提供できるけど、魔法じゃないからね。ツールであって、特定の機能と限界がある。ドライバーがビール瓶を開けるのが下手だからって、悪いツールってわけじゃないし。

ちょっと教えてほしいんだけど、さっきクラウドに40ページのメディケアのフォームを渡して、印刷用のCSSバージョンに翻訳させたら「客観的には何の価値もなかった」ってどういうこと?20分前に20行のTypeScriptエラーを投げたら、英語で説明してくれたのに?それは「客観的」にどの定義に当てはまるの?それに、既存のステートマシンライブラリを使って、パフォーマンスの問題を探してもらったら、実際に見つけてくれたんだけど?そんなのが「客観的な価値がない」って、どんな世界に住んでるの?クラウドのチャット履歴を共有して、岩の下に住んでる人たちに、結果を組み合わせられる超高度なパターンマッチャーが役に立つって証明しなきゃいけないの?さあ、正規表現を書かせてみて、「客観的に」どれだけ役に立たないか教えてよ。

AIから得た主なメリットは、誰も話してないけど、長い仕事の後にサイドプロジェクトに取り組むための精神的エネルギーを劇的に減らしてくれることだね。昼間はコーディングしてるから、夜にコーディングするモチベーションを見つけるのが難しい。だから「これをやって」と言ってAIにクソみたいなコードを生成させて、「X関数を重複させた、Yを複雑にしすぎた、Zにバグがある」って言って直してもらうのがずっと楽なんだ。いい日には早く進むけど、普通の日はあまり進んでないかも。でも、精神的な負担が大きく減るから、サイドプロジェクトを進めるのが楽になってるのは確か。それは私にとって価値があると思う。ただ、ジュニアエンジニアには職場での使用を禁止しようと思ってる。彼らの成長に悪影響だと思うから。

私にとってAIはただのツールだよ。高レベルの開発者じゃないけど、個人プロジェクトで行き詰まったときにアイデアをAIに見せてフィードバックをもらうんだ。それをもとに進めるけど、AIにコードを書いてもらうことはしない。自分のプロジェクトだから、好きなように開発できるしね。AIにコードを書かせるのは(簡単なボイラープレート以外は)そもそもコードを書く理由、つまり問題解決やものを作る楽しさ、学ぶことに反すると思う。追記:タイプミス

最後のプロジェクトでは、AIがコーディングしてくれなかったら終わらなかったよ。リポジトリを全部セットアップしてくれて、ちょっとダメなコードを書いたけど、PoCは動いた。DjangoやJS、ウェブ開発の経験はなかったけど、今は動くものができて、少しずつ見直して改善して理解できるようになった。

ここがポイントなんだけど、私たちは助けたいんだ。良いものを作りたい。うまく機能して、人々の生活を楽にするものをね。ソフトウェアエンジニアリングのやり方を教えたい!でも、企業はそういうのを求めてない。企業が求めてるのは、顧客ができるだけ早く安く払ってくれる「価値」。彼らは職人技とかそういうのには興味がない。とにかく、価値を早く安く提供することだけ。エンジニアがやりたいこと(エレガントで機能的なツールを作ること)と、ビジネスがやりたいこと(できるだけお金をもらうための最低限のこと)との根本的なミスマッチが、エンジニア側のこういうストレスを生んでるんだよ。

そうだね、新しい会社に入って気づいたのは、彼らは何よりもスピードを重視してるってこと。雑なコードやミスのリスクも、最初に進展を得られないリスクの中に組み込まれてる。だから… AIが書いたコードをガンガン出してるけど、それが彼らの求めてること。私のパフォーマンス?素晴らしいよ。将来的に問題になるかな?まあ、スタートアップが失敗するか、AIが将来的にそれを再構築できるかのどっちかだね。私が望んでることじゃないけど、同時に私たちの仕事のどれが本当にやりたいことをしてるかって考えると…簡単にゴミ収集者になっちゃうかも。私はお金をもらってやるべきことをやってるし、それに対してしっかり報酬ももらってる。

これは本当だけど、営業とエンジニアリングの間の押し引きが、過剰設計せずに長持ちするソフトウェアを作る結果になった。ただ、営業とエンジニアの両方が短期的な利益を追い求めるようになると、質の低いクソみたいなソフトウェアが新たにリリースされることになる。AIはまだ人間のエンジニアと同じ質のソフトウェアを生成するほどの能力はない。でも、AIが安いから、ユーザーが我慢できる限り、喜んで質のハードルを下げるだろう。すぐに私たちのデジタル製品は、目的にほとんど合わない安っぽいAIのゴミになってしまう、そんな未来が怖い。

「速く進む唯一の方法は、うまく進むことだ。」ロバート・C・マーチン たしかにスパゲッティコードは短期的には価値を提供するかもしれないけど、長期的には機能追加が難しくなったり、イテレーションが遅くなったりして、最終的には顧客や収益、成長を失うリスクがあるよね。

根本的な問題は、開発者の生産性を客観的かつ信頼できる方法で測るものがないってことだよね。だから、それを体験している人(開発者)と、それから隔離されているビジネス側では、視点が全然違う。これが、今後10年で私たちの業界を支配する「AIファースト」ストーリーを生む最も重要な要素になると思う。橋を架けられないわけじゃないと思うけど、結局みんな同じことを望んでる(会社が繁栄すること)けど、相手の視点を完全には理解していない。健全な企業組織がこの二つの視点の対立を生産的に解決することが求められている。でも、そんな相互尊重やリソース配分の文化にはまだ出会ったことがない。エージェントAIが、過去25年の文化の進歩(例えばアジャイル)を消し去って、80年代のテクノロジー文化に逆戻りするのが怖い。

あまり多くは言わないけど、最近同僚と話してるときに、明らかにチャットGPTの出力を返されてる感じがした。気持ち悪かった、こんなのはおかしいよ。無視されてた方がマシだった。LLMが自信満々に間違ってるのも辛かった。設定名の違いみたいなちょっとしたことでLLMは混乱するからね。人間の世界では、レガシーなものがあって「みんなが知ってる」foo設定が実際にはFrobの設定だってことがあるけど、LLMはFrobの設定をしようとしたり、ひどい場合はFooをゼロから実装しようとしたりする。悪い人間のコードと向き合う方が、悪いLLMのコードよりもずっといい。悪い人間のコードを書いた人の考えを理解しようとできるから。彼らの誤解を理解しようとすることができる。悪いLLMのコードは、間違いを認めない魂を潰す機械と向き合うことになるから、まだ学ぶこともできないし、学ぼうとも思わない。

「LLMが自信満々に間違っていたのは助けにならなかった。」 ちょっと、他にもそういう自信過剰な知ったかぶりに対処したことある人いる?LLMの出力は、そういう人たちを思い出させることが多い。

なんか「誤解しました」って謝るのがうざい時がある。単に間違ってたのにさ。「LLMはそういうもんだから、時々めっちゃ間違えることがある」って言えばいいのに。ちょっと面白い例を挙げると、最近GrokにHNでの「grandparent」コメントって何か聞いたら、「スレッドの初めのコメント」って言ってた。偶然にも、それがDuckDuckGoで同じことを検索した時に出てきたredditの投稿と同じ答えだったけど、絶対それは間違ってると思ったから、Grokに例を出したんだ。「Aが初めのコメントで、BがAへの返信、CがBへの返信、DがCへの返信、EがDへの返信だとしたら、Cのgrandparentはどれ?」そしたら、すぐに正解を出した。で、次に聞いたのは、「でもさっきAが初めのコメントって言ったじゃん。どういうこと?」そしたら、いつものように誤解したとか謝りながら、Cが正しいって説明をまた始めた。最初に間違ったことを「うっかりした、最初のデータが悪かったから」って言ってくれた方がいいな。そういう風にしか動かないから、何も当たり前だと思わないでって。

先日、あるストーリーのコメントが「あなたは絶対に正しい」って始まって、ちょっと外に出て考える時間が必要だった。

りんごパイのレシピを聞いたら、チャットGPTの出力を受け取ってHRに報告してた。

LLMっていう強力なツールを使って、まるで何でも解決できるかのように振る舞う人たちを見ると、本当に残念だよね。そんなことないのに。LLMは色々なことが得意だけど、使う人が文脈や知識を持ってないと、いつどう使うかを判断できないんだよね。職場で見たLLMが生成したクソみたいなコードの量には悲しくなる。プロンプターがもうちょっと頑張れば、もっと良いコードが書けたはずなのに。ユーザーは、LLMが解決できるかどうかを見極める必要があるし、結局手動で修正しなきゃいけないことも多い。LLMが何でもできるって思い込むと、雑なものができちゃう。数週間前に同僚がDBクエリをラップするシンプルな関数を作ったんだけど(ここまでは普通)、テストが250行もあったんだ。コードは明らかにLLM生成で、最も単純なコードの説明コメントが一番の証拠だった。テストは何もテストしてなかったし、ORMをモックして、そのモックの戻り値をテストしてた。モッキングフレームワークが動くかどうかをテストしてたの?その関数はシンプルすぎて、テストはあまり価値がないと思うから削除しようって言ったら、彼は価値があると思ってるみたいで、説明もなしにコードをマージしちゃった。で、先日そのコードを再度見たら、他のLLMコードがどれだけひどかったかが分かってきた。間違ってるわけじゃないけど、設計が悪くて無駄が多い。LLM自体には問題ないんだ。すごいこともできるし、強力なツールだけど、使うのはちゃんとした知識を持った人間と一緒じゃないとね(少なくともプログラミングの文脈では)。ちょっと愚痴っぽくなっちゃったけど、将来的にはちゃんとメンテナンスされてるコードベースと、何年もかけて適当に作られたゴミみたいなコードが混在する未来が見える。どっちに進むかを決めるのはエンジニアたちだと思う。

人間のサポートエンジニアが内部のLLMが出したものをただ盲目的にコピー&ペーストしてるのを見ると、最悪の状況だなって思う。

うーん。AIを使ってPRDを生成するPMと一緒に働いたことがあるんだけど、よく「これってどういう意味?」ってところに行くと、彼は「分からない、AIが書いたから」って返してくるの。アイデアを実際に伝えようとするのをやめて、パフォーマンス的なドキュメント作成に置き換えた感じ。結果的に、要件を理解する仕事が私に押し付けられて、彼自身の考えを整理することすら面倒くさがる人と関わりたくなかったから、チームを離れた。

これ、最終的にはイディオクラシーになるよね。年配の人たちはいなくなって、若手がスタッフレベルになるけど…ソフトウェアはただ「もっと難しく」なるだけ。誰もその仕組みを理解してないし、どうやって理解できるっていうの?もっと重要なのは、なんで理解する必要があるの?マシンがコードを作るんだから。もしマシンが間違えたら、それは俺のせいじゃない。ここでの本当のポイントは、約1年前から、神モードの開発者になるために時間を投資するのは、これからのフェーズには最適な道じゃないってことだね。

それって、AIバブルが絶対に弾けないって前提での話だよね。ビットコインは現金を置き換えなかったし、ブロックチェーンもデータベースを置き換えなかったし、NoSQLがSQLを時代遅れにしたわけでもない。前に間違ったこともあるけど、AIはプログラマーを置き換えるのは、昔StackOverflowからコピペしてたのと同じ感じになるんじゃないかって楽観的に思ってる。

もう普通の開発者が裏側で何が起きてるか全然分かってないフェーズに入ってる気がする。多くのウェブ開発者が「ユーザーがURLを入力してエンターを押すと何が起こるか?」っていうシンプルな面接質問に答えられないんだよね。DNSプロトコルの詳細を知らないのは理解できるけど、ブラウザやOS、CPUが何をしてるかの基本すら分からないのはプロとしてどうなの?LLMを使ったコーディングがこの知識をさらに無意味にしてるみたいだし。

だからこそ、趣味の開発にZedを使うのが好きなんだ。AIについてあまり賢くなろうとしないから。AIはそこにいて、必要なときにシームレスにプロンプトできるけど、普段はAIが引っ込んで、ただコーディングできる。対照的に、仕事でVSCodeを使うと、ツールが邪魔になる気がする。特に2つのカテゴリーで: - 脆弱なインタラクション。VSCodeにはポップアップがたくさんあって、クリック可能なんだ。特定の場所にカーソルを合わせようとすると、よくそのポップアップのどれかをクリックしちゃう。AIのオートコンプリートも侵入的すぎる感じで、間違ったキーの組み合わせを押すと、意図しない大量のコードが出てくる。 - 思考の中断。AIの長いオートコンプリートが時々役に立つ(約1/3の確率)から、ついそれを読んで元の「構築する」思考から「探求する」思考に切り替わっちゃう。それが抽象の城を崩しちゃうんだ。Zedではその問題は見たことがない。自由な時間にプログラミングの楽しさを取り戻してくれたと思う。これらの問題は、実際の機能よりも実装に関するものだと思う。

じゃあ、これらのツールは何の役に立つの?全く価値がないの?私の場合は、はい、でも大抵の人とは使い方が違うと思う。まず、背景を説明すると、私は1983年からコードを書いてる結構ベテランの開発者だけど、今は引退してて、ほとんど一人で仕事してる(若い子たちは私と一緒に働きたがらないから、ワークフローをそれに合わせて調整した)。いくつかのツールを試したけど、基本的にはChatGPTとPerplexityだけを使ってる。直接コードを書かせることはないけど、彼らがくれるコードを実装の出発点として使うことが多い。時々はそのまま使うけど、だいたいはかなり手を加える。彼らは「デススパイラル」に入って、提案がどんどん悪くなることがあるから、その時はさっさと離れて別のことを試すようにしてる。これらから出てくるコードを実装するジュニアエンジニアのことを考えるとゾッとする。私にとって一番の価値は、彼らを「即レス」のStackOverflowとして使えること。見下したような反応がないから。「バカみたいな」質問もできるし、自分で調べられることでも、ChatGPTを使った方が早いし、ほぼ即座に使える答えがもらえる。それは私にとってすごく価値がある。最近、iOSでPassKeysの実装について数週間学んだんだけど、最初はPKについてほとんど知識がなかった状態から、ChatGPTがくれた(サーバーとクライアント)コードをそのまま使って、学びながらコードを見ていった。これが新しい技術を学ぶ方法なんだ。ちょっとごちゃごちゃしてるけど、しっかり理解できるようになる。今持ってるコードは、最初のものとはほとんど別物になってる。

最近、採用とAIに関する面白い経験があった。- DevOpsの役割 - 技術テストはサーバーにログインすること(sadservers.comを通じて、彼らは素晴らしい) - 候補者にこう伝えた。「目標は、Linuxベースのシステムで問題を解決できるかを見ることです。見たことがないものも出てくるかもしれません。詰まったらGoogleやChatGPTを使っても大丈夫です。ただ、検索や思考プロセスを見せるために画面を共有してほしいです。」- 候補者はすべてのステップでChatGPTを使って進めていった。「実行中のプロセスをリストするにはどうするの?」「隠しファイルを見るにはどうするの?」って感じで、エラーメッセージを全部ChatGPTにコピペしてた。これについていくつか考えたことがある。1. これって普通なの? 2. 同僚が冗談で「ロボットが来るのは分かってたけど、今日だとは思わなかった」って言ってた。3. 彼のLinux関連のデバッグスキルについて、ほとんど信号が得られなかった。4. 彼はこれをすることでどんな信号を送ろうとしてたのか?例えば、「ああ、彼らはLinuxやトラブルシューティングに詳しい人を雇おうとしてるんだな」って気づくべきだと思う。5. 「まあ、彼は最終的に答えにたどり着いたんじゃない?」って言う人もいるかもしれないけど、ポイントはChatGPTがいつも答えを持ってるわけじゃないってこと。