見出し画像

AIがコードを書く時代でも、エンジニアの熟達は早くならないのではないか

はじめに

最近、生成AIによってソフトウェア開発の風景が大きく変わりつつあります。AIはコードを書き、コードを調査し、エラーを修正し、ときには設計の提案までしてくれます。

確かに、今までのソフトウェア開発は、手を動かしてコードを書いたり、コードを修正したりして、家内手工業的な要素がありました。それに対して、生成AIにより人が手を動かすことが少なくなり、圧倒的な速さで、コードを書いたり修正してくれるようになっています。

残念ながら、これからはプログラミングを習得する時間が大幅に短くなるわけではありまん。ソフトウェアエンジニアが熟達するまでの時間そのものは、あまり変わらないのではないかと思います。

その理由は、ソフトウェア開発の本質が「コードを書くこと」だけではないからです。


ソフトウェアを書くことは技能です

プログラミングの世界では、昔からよく引用される言葉があります。

Writing software is an art, and it takes about ten years to really get good at it.

https://www.dreamsongs.com/PoetryOfProgramming.html

これは Richard Gabriel がエッセイ The Poetry of Programming の中で書いた言葉です。「ソフトウェアを書くことは芸術であり、本当に上達するには約10年かかる」という意味です。

また Peter Norvig も有名なエッセイ Teach Yourself Programming in Ten Years の中で、

プログラミングを習得するには約10年かかる

https://www.norvig.com/21-days.html

と述べています。

つまり、プログラミングは

  • 知識だけでなく

  • 経験と判断力

が必要な技能(craft)だと考えられているのです。


私自身の経験

私自身は1978年に大学でプログラミングを学び始めました。そして1984年に社会人になり、ソフトウェア開発の仕事に就きました。

しかし振り返ってみると、自分が一人前に近づいたと感じたのは2000年頃です。大学で学び始めてから20年余り、社会人になってからでも15年以上経っていました。

もちろん、それまでの経験が無駄だったわけではありません。むしろその長い期間の

  • 学習

  • 実践

  • 失敗

  • 修正

の積み重ねによって、少しずつ理解が深まっていったのだと思います。


AIが変えたもの

生成AIは確かに多くのことを変えました。例えば次のような作業は大きく効率化されています。

  • コードを書く

  • APIの使い方を調べる

  • 既存のコードを調べる

  • コンパイルエラーを修正する

  • 簡単なアルゴリズムを実装する

この意味では、プログラムを書く作業そのものは確実に速くなりました。しかし、ソフトウェア開発の本質はそこだけではありません。


熟達に必要なのは判断力です

ソフトウェア開発では、次のような判断が常に求められます。

  • この設計は将来も保守できるか

  • この抽象化は適切か

  • この技術選択は正しいか

  • このバグの原因はどこにあるのか

こうした判断力は、

  • 多くの設計

  • 多くの失敗

  • 多くの修正

を経験することで少しずつ身につきます。これはAIが直接与えてくれるものではありません


継続的な学習と実践が不可欠です

ソフトウェア開発では、継続的な学習と実践が欠かせません。

新しい技術やツールは次々に登場します。ソフトウェアの規模や複雑さも年々大きくなっています。

そのためエンジニアは

  • 新しい技術を学び

  • 実際にプログラムを書き

  • 設計を試し

  • 失敗から学ぶ

というサイクルを長い時間かけて繰り返していく必要があります。この積み重ねによって、少しずつ理解が深まり、判断力が育っていきます。


ソフトウェアには「時間の経験」があります

もう1つ重要な点があります。ソフトウェアの設計の良し悪しは、時間が経ってから現れることが多いのです。

たとえば

  • 数年後に設計の問題が露呈する

  • システムが大きくなったときに性能問題が出る

  • 保守の難しさが明らかになる

こうした経験は、どうしても時間の経過を必要とします。そのため、熟達の過程は簡単には短縮できないのではないかと思います。


AIは能力を拡張する道具です

AIは非常に強力な道具です。しかしそれは、熟達を置き換えるものではなく、能力を拡張するものだと思います。

望遠鏡が天文学者の能力を拡張したように、AIはソフトウェアエンジニアの能力を拡張します。

しかし

  • 観察する力

  • 理解する力

  • 判断する力

そのものを短期間で作り出すことはできません。


おわりに

AIによって

  • コーディング

  • 調査

  • 試行

の速度は大きく向上しました。

しかし、ソフトウェア開発の本質である

  • 設計

  • 判断

  • 継続的な学習

  • 実践による経験

の蓄積には、やはり長い時間が必要です。

だから、次のように考えています。

AIがコードを書く時代になっても、
ソフトウェアエンジニアが熟達するまでの時間は
大きくは変わらないのではないだろうか。

いいなと思ったら応援しよう!