最近、AIを使った開発スタイルについて、ずっと考えています。
まだ考えが完全にまとまっているわけでもなく、あくまで現時点での私見ですが、
書き出してみようと思います。
世間では、
「AIがコードを自動生成してくれる」
「開発が楽になる」「工数が減る」
といった話をよく目にします。
もちろん、それは事実の一面ではあると思います。
ただ、個人的には、そこが一番の変化点だとは感じていません。
私が感じているのは、
人間に求められる技能の重心が、プログラミングテクニックから要件定義能力へ移りつつある
という変化です。
AIがコードを書く前提に立つと、
「どう書くか」「どの技術を使うか」という話の比重は下がり、
「何を作るべきか」「それは業務として正しいのか」を考える力の比重が上がる。
これは、かなり大きな変化だと思っています。
ただし、だからといって
要件定義さえできれば、実装は知らなくていい
という話になるわけではない、とも感じています。
これまで要件定義や上流工程を中心にやってきた人の中には、
実装やテストといった下流工程から距離を取ってきた人も少なくなかったと思います。
自分がプログラマーに出した指示と違う成果物が上がってきたとき、
その違いがなぜ生じたのかを考える前に、
「違う」「やり直してほしい」と作り直しを指示する。
自分の表現が十分だったかどうかはあまり問われず、
修正コストは下流に寄せられる。
結果として、プログラマー側が無理をする。
少なくとも、私はそういう現場を何度も見てきました。
人間同士の開発では、
暗黙知や経験による補完が働くことで、
こうした構図が表面化しにくかったのだと思います。
でも、AI相手だとそうはいきません。
曖昧な指示は曖昧な成果物になり、
矛盾した指示はそのままコードに反映される。
その結果が意図と違っていたとしても、
それは「どう指示したか」の結果でしかない。
だから、AIを使う以上、
指示の品質に向き合う覚悟が、上流工程にも求められるようになる。
私はそう感じています。
一方で、これはプログラマー側にも同じように厳しい話だと思っています。
これまで多くのプログラマーは、
「要件を理解すること」よりも
「仕様を正確に実装すること」を重視してきました。
仕様書が正しいことを前提に、
仕様通りのものを作る。
それが品質であり、それ以上でもそれ以下でもない。
業務的に見ての違和感や、
「ここはこうした方がよいのでは?」という提案は、
役割の外だと考えてきた人も多かったと思います。
私は、この立ち位置も、AI時代にはかなり厳しくなると感じています。
仕様通りのものを、正確に、速く作る。
この能力に関して、AIは人間よりもはるかに得意です。
個人的な感覚ですが、人間とAIの差は、
徒歩と新幹線くらい離れているように見えます。
要件を理解せず、
仕様の正確さだけを価値にしてきたプログラマーは、
その役割自体がAIに置き換わっていく可能性が高いのではないでしょうか。
結局、AI時代に人間に残る余地があるのは、
-
業務要件を理解できる
-
仕様の違和感に気づける
-
実装を見て、業務的なリスクを判断できる
-
必要であれば、仕様そのものにフィードバックできる
こうした立ち位置だと思います。
それは、従来の「上流専門」でも、
「下流専門のプログラマー」でもありません。
要件定義を軸にしつつ、実装とテストを理解している人間。
私は、今後こういう人が求められていくのではないかと感じています。
AIは、人間を楽にしてくれる存在というより、
これまで曖昧に分業されてきた役割や責任を、
はっきりと可視化する存在なのかもしれません。
あくまでこれは、
現場を見てきた一個人としての意見です。
違う見方も当然あると思います。
ただ、少なくとも自分自身は、
「AIをどう使うか」以前に、
「自分は何を考え、何に責任を持つ人間なのか」
そこを問い直さざるを得ない時代に入ったと感じています。
さあ、面白くなってきた。