コードレビューは少人数の優秀な人にまかせると負担が偏り、全員がやってオッケーというルールにするとクオリティーの低いコードがアウトプットされるリスクがあります。みなさんのチームや会社ではコードレビューにおいてどのようなルールを設けていますか?
この質問への回答 4件
相談室回答者
こんにちはhakといいます。就職、キャリアなどでお役に立てたらと思い登録させていただきました。 仕事としてはゲームプラットフォームや携帯電話のエンジニアリングを中心にしています。海外での就職、転職なども経験ありますのである程度ご相談に乗れるかと思います。 趣味は、ゲーム、SF、映画等です。面白い本、映画などありましたら是非おすすめ下さい。 なお。ご相談にあたりましては特定の会社についてのご質問等はお答えしにくい面もありますので、ご了承ください。
こんにちは、ご質問ありがとうございます。
ご質問の点について自分の経験としては明快で、良いアウトプットの出ているチームにおいては、「力ある方」すなわちTechLead(TL)に値いする方に、まずは全ての負荷を集中させることが良いかと思います。優れたTLは誰よりも深くコードベースを理解し、押し寄せる全てのコードレビューを右から左に千切っては投げ、千切っては投げ、そして誰よりも品質の高いコードを書くという超人的な働きが期待されます。であるからこそ、TLはチームメンバーからの敬意をあつめ、同時に働きに見合った報酬を受け取るのではと考えています。
また、TLに求められる(心理的に)重要な要素として、無私の奉仕の精神、自分の能力を惜しみなく他者に与えることが挙げられます。全てのコードレビューをTLが行うのは相当な負荷ではありますが、それを通じてTLの経験、コーディングに対するノウハウがチームメンバーに共有されて行きます。やがて、一定の期間が経てばチーム内で別のメンバーにコードレビューを持ち回りする等、良いチーム文化が醸成されていく事が期待できるかと思います。
実務的な面からは、
・CLの粒度をできるだけ小さくする
・コメントや補足をできるだけ詳しくしCLの意図を明確にする
・(面倒ではありますが)UnitTestも同時に書いてリグレッションをできるだけ減らす
など、レビュアーの負荷を減らす方向性でのルール作りというのも生産的かと思います。
回答日:2020/12/28
相談室回答者
ソフトウェア研究/開発をしています(9年、3社目)。アメリカ勤務。主にバックエンド、マイクロサービス、NLPなんかをやっています。2人の子供と犬がいます。ソフトウェア開発、ワークライフバランス、プライベートやその他なんでもどうぞ。
私のいたチームではあまり厳密なルールを決めていたことはありません、基本的には1つのプロジェクトを担当している人が複数人いるはずなのでその中で持ち回りでやること、コードレビューについてもメトリクスを取って(どのくらい時間が掛かっているか、人に偏りが出ていないか)定期的にレビューする時間を取って、問題があるなら少しずつやり方を変えていく、というようなことをしていました。
回答日:2021/01/14
相談室回答者
京都大学博士(情報学)、さくらインターネット研究所上級研究員、ペパボ研究所客員研究員、Forkwell技術顧問、ネットフォレスト技術顧問、情報処理学会各種委員、ITRC各種委員。第9回日本OSS奨励賞や2014年度情報処理学会山下記念研究賞など、その他受賞多数。2016年に情報処理学会IPSJ-ONEにおいて時流に乗る日本の若手トップ研究者19名に選出される。実績やキャリアの詳細は以下。 http://research.matsumoto-r.jp/
コードレビューに限らないのですが、優秀な人が周りの教育をするということが大事だと思います。また、コードレビューにおけるガイドラインを設定したり、レビューで指摘されることで定型化できることはドキュメント化した上で、なかなか定型化の難しい内容について、定期的に振り返りなどを行いながら、コーディングおよびレビューの教育を行なっていくと良いと思います。
また、指摘されたことについて、指摘された側がその時だけ直して、また忘れてしまって同じことを繰り返し指摘されることもよくありますので、そういった内容を定期的に振り返ったり、レビューされる側が実際に意識できるように指摘されたことのまとめをアウトプットして定着させていくことも大事だと思います。
回答日:2021/01/14
相談室回答者
BuySell Technologies 取締役CTO / ヤフー→VASILY 創業&取締役CTO→ZOZOに売却→ZOZOテクノロジーズ執行役員CTO→現職/CTO歴12年/日本一のイベント情報サイト「イベンターノート」の代表&開発者/エンジニア
うちの社内でもチームによってルールは様々です。
ただ、コードレビューのそもそもの意味を考えると、低いコードがアウトプットされることは事故を生み出しますし、元も子もない状態になるので、ある程度コードが見れる経験者に見てもらうほうがよいとは思います。
優秀な人にかたよってしまって、全体のスピードが落ちてると感じる場合は、メンバーレベルだとしても二人以上OKにしないとマージできないとか、そういうふうにして品質とスピードを保つ工夫はした方がいいと思います。
回答日:2021/01/03