ソフトウェアエンジニアリングはもはや生涯の職業ではないかもしれない
(seangoedecke.com)- AIを使うと、その作業の遂行に関する 学習量が減ること は明らかだが、それはAIを拒否する理由にはならない
- AIが長期的にエンジニアの能力を弱めるとしても、短期的な生産性の利点 が十分に大きければ、利用は避けられない
- 建設労働者が身体的負担があっても重い物を持ち上げるように、職業に本質的に求められること には従わざるを得ない
- 手書きコーディングにこだわることはできても、電動工具 を拒む大工に仕事がないのと同じように、AIを拒むエンジニアはAIを受け入れたエンジニアに 競争で後れを取る可能性 が高い
- ソフトウェアエンジニアも プロスポーツ選手 のように キャリア寿命が限られる最初の世代 になるかもしれず、その可能性に合わせた計画が必要だ
AI利用とソフトウェアエンジニアのキャリア寿命
- AIが人間の全般的な知能を下げるという強い証拠はないが、AIで何らかの作業を処理すると、その作業の遂行について 学ぶ量が減ること は明らかだ
- 一部のソフトウェアエンジニアが仕事でAIの使用を避けるべきだと考える論理は、おおむね次のようなものだ
- AIを使うと 仕事の過程で学ぶ量が減る
- 時間がたつにつれて 技術的能力が衰え、より効果の低いエンジニアになる
- したがって仕事でAIを使うべきではないという結論 につながる
- ただし2つ目の前提は確実ではない
- アセンブリ言語からCへの移行によって、プログラマーはある面では以前より劣り、別の面では以前より効果的になった
- 手でコードを書くやり方からAIを使うやり方への移行は、さらに大きな変化かもしれず、結果を断定するのは難しい
- たとえAIの使用が長期的にエンジニアの有効性を下げるとしても、それだけでAIを使うべきではないという結論にはならない
- 2024年前後まで、ソフトウェアエンジニアリングを学ぶ最良の方法は 実際にソフトウェアエンジニアリングをすること だった
- コーディングという趣味を高収入のキャリアに変えることができ、仕事を好きな人ほど時間とともに上達していく構造だった
- これはソフトウェアエンジニアリングの 不変の本質というより、幸運な偶然 に近かった
短期的な生産性と長期的な能力の衝突
- AIの使用が長期的に職務能力や一般的な推論能力を悪化させるとしても、短期的な利益が十分大きい なら、エンジニアはAIを使わざるを得ないかもしれない
- 建設労働者は効率よく働くために重い物を持ち上げなければならないが、そのような作業は長期的には 腰や関節をすり減らし、時間がたつほど効果の低い労働者にしてしまう可能性がある
- 建設労働者は「重い物を持たないのが良い建設労働者だ」とは言わず、「仕方がない、これが仕事だ」 と言う
- 建設現場には重い物を避けるためのクレーン、手押し車、フォークリフトのような手法がある
- ソフトウェアエンジニアにも 精神的に深く没頭するための手法 が必要かもしれないが、同様のアプローチはまだ見つかっていないのかもしれない
- AIが本当に人を以前より賢くなくするとしても、手でコードを書き続けることはできる
- しかし、電動工具を拒む大工 にほとんど仕事がないのと同じ理由で、手書きコーディングだけで給料を得るのは難しくなるかもしれない
- モデルが十分に優秀なら、長期的な認知能力を短期的な高収入キャリアと引き換えにしようとする エンジニアたちとの競争で後れを取ることになる
- 労働組合 は理論上、この流れを遅らせることができる
- 他の産業では、雇用主による底辺への競争を遅らせたことがある
- しかし技術職は報酬が高く、地球上のどこからでも働けて代替労働力を見つけられるため、技術系労働組合には悲観的だ
- プロスポーツ選手のキャリア寿命はおおむね最大15年 で、30代半ばごろまでは大金を稼ぐ機会があっても、その後は身体がついていかなくなる
- 今日よく見られる悲劇的な人物像は、「ショーは永遠に続く」と信じて 引退後の準備をしない プロスポーツ選手だ
- ソフトウェアエンジニアも同じ立場に置かれた 最初の世代 かもしれず、そうだとすれば、それに合わせて計画を立てるのが賢明だ
1件のコメント
Hacker News の意見
週に何度も同じ会話をしている。「AIが開発者を無意味にする」と言うので、なぜかと聞くと「LLMがコードを書けるから」と返ってくる。
でも実際に、自分が生計を立てている仕事のうちコードを書くことは昔でも2〜5%、今はさらに少なく、残りは物事を理解したうえで解決策を組み立てる能力を適用する仕事だ。
開発者の仕事がコードを打つことだと今でも信じている開発者は将来仕事がなくなるかもしれないし、LLMが開発者を置き換えると信じて開発者なしでやろうとする事業者も、結局は自然選択に処理されると思う。
4日目くらいに彼が「自分のキャリアで最も役に立ったことを教えてやる」と言って、「パンチカードには必ず番号を振れ、落としても簡単に順番どおりに戻せるからな」と言った。
すでにパンチカードを使う時代はとっくに過ぎていたのでがっかりしたが、彼は「お前の役に立つことではなく、自分の役に立ったことだと言ったんだ。ソフトウェアは常に変わる」と付け加えた。最近その言葉をよく思い出す。
ドキュメントの乏しいAPIに合わせて書き直したコードを動かそうとして壁に頭を打ちつける時間も含まれる。
元コメントの表現はソフトウェア工学を数学のように純粋で高貴な活動に見せているが、実際には計画を持って入っても現実が合わず、切迫した日程の中でドリルストリングを合わせようとして大ハンマーで金属を叩く掘削作業員に近い。
「物事を理解して解決策を組み立てる」仕事も、AIが狙っている領域だ。
たまたま貢献が評価される環境にいるか、訓練データにあまりない業界・ドメインにいるか、AIには扱うには複雑すぎる問題空間にいるだけかもしれない。
Jiraチケットを処理してCRUD Webアプリを作る人たちは、生計がしばしば消えるか、同じかより低い給料でより多くの成果を求められ、AIで追いつくことを迫られる可能性が高い。
できるならできるだろうし、方法は広まり、すぐに誰もがアクセスできるようになって進展が続くだろう。
できないなら、実際の結果がないという点で明らかになるはずだし、「自分は見ている」という言葉だけでは足りない。誰もが見て使える、避けられず否定できない現実でなければならない。
大企業でCTOの顧問のような超上級スタッフならあり得るが、それ自体がすでに非常に珍しい立場だ。
AIに対する二極化した反応は、どのレンズで見るかにかかっているようだ。ジュニア職は急速に消えつつあるが、シニア職では経験と判断力がかつてないほど重要になっている。
だからソフトウェア工学は、もはや多くの人にとって生涯の職業ではないのかもしれない。エリートスポーツが大半の人にとって現実的な職業ではないのと似ているが、それでも一部の人はこれを職業にするだろうし、そうあるべきだ。
自分の経験は正反対だった。最新のツールを実際に使おうとする非常に熟練したエンジニアたちは、40代、50代を含めて以前よりずっと良くなっている。
従来型のプログラマーが時間とともに実戦で弱くなる理由の一つは、チェスのように集中力と深い計算が落ちることにある。年配のチェスプレイヤーは19歳の天才よりチェスをずっとよく知っていても、同じ速度で長く計算できず、結局経験が純粋な計算力に負ける。
Claude Code と Codex は計算負荷を軽くしてくれ、経験で積み上げたあらゆる本能や2秒の「直感」はそのまま生きている。
いまや公平な競争になったどころか、逆に不公平になった。以前は6人チームを率いていたシニアが、今ではエージェントのチームを率い、以前と同じようにコードをレビューしている。周囲のジュニアよりエージェントの方向を変えるほうが簡単なことすら多い。
ただし切迫していながらまだ分からない問いは、実務の塹壕を通らなくても良いアーキテクトが生まれるのか、ということだ。
LLMも直感に似たことをするので区別する必要がある。LLMはインターネットの集合的無意識に近く、良い・悪い経験から生じるセンスとは明らかに違う。
湧いてくる直感は結局のところ「良いセンス」であり、これはどの技術分野でもシニア職の中核業務に近い。
農業でトラクターに置き換えられた人々は職を維持できなかった。今は何が違うのか。
6人チームはもはや不要で、論理的には会社から削除される。
だからソフトウェアエンジニアリングは一部の人には依然として職業として残るだろうが、人員は85%減るかもしれない。
だがその会社はもう存在せず、今使っている新しいツールで効率的に働く方法を身につけるにはずっと時間がかかる。新しい環境の細部を10年間学んできたわけではないからだ。
だからAIは、正しい文法を見つけたり、単体テストフレームワークの細部を覚えたりするのに膨大な時間を節約してくれる。1〜3年いれば、もっと速くなってツールにも精通できる気がする。
そのシニアエンジニア1人が消えれば何も残らない。6人チームがあるほうがまだ良い。
「AI利用者は時間が経つほど技術的能力が萎縮し、効果の低いエンジニアになる」という話は、長期的には概ね正しい気がして残念だ。
職業的に見れば、人は大きく二種類に分かれる。AIで推論を補強する人と、AIで推論を置き換える人だ。前者はあまり心配していないが、後者は心配だ。
米国の公立高校教師である母は、生徒たちが「Google AI overview」を絶対的な真実の情報源として受け取ることが多いとこぼしている。
これは昔の「Wikipediaを引用してはいけない」に似た新しい現象なのかもしれないが、パンデミック以降に授業へ来る子どもたちの批判的思考力が目に見えて落ちたと感じる。
インフルエンサーやインターネット上の匿名の人々が何を好きになり、何を嫌い、何を信じるべきかを教える環境で育った世代が一つ二つある。彼らはLLM以前からすでに推論を外注しており、品質が怪しくても自分の欲しいものを得ていると信じるよう設計されたシステムと生産的に相互作用する準備ができているようには見えない。
PR全体にClaudeの痕跡が見え、ほとんど修正していないと考えて差し支えない。彼らがAグループだ。
一方で、問題を最後まで扱い、変更を試すためのハーネスを作り、結果を検証し、複数の解決策を経て理想的な結果を一つに統合し、ベンチマークして磨き上げ、徹底的にテストし、PRに合理的な検証手順を添える同僚たちもいる。彼らがBグループだ。
これはまったく異なるAIの使い方だ。Aは今のところ何とか通っているように見えるが、Bは与えられた時間内で可能なことの新しい版であり、例外的に専門的な環境の外ではほとんど見なかったソフトウェア工学の新しい基準を定義している。
Aグループはかなり早く業界から押し出される気がする。LLMは、学ぼうという意志さえあれば驚くほど効果的に働けるようにしてくれる。そうした厳密さが標準になり、人間がループの中で依然として有用な構成要素であり続ける唯一のやり方になるのかもしれない。
体感としては、今年初めごろから米国のソフトウェア採用市場に実際の変化が起きたように思う。今後数年、人材資本に過剰投資しないよう、ますます多くの企業が様子見戦略を取っているようだ。
もともと弱かった採用シグナルは、今では完全に消えたように感じる。求人を一つ出すと、LLMで書かれた応募書類や自己紹介文が500件以上届き、どれも同じように見え、同じように感じられる。
この記事のプロスポーツ選手との比較は少ししっくりこない。筋肉で金を稼ぐ仕事なら加齢による身体的問題は明確だが、法律や医療のような知識労働と比べると、40代や50代でも非常に熟練し鋭い実務家は多い。
そうした国々で、これまで一度もビッグテックのリクルーターから連絡がなかった人たちが、毎日メッセージを受け取るようになった例を知っている。
昨年失効したある米国の条項が理由だという話も見たが、自分は門外漢なので理由を論じる知識はない。
むしろ経済が崩落寸前か、少なくともジェットコースターのような状態にある感じだ。採用に関する税制インセンティブは弱く、ゼロ金利時代はとっくに終わり、採用担当者はノイズだらけの応募に圧倒されている。
それでも上司たちはAIのせいだと言いたがる。そう言うと、自分たちが状況をコントロールしているように聞こえるからだ。
AIのせいで大丈夫だという説明として「別の職業に再訓練すればいい」という話を読み続けるが、その職業が何なのかも、再訓練の費用を誰が払うのかも見たことがない。
自分には大学に戻って一から新しいキャリアを始める金も時間もない。
それは正しいが、正しくなくなる瞬間までは、だ。
こうした考えがどれほど大きく失敗し得るかを示す古典的な例がマルサス理論だ。食料の増加は線形で人口の増加は指数的だから人口は崩壊するという理論は、マルサスがその観察を示す以前の歴史全体に対しては事実だった。
機械的なレベルで言えば、「私たちはいつも別の仕事を見つけてきた」という論理は、人間が常に自動化に対して知能上の優位を持っていたからこそ成り立った点を見落としている。
組立ラインの単純な人間入力でさえ、結局はロボットにはできない微細でほとんど見えない調整を行う人間の能力に依存していた。
しかしAGIに近いものが実際に動くなら、人間労働は自動化に対して何の優位も持たないため、過去の「自動化がより多くの人間の仕事を生んだ」という論理がなぜ今後も続くのかは不明だ。
政府は状況を管理可能な水準に保つ程度の福祉だけを支給し、その後は文化的にラッダイトのように悪魔化するだろう。
もちろんしばらくは人間の肉体労働が必要な仕事は残るだろうが、現実には多くの肉体労働の仕事は、より賃金の安い世界の別地域で行われている。
配管工やウェイトレスのように輸出できない仕事は需要が限られている。現在のホワイトカラー労働者の50%をこうした職に押し込んでも、簡単に仕事が見つかったり、まともな賃金を得られたりすると期待はできない。需要がない。
その一方で、ホワイトカラーの仕事が消えるのと同時に、「低技能」の肉体労働の仕事も徐々に自動化されている。セルフレジは小売の仕事を減らし、ロボタクシーやドローン配送は配送・物流の仕事を減らし、倉庫ロボットは倉庫の仕事を減らすだろう。
AIが人間の雇用主を必要とする高賃金の仕事を多く生み、それが同時に海外へより安く外注できない仕事でもあるという暗黙の前提があるように見える。AIにも安全で、外注にも安全な高賃金の職とはいったい何だろうか。皆が高賃金の清掃員になるのか。そんなはずがない。
今日、建設労働者や配管工に再訓練しろという助言は、その種の労働需要が無限だと仮定しているように見えるが、実際はそうではない。仮に建設労働者の需要が急増しても、何百万人も建設業に入れるだけの設備、サプライチェーン、インフラを整えるには何年もかかる。
最もあり得るシナリオは、人々が仕事を失い、国内経済に残った限られた仕事をめぐって終わりのない下方競争に閉じ込められることだ。残りは外注されるか、ロボットとAIが処理する。
より良い助言は、この現実に備え始めろということだ。政府が守ってくれる、あるいは守れると仮定してはいけない。富が集中すれば腐敗はほとんど必然であり、政治家にも養う家族がいる。
真剣に受け止めるべきだ。たとえ自分が間違っていたとしても、すべてがうまくいって新しい高賃金の仕事に再訓練できると仮定するより、最悪に備えるほうがましだ。
自分の両親は二人とも建設労働者だった。重い物を永遠に持ち続けることはできないという認識がある。
最終的には物を持ち上げるのをやめて、班長や監督者になる。以前は自分でやっていた仕事を他の人にやらせる方法を学ぶのが不快なら、体は完全に壊れ、その結果は悲惨だ。
これは現実的な話でもあるが、自分のキャリアにおいて委任について内面化するのに重要だった比喩でもある。AI利用と無関係ではないが、完全にきれいに当てはまるとも思わない。
賢そうな人たちが、この記事のような抽象化の比喩を使うのをやめてほしい。キーワードは決定性だ。
電動工具やCのようなあらゆる抽象化レイヤーは、頼れる決定的な層を追加し、毎回同じ結果を出して、より効果的に仕事をできるようにしてくれた。
LLMは自然言語でプログラミングを記述し、結果は良く見積もってもばらつく。だからエージェントが必要になり、結果を brute force で押し通すことになる。
本当の堀は、実際に今でもプログラミングできる人間であり続けることだと思う。
LLMの出力を直接実行するのではなく、LLMで一度成果物を作り、その成果物を決定的に実行するからだ。
仕様は一度コードに変換され、仕様を編集すればコードが更新されることはあっても、毎回プログラム全体を作り直すわけではない。だとしたら、なぜ決定性が重要なのか。
たとえば5年前、Mark Zuckerberg はどうやってソフトウェアを作っていたのか。
彼も自分と同じようにエディタを開けるが、状況として人間資源という別のインターフェースを与えられていた。エディタの代わりにその人たちとやりとりし、彼らがソフトウェアを作った。
彼と構築されたシステムの間にあるこの層は、決定的であれそうでなかれ、抽象化だ。
今日の私たちには、数年前よりも多くの作業を委任できる、より広い権限がある。
自由意志に関する立場によっては、人間も事実上決定的だと主張できる。
ここで触れている概念は、LLMと人間が不透明な関数だという点だ。その挙動を頭の中でたどれる論理的ステップ列に還元できず、複雑さをいくつかの解釈可能な状態へきれいに分解する不変条件もなく、入出力空間は構造化されておらず曖昧で不完全にしか仕様化されておらず、事実上無限である。
このため、従来のプログラムに適用する戦略や分析では推論したり合成したりすることがほぼ不可能になる。
選択的にエントロピー源を入れて非決定性を追加することはできるが、必須ではない。LLM提供者が皆、疑似乱数生成器のシードを固定値にしていても、ほとんど誰も気づかないだろう。
まったく同じプロンプトを何度も入れ、出力がある統計的分布を持つことに依存するワークフローは多くないはずだ。むしろ望んでもキャッシュされた応答を受け取ることすらあり得る。
ソフトウェアエンジニアリングを、テキストエディタにコードを一文字ずつ入力することだと定義するなら、そういう仕事に金を払う人を見つけるのは難しくなるだろう。
しかしソフトウェアを作ることを意味するなら、私たちはこれまで以上に多くのソフトウェアを作っているし、ソフトウェアとは何かの定義もこれまで以上に多様だ。ここから多くの異なるキャリアが枝分かれしていく可能性があると思う。
興味深いのは、ソフトウェア工学そのものも進化しなければならないという点だ。プロセスやツールも、これまでと同じように進化しなければならない。
2004年に大学を出たとき、私たちは「ソフトウェア危機」の時代、ウォーターフォール開発プロセス、そして新しい「反復型方法論」がちょうど始まりつつある流れを学んだ。
スパゲッティコードが Pascal/C の構造化プログラミングへ、さらにオブジェクト指向プログラミングへ移っていった過程も学んだ。
工学的方法論も進化した。悪名高いUMLもあったし、形式検証のための Z 言語のような形式手法や、ABC、循環的複雑度のようなソフトウェア複雑性の測定もあった。
今日ではコンピュータがコードの大半を書くようになり、現在の言語やソフトウェア開発プロセスの価値は下がりつつある。プログラミング言語は人間のために作られたものだ。そうでなければ、今でもアセンブリで書いていたはずだ。
これからは、コンピュータに意図を伝え、最終的な命令が私たちの望んだことを行っているか検証するために使う抽象化を変えなければならない。
この新しい抽象化がとても気になる。コーディングの細かな部分が完全に自動化されれば、もしかするとソフトウェア工学という職業の中に、より本物の工学的厳密さが見られるようになるかもしれないと思う。
2026年に、両社ともAIが開発者を10倍速くすると判断したとしよう。現実だと主張しているわけではなく、ただの切りのいい数字だ。
会社1はプログラマー90人を解雇し、10人で同じ仕事をする。
会社2は全員を維持し、以前の10倍の仕事をし、場合によってはさらに採用する。
市場で勝つのはどちらか。
答えはいつも通り「状況による」だが、会社1が勝てる領域は会社2よりずっと狭いと思う。非常に精密な市場条件の組み合わせが必要で、存在しないほどではないが、自分が例外側にいると賭けるのは危険だ。
加速が起きる一方で、新しい現実にまだ適応できていない時期には、会社1の答えは会計担当者には表面的に魅力的に見える。
しかしどんな市場でも、一社だけでも会社2の解法を選んで抜け出せば、まともに競争するために業界の残り全体も追随せざるを得なくなる。
中長期的には、プログラマー1人が生み出し、給与として取り込める価値創出が減る可能性は低い。
過去に自動化が生んだ仕事は、たいてい賃金が低く、自律性も少なかった。
つまり、すべての会社が車輪を何度も再発明しているということだ。新しいきらびやかなフレームワークで書いたという以外に新しいものがないソフトウェア開発を10倍に増やしても意味はない。
自分は大半のソフトウェアをなくし始めるべきだと思う。基本に立ち返って何が必要かを見て、それをより良くし、完成させるべきだ。一度くらいソフトウェアを完成させるべきだ。
software engineerをsecretaryに、creating softwareをtyping correspondenceに置き換えても同じことが言える。AIがソフトウェアのプログラミングと設計を解決した世界では、価値は別のドメイン専門性を持つ人々に蓄積されるだろう。彼らは今や専門開発者1000人分の力を手にしており、より良く、より速く、より安いAIツールで代替可能な重複スキルを持つ人々には価値は蓄積されない。
自分が何か見落としていない限り、ここには明白な論理的問題がある。
LLMを使って生産性を得るには能力の萎縮を受け入れなければならないのだとしたら、寿命が限られている開発者は私たちだけだ。次の世代は手作業によってその能力を築いていないので、萎縮する技術セット自体を持たないことになる。
そして「LLMのコード生成はコンパイラの機械語生成と同じだ」という比喩を公の場で禁止することを提案したい。同じ話を何度も蒸し返して議論するのはもううんざりだ。