こんにちは。
コードレビューにおいて若手や経験豊富はあまり気にせず、レビューという役割をこなすことに集中すれば良いです。
レビューをちゃんとやっていれば自然と自分のスキルになるので、あえて学習を意識する必要はありません。
が、その学習を加速したい意図だとすると、チーム内でレビューの際に今すぐ始められる有用なテクニックとして、
問題点の指摘をするだけではなく、分からないこと、気になったことや確認したいこと、自分ならこうするかも、みたいなものをバンバン質問コメントとしてレビューに書き込むと良いです。
質問をして、答えてもらうことで、その考えを知ることができたり、あるいはそれが誤りだったことが判明したりするので、やって損することはほぼ無いです。
経験が浅い若手が読んでよく分からないコードがあったら、それはコードの側に問題がある可能性が高いです。「自分が理解できない」というのはそれ自体がレビューとして有用な指摘と言えます。
コードの品質は上がり、自分はコードの詳細やコーディングの考え方などの出力結果からは読み取れない知識を得ることができるので、一石二鳥です。
これくらいしか書くことがないので、以下に自分のコードレビュー哲学みたいなものを適当に書いておきます。
コードレビューを行うときにまず確認する点は、コードの修正ではありません。
「既存コードにどのような問題があったのか」「この修正を行う理由 (目的) は何か」「修正を適用すると何が変わるのか」「その修正後に問題がどうなっていることを目指すものか」を全て調べるところから始めます。
AI を使っているなら既に理解していると思いますが、コードの変更、修正を行う際に最も重要になるのは「コンテキストへの理解」です。
これらはレビュー対象のコード修正を見るだけではほぼ分からず、仮に PR にチケットやコメントが付けてあったとしても、これらの情報を全て得られることは稀です。
誰が、何を、何のために、どのようにやったのか、全て理解していれば、コード変更自体のレビューは AI 任せでも最低限の品質は確保できていたりします。
つまり、そこに辿り着くことこそが、コードレビューなのです。
AI 任せというのは、AI に任せるべき内容をちゃんと自分が理解しているという前提で任せるものなので、上記をすっ飛ばして AI にレビューさせた内容は、最低限の品質を満たしません。
コードレビューに AI を用いない場合は、その理解したコンテキストが正しくコード変更に翻訳されていることを確認するという作業になります。
こう書くと、それこそ AI に任せられる作業であることが分かると思います。
稀によくあるのは、ロジックとしては全く正しいが、セキュリティや負債方面でリスキーなコード変更が含まれるケースで、これらは AI に注目させるのはやや難しいようなので、自己のノウハウと目視で見つけるしかないです。
このため、AI に丸投げするよりは一通りは自分でも確認した方が良いわけですね。
一例として、一箇所に if 文とちょっとした処理が追加された PR があったとします。
低品質なレビュアーは、if の条件式の内容、ブロックの処理内容に問題ないことを確認して Approve を出しますが、これはレビューとは呼べません。
まず、何故この if が必要になったのか、この if が追加されたとき何が変わるのか、どの程度の範囲で処理に変化が発生するのか、if を追加した後の振る舞いは期待する通りのものなのか、そもそも if を書く場所はここでいいのか、そもそも if でやるべき内容なのか。全部周囲から見るのです。
もちろん、これらの調査にも AI は活用できるので、AI が使えるなら無限に使ってください。
これらを全てこなすと、その時点で大体レビューと言える内容になります。この if の内容はそれらの意図が正しく実装されているのか、それらの意図が自然と読み取れるような記述になっているのか、というのはほぼ後処理です。
AI 時代のコードレビューは、どれだけ AI に正確なコンテキストを渡せるかが鍵なので、眼の前に現れたコード差分に対するコンテキストの理解を正確にすることこそがコードレビューであると考えています。