SES等の技術者面談をしていると、「プログラミングが出来ます。これまでの現場ではC#やPythonを使用していました。Gitを使ってバージョン管理をし、AIを使用して開発もしています」とアピールされる機会によく遭遇する。
これが1年目の若手であれば、「開発に伴うツールの使い方を現場で学んできたんだな」と素直に受け取れる。しかし、5年目以降の中堅層からこの言葉が出てくると、逆に「今まで一体何をしていたのか?」という疑問しか湧かない。
システム開発において「実装」はほんの一部でしかない
ソフトウェア開発やシステム開発の本質は、ただコードを書くことではない。
関係者との要件の協議、画面構成やデータ構造の設計、想定される利用者数に対するスケール戦略。リリース後の問い合わせ対応や要望の吸い上げ、不具合修正。さらには日々の会議、チーム内の進捗管理、生産性向上施策、チームビルディングなどのコミュニケーション。良いものを構築するためには、無数の「やるべきこと」と「やった方がいいこと」が存在する。
開発業務全体を円グラフにしたとき、「プログラミング(実装)」はその中の一つのカテゴリに過ぎない。「○○という言語ができる」というのは、さらにその1カテゴリの中の「深さ」の話でしかない。
AIエージェントが実装を圧倒する現実
現在、AIを使用すればプログラミング言語の深い知識がなくても、エージェントが自律的に実装を行ってくれる。しかも、プロジェクトのコーディングルールに忠実に従い、指定したフレームワークのバージョンに合わせた内容で出力される。
最大の脅威はその「圧倒的な実装スピード」だ。人間がどれだけタイピングを頑張っても、AIなら数千行のコードを1日かからずに出力してくる。手打ちのコーディング速度で勝負すること自体が、もはや構造的に破綻している。
こんな時代に「プログラミングができます」と訴求されても、「AIのトークン利用料を少し節約できる」「AIが書いたコードを読んでレビューできる」程度の価値にしか直結しない。
私自身の生産性爆発と、解消された不安
私自身、AIを本格的に使い始めてから生産性が爆上がりした。
これまで、未知の概念(例えばDDDにおける依存性の逆転など)を調べることに膨大な時間を溶かしていた。「こんなにインターフェースを定義する意味があるのか?自分の記述内容の妥当性はこれで合っているのか?」という不安が常にあった。
しかし、AIとの壁打ちやコード生成を通じて、その不安は一気に解消された。「なるほど、テストもインターフェースを利用すればこんなに簡単にモックできるのか」と腑に落ちるスピードが段違いになった。
当初はGitHub Copilot(コストゼロのモデル)を使い、「チャットのレスポンスが速いな」程度にしか感じていなかった。しかし、モデルを使い分け、エージェンティックな開発手法を取り入れてからは、1ヶ月のコード出力行数が5万行、10万行、15万行、ついには25万行へと跳ね上がった。現在は従量課金のためトークンコストの制約で頭打ちになっているが、人間の物理的な限界はとうに超えている。
シフトした「エンジニアの戦場」
AIが実装を丸抱えしてくれる今、エンジニアがリソースを割くべき領域は完全に変わった。
「どんなものを作って、どんな人にどんな効果を訴求するのか」
「設計の妥当性をどう判断するか」
「AIが生成したコードをどうジャッジするか」
「作って成果を出した結果、利用者からのフィードバック(批判でも賞賛でも)を受け、どう考え、次のアクションにどう繋げたのか」
そして何より、人と人との会話や協議、会議、チームビルディングといった「人間にしか出来ない泥臭い部分」を頑張る必要性がかつてなく高まっていると感じる。
「どうやって実装するか」を考えるフェーズは終わり、「現状の課題を定義し、何を何で作るかを決める」というレイヤーでしかエンジニアの価値を発揮できないフェーズに入っている。面談で「コードが書けます」とアピールされるたびに、その認識のズレを再確認させられる。
(※では、大量のコードを書けるようになった今、エンジニアの「生産性」はどう評価されるべきか?これについてはこちらの記事で考察している。)

コメント