はじめに
筆者は「ドメイン駆動設計」「アトミックデザイン」「クリーンアーキテクチャ」など
構造や設計に関する話題が好きで、すんごいワクワクします。
という前提を踏まえて、このAI協働時代に必要なあらゆるものへの向き合い方は
「AIにソースコードを書かせて、人間はそれを見ない」
という決断ではないかと考えています。
その結果、人間は、①仕様となるテストケースと、②その実行結果(All Green) を見て、
「システムが求める形で動いている」と判断していくべきだと考えています。(少し勇気がいる話ですが…)
どういうこと?
ポイント①これから人間に求められるスキル
- 正しい仕様を理解し、把握するスキル
- 良いテスト設計ができるスキル
- 良いテストコードをレビューできるスキル
ここでの役割分担としては、「1.」は人間が定義してAIに伝え、「2.」「3.」はその内容をもとにAIが生成し、人間がレビューする、という形を想定しています。
ポイント②「3. 良いテストコード...」とは
- AIに良いテストコードを書かせるためにはテスト対象のソースコードが、テストの書きやすい(テスト容易性の高い)構造になっていなければならない。
- 例えば、1つの関数の中に複数の処理や依存関係があると、モック化して信用度の低いテストコードが出来上がってしまう可能性があります。
つまり、これから求められるスキルに、
「良いソースコードとは何か、すなわち保守性の高いソースコードをAIに書かせるスキル」 がここで追加されます。
(前提をここで回収...笑)
結論
- 正しい仕様を理解し、把握するスキル
- 良いテスト設計ができるスキル
- 良いテストコードをレビューできるスキル
- 保守性の高いソースコードをAIに生成させるスキル
エンジニアに求められるスキルは、この4つが重要になると考えています。
またこれらを前提として、
「AIに実装を委ね、人間はテストとその結果で判断する」開発スタイルに移行することで、
- 実装にかかる時間は大幅に短縮される
- テスト設計を起点にしたシフトレフトがより機能する
結果として、品質とスピードを両立した開発が可能になるのではないでしょうか。
さいごに
まだ理想論の側面もありますが、
自分自身もこの方向に進めるよう、学び続けていきたいです。
精進します。