生成AI時代 エンジニアが身につけるべき能力
# はじめに
生成AIが本格的に使えるものになってきたのを、肌で感じている。
構文やAPIの使い方を必死にググりながらコーディングを進めてきた。今では生成AIが一瞬で解決する。
エラー調査では、Qiita・Stack Overflow・GitHubのIssueを探し回っていた。今では生成AIが一瞬で解決する。
設計書や、上司・顧客にわかりやすい資料を作るためにPowerPointと格闘していた。今では生成AIが一瞬で解決する。
自分はこういう泥臭いプログラミングや調査が好きだった。時間はかかるけれど、すぐには解けない課題に向き合い、解けたときの達成感や、人に褒められる瞬間が生きがいだった。
しかしそれらは、もはや生成AIがすべて解決してくれる。自分が生業としてきた、得意としてきた領域は、すでに侵食されてしまった。
自分の存在意義をアップデートする必要がある。何が今必要なスキルかを、ちゃんと考えなければ。
# 変わらないもの
もちろん、生成AI登場後も価値が変わらない能力というものもある。その領域こそが、これから自分が伸ばしていかなくてはならないところではないだろうか。
まずはそれらを考えてみる。
## 課題を見つける能力
まずは「課題を見つける能力」だ。
生成AIは指示に対する遂行力がかなり高い。反面、解決してほしい事象を知らなければ当然動かない。つまり、今やっている仕事の中で何が課題かを発見する必要がある。何が問題になっているかに、高くアンテナを張り続けることが大切だ。
また、自分だけの世界で仕事をしていてはダメだ。視野が自分の課題だけに限定されてしまうから。自分は製品開発の仕事をしているが、導入SE、その先の顧客、さらにその先のエンドユーザーと、関わる人たちが持っている課題を知る必要がある。課題がわからなければ、アクションを起こせないからだ。
## 情報収集能力
これは、先の「課題を見つける能力」とも関連している。
今まで自分は、設計・実装に注力するソフトウェアエンジニアリングをしてきた。そこで必要だったのは、技術に対する調査力だった。ネットや本から情報を吸い上げることで対応できていた。
しかし「人の課題」はネットに転がっていない。生成AIがサーチできる範囲外だ。つまり、直接身近な人から課題を聞き出すコミュニケーション能力が必要になる。あるいは、課題を吸い上げられるような仕組みづくりも必要かもしれない。いずれも、一人でぬくぬく仕事をしていては集まってこない情報であり、自分一人の世界から飛び出す必要がある。
## ソフトウェアエンジニア力
これは今後どうなるか、正直わからない。ただ、今はまだ必要なのではないかと感じている。
TDD・DDD・SOLID原則・セキュリティ……保守性が高く、セキュリティに強いソフトウェアを作るには、こういった原則的な知識が必要だ。AIが作ったものに問題がないかを判断できないから。
ある人はこう言う。「ソフトウェアの設計はトレードオフだ」と。保守性を犠牲にするか、性能を犠牲にするか、ユーザビリティを犠牲にするか——そういう選択を求められる場面がある。その判断は人間がする必要があり、そのためにソフトウェアの基礎は身につけておくべきだ、と。
正しいと思う。でも、プロンプトでこう言えば解決できる時代はもうすぐ来るのでは——いや、もう来てるのか?
「性能を優先。ユーザビリティを犠牲にして。」
# これらの能力を身につけるために
じゃあどうすればいいか?ここからはClaudeCodeくんに問いたい。どうすればいい?