ソフトウェア開発の情熱と興味をどう保てばいいのか?
AIがコードを書く時代になって、何もかもが変わった気がする。
もちろん便利になったし、爆速に作れる世の中は素晴らしいものだと思う。
コードを書くという職人技だったものが、量産体制へと移行したいま、なかなか難しい時代になったとも感じる。
品質をどう保つか?という話はよく耳にする。
ソフトウェア開発の品質担保は大きく分けると「テスト」と「コードレビュー」で成り立っていたと思う。(本当に?)
しかし、AIが爆速にコードを書く時代においては「コードレビュー」がボトルネックになると言われている。
- もう全部コードレビューする必要がない
- AIにコードレビューさせて、人間は最後にチェックする
みたいな話はよく聞く。 しかし、プロセスそのものが量産型になったからこそ、プロセスを転換するべきではないかと思う。
つまりアウトプットされたものから品質を検査するのではなく、生産する前にある程度の品質を担保するべきではないか?ということ。
- データモデル・ストレージ構成
- 依存方向の表明
- ディレクトリ構成
などの、横軸(つまりソフトウェアの技術的な関心・アーキテクチャ)を明確にすること。
- 機能モデル
- 機能制約、バリエーション
- ドメイン辞書
といった、縦軸(ドメインモデル)みたいなところを明確にすること。
この2つを明確にすることで、より安定したソフトウェアの生産(コードの生産)が行えるのではないだろうか?
教科書的にはそうなんだけど、実際にアーキテクチャや機能モデルを考えるのはめんどくさくなって、すべてをAIに委ねたくなるときがある。
これはリモートワークでオン/オフの切り替えがうまくいかないからとか、子育てが大変で仕事に全力になれないからという背景があるのかもしれない。
しかしやはり「コードを手で書かなくなったことが一番の原因ではないだろうか?」
AIに慣れてきて、コードを手で書かなくても、ある程度は設計している気持ちやソフトウェアを開発している感覚を得られるようになった。
けれど、コードを書くことでソフトウェアに直接触れている感覚は、以前より薄くなっている。
そこに問題があるのではないか。
言い換えれば、自分の中で情熱や興味が急激に失われてきて、アウトプットされた動くソフトウェアだけにフォーカスしてしまっている。
これは本当にどうしたらいいんだろうか?