14
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

クソレビューを防ごう(レビューのアンチパターン集・社内勉強会向け)

Last updated at Posted at 2019-09-11

はじめに

電子レビューや静的レビューが主流の昨今ですが、我々の案件では毎日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/

14
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?