Threadsの投稿で、
『AIで書いたコードを、
細部まで理解できていないままコードレビューに出すのは、
職場でも最も信用を落とす行為なので、気をつけましょう笑』
とあったのですが、分からなくもないのですが、「笑」というのが残念です。
比喩的な話になるのですが、昭和の時代『そろばん付きの電卓』というのがあった。つまり『電卓の結果が信用できない』ということでそろばんがついていたとのことです。
当たり前ですが、『電卓が信用できない』のなら『そろばんのみ』使えば良いですし(電卓とそろばんで2回計算するので時間がかかっている)。令和の時代では、『電卓が間違えるはずがない』ということで、そろばん付きの電卓というのは見つからないかと思います。
もっとも、当時の発想として、実は『そろばんだけだったり電卓だけだったりすると、人間の操作ミスによる間違いがあるので、異なるデバイスで計算し互いに検算しあう』という意図があったかもしれません。
そう考えると
『AIで書いたコードを、細部まで理解できていないままコードレビューに出すのは、職場でも最も信用を落とす行為なので、気をつけましょう笑』
というのは、AIが完全ではないので理解ができます。
しかしながら、この発想は『そろばん+電卓』ということは意識しておいた方がよいかもしれません。
実はソフトウェアの世界では、「中身は知らんがそれを使っている」ということが既に何重もの階層構造の上に起こっています。
我々が何気なく書いているプログラムも、
・OS
・データベース等のミドルウェア
・プログラミング言語環境
・フレームワーク
といった基盤の上で構築しています。
さて、我々はOSのコードやらデータベースのコードを理解しないとプログラミングをしてはいけないでしょうか?
コンパイラが出力するアセンブラコードを理解できなくても良いのでしょうか?
フレームワークについては、全てを理解する必要があるでしょうか?
もちろんですが、2025年現在、『AIの出力するコードを無批判で受け入れる』のはダメでしょう。
しかし、『AI出力の細部を理解しないとダメ』という発想はソフトウェアエンジニアリングの観点からは問題があるということになります。なぜか?
そもそも、コードレビューは、ソフトウェアの品質向上、バグや問題を取り除くために行います。
AIの出力をコードレビューするということは、近い将来に発生する問題として、
「AIが作成した膨大なコードを人間がレビューし続ける。レビューが終わらない。」
ということになります。
せっかくAIにより開発のスピードが上がっても人間のレビューにより生産性が下がるということになります。
コード開発ということばかりに目をやると『コードの理解、レビュー』となりますが、ソフトウェア開発(エンジニアリング)の観点で見れば、これまでの歴史が示すとおり、
・階層化
・コードの再利用
・ブラックボックス化
と進化してきました。
その観点でみれば、必ずしも「細部まで理解する必要がないこと」は理解してもらえるかと思います。
では、コードレビューにおいて、どうも担当者が細部を分かっていないと判断したらどうすればよいでしょうか?
それは、担当者がサボったと認識するのではなく、さりげなく
「ここのロジックについて説明してくれますか?」
「どのように検証しましたか?」
と質問をすればよいでしょう。
『AIに任せた』と回答がくれば、
もし、そのコードが学習する価値があるものなら、「このコードは重要なので覚えてください」と言えばよいし、
もし、そのコードにバグがあるのなら、「AIのこのコードに問題があるので修正するかプロンプトを見直してください」と言えばよいです。
いずれにしても『理解していない=仕事をしていない』と決めつけるのではなく、きちんとレビュー対象のコードの重要性や品質を見極めたうえでレビューを行えば、電卓の結果をそろばんで再計算する必要がなくなるでしょう。