はじめに
電子レビューや静的レビューが主流の昨今ですが、我々の案件では毎日1時間集まって発表者のコードや成果物をモニターに映して会議レビューしています。なんとなくですが集合レビューと呼ばれています。
目的:ノウハウの共有、品質の保証、その場で質問、など
はじめに
今回は、集合レビューを1年間行ってきて感じた
レビューのアンチパターン
を紹介します。
なお、ネットの参考記事をベースにした私の主観です。
Let's start!
1. 審査員形式
おそらく最悪の例
- 複数のレビュアーが辛口審査員のように振る舞う
- 発表者のコードを攻撃的に批判する
→発表者のメンタルを壊し、鬱憤とやる気の低下が残る
2. 持久戦
1番より若干マシだが悪い例
- やたらと長い、予定を超過する
- 最初はやる気があっても、時間が経つと疲れる
- 発表者もレビュアーも、時間が経つにつれ不注意になる
- でも決めた予定だから、と最後までやる
→体力を吸われ、レビューの精度も低くなる
→充実感を伴って終わり、本質的な問題に気づかない
3. 行き当たりばったり
人数が増えれば起こりがち
- レビュアーの評価に一貫性がない
- グローバル変数を、ある日は禁止し、別の日は許可する
- レビュアーが誰かによって大きな差がある
- 同じ指摘が2度と行われない
- 同じ問題が見つかったとしても…
→発表者が理不尽さを感じ、鬱憤とやる気の低下が残る
→チェック漏れが多発する
→とはいえ完璧な一貫性なんて実現不可能なので、Tryと改善が必要
4. 試験である
知識が浅い人やニューフェイスがいると起こりがち
- レビューの最後に「合格」「不合格」みたいな用語が飛び交う
- タイプミスや改善点を見つけて指摘することを、失敗の通達と捉えている
→何かを書いて校正を頼むのは、本来試験ではない
→試験形式になると、発表者のやる気を損ない、メンバーの協調的な和を乱す
→試験に合格したり、コードを良く見せることが発表者の目的となる
→「ユーザー満足度の高いソフトウェアにしたい」みたいな開発の本質からかけ離れる
5. 意識高い系レビュアー
4番に似ている
- 指摘に具体的な修正指示が含まれていない
- 「もっとドメインを意識して書き直して下さい」
- 「これはサービスクラスでやる仕事じゃないです」
- 「この(クラス名|関数名|変数名)の責務がわかりません」
→発表者なりの考えがあったり、頑張って書いた成果物なので、突き放すのは良くない
→具体的な修正指示や例を出したほうがよい
→でも、答えをそのまま教えれば良いとも限らない。あくまで「例」を示す
→自分で考えたり、答えをネットや本で見つけるほうが、スキルアップやモチベーションに繋がる(と私は思っている)
6. 独裁の場である
知識が深すぎる人、大ベテラン、悪意ある人などがいると起こりがち
- 誰か1人が絶対的な権力者となり、レビューを支配している
- レビューは、権力者のご機嫌取りと
カス化す
→権力者なしで意思決定できないチームになっていく
→開発者のキャリアアップを妨げ、成果も上がらない
7. 論点がズレている
几帳面な性格の人がいると起こりがち
- ソフトウェアの出荷には重要でない、コーディングの細かい部分ばかり言及される
- 命名規則とか。ある程度大事だけどそこばかり見ちゃダメ
- 自動レビューで賄える箇所を、手動で頑張ってチェックしてる
→重要なものを見逃すか、時間を浪費し持久戦と化してしまう
→人の目で見て考えるからこそ意味のあることに集中しよう(ソフトウェアの品質に満足しているか?改善の優先順位は?みたいな)
8. 一方通行
レビュアーのコードを誰もレビューしないパターン
- 上下関係があり、若手が先輩のコードをレビューしない
- 一番上の人が自分のコードをアンレビューでマージする
→経験が浅い人だからこそ、他の人に無い観点で問題に気づくことがある
→意外と、レビュアーのコードがクソなこともある
→互いの立場を理解するほうが、チーム内の雰囲気が良くなる
→若手が予期しない不具合を見つけてくれることも多く、有益である
最後に
コードレビューは試験や戦闘の場ではなく、「ソフトウェアをより良くしたい」という、同じ目的を持つ仲間たちによる、協力的かつ自発的なセッションです。
経験の差、役職の差が多少あるとしても、全員の意見が重要で、相互Respectがあり、発表者が積極的に助言を求めに行くような環境作りが大事です。
参考
https://dzone.com/articles/manual-code-review-anti-patterns
https://medium.com/@laqiiz/%E3%82%B3%E3%83%BC%E3%83%89%E3%83%AC%E3%83%93%E3%83%A5%E3%83%BC%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%83%AC%E3%83%93%E3%83%A5%E3%82%A2%E3%83%BC%E5%81%B4%E3%81%AE%E3%82%A2%E3%83%B3%E3%83%81%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3-effdcc39da52
https://smartbear.com/blog/collaborate/do-code-review-meetings-still-make-sense-in-2019/