虎嗅

**「手仕事の技術はまだあるが、手工業の生産はもはや中心ではない:プログラマーの能力が3度にわたって向上している」**

原文:手艺还在,手工生产已不再是中心:程序员能力的三次上移

本文の要約

この記事では、過去30年間のソフトウェア開発の主要なトレンドを整理しています。プログラマーの仕事の焦点は、低レベルの機械的な作業から高レベルの判断と意思決定へと移行してきました。初期にはコンピュータの内部構造に直接関わり(文法の記述やコンパイルの調整など)、IDEを使って繰り返し作業を減らし、フレームワークを利用してシステムを迅速に構築するようになり、今ではAIのおかげでプログラマーは要件を伝えるだけでコードを生成できるようになりました。この過程で、プログラマーの価値は「コードを書けること」から、「何を書くべきかを知り、コードが信頼できるかを判断し、問題が発生したときに抽象的な層を突き抜いて根本原因を見つけること」へと変わりました。ツールの革命によって、プログラマーの核心的な競争力が再定義されました。

プログラマーの能力が向上した3つの重要な段階

プログラマーの仕事は「階段を登る」ようなもので、ツールの進化によって段階的にレベルアップしてきました:

  • 第1段階:Turbo CからIDEへ:昔はコードを書くことが「そろばんで計算する」ようなもので、1文字間違えるとコンパイラがエラーを出し、変数の定義やポインタの使い方などを暗記しなければなりませんでした。IDE(Eclipseなど)は「インテリジェントな計算機」のように、自動的に補完やエラーチェックをして時間を節約してくれますが、何を計算するかはプログラマーが決めます。
  • 第2段階:低レベルのインターフェースからフレームワークへ:以前はデータベースの接続やリクエスト処理を自分で行わなければなりませんでしたが、今ではSpringなどのフレームワークを使えば、ルールを理解していればビジネスシステムを構築できます。業界の「資格のあるプログラマー」への要求は「低レベルの知識」から「フレームワークの使い方」へと変わり、低レベルのスキルは「日常的な操作」から「過去の経験」へと変わりました。
  • 第3段階:コードを書くことから意図を伝えることへ:AIが登場し、もはや自分でコードを打つ必要はありません。要件(例えば「データを一括でエクスポートするスクリプトを書いて」と伝えるだけで、AIがコードを生成してくれます。プログラマーは「コードを書く」ことから「何をするかを指示する」ことへと変わり、実装の詳細はすべてマシンに任せます。

AI時代の最大の誤解:コードを生成できるからといってソフトウェアができるわけではない

多くの人は「AIがコードを書けるので、誰でもプログラマーになれる」と考えがちですが、本当のソフトウェアは「動くだけ」ではありません:

  • 例えば、AIが支払いシステムを作ったとしても、文法は正しいかもしれませんが、「支払いに失敗したときの返金方法」や「パスワードを3回間違えたときのアカウントのロック」などのビジネスロジックを理解していません。
  • また、「データベースの接続をいつ切るべきか」や「権限をどのように制御するか」などの低レベルのリスクも理解していません。

これらコードの背後にある「システムの仕組み、例外処理、セキュリティルール」はAIには学べません。経験豊富なエンジニアは「システムがどのように故障するか」の地図を頭に持っており、AIが生成したコードに問題がないかを一目で見抜くことができます。

未来のプログラマーの核心的な競争力:マシンに外注できない3つの能力

ツールは「どのように行うか」を代わりにしてくれますが、「行うべきか、正しく行われているか」は常に人間が判断しなければなりません:

1. 意図を明確に伝える:AIは新人のようなもので、「ログインページを作って」と言ってもうまくできないかもしれませんが、「携帯番号と認証コードでのログインをサポートし、パスワードを3回間違えたらアカウントをロックする」と伝えれば、より正確に実行できます。要件や制約、受け入れ条件を明確に伝えることが、AI時代における貴重な能力です。

2. 結果の信頼性を判断する:AIが生成したコードは動くかもしれませんが、必ずしも信頼できるとは限りません(パフォーマンスが悪い、セキュリティに問題があるなど)。プログラマーは最終的な責任を負い、コードが運用基準を満たしているかを判断しなければなりません(例えば、10万人のユーザーがアクセスしても問題ないかなど)。

3. 問題が発生したときに低レベルに戻る:システムがクラッシュしたとき、AIは原因を見つけられないかもしれませんが、低レベルの知識を持つエンジニアは「データベースの接続プールがいっぱいになっているのではないか」と考えることができます。なぜなら、JDBCの内部構造を理解しているからです(もはやJDBCを書く必要はないとしても)。

ツール革命の本質:人を置き換えるのではなく、役割を変える

これはソフトウェア業界に限ったことではありません:

  • 工業時代には職人が消えませんでしたが、工場は彼らに「製品全体を作る」ことから「重要な工程を担当する」ことへと変化をもたらしました。
  • オフィス時代にはタイピストが消えませんでしたが、Excelは彼らに「タイピング」から「データの分析」へと役割を変えました。

ソフトウェア業界も同じです。コードを書く能力は依然として必要ですが、それはもはや核心的な競争力ではありません。核心は「判断と意思決定」に移りました。ツールが進化するほど、人間が担う役割はより純粋になり、置き換えが難しくなります。

最後に:AIはプログラマーを消し去ったわけではなく、「コードを書く作業者」から「システムの意思決定者」へと変えています。真の価値は、マシンにはできない部分にあります。