Re: Pull Request レビューの限界
はじめに
読んで色々と思うところがあったのでアンサーソングです。
tl;dr;
レビューはバグを見つけるための門番では無く、コード品質をよくするための仕組み。Pull Requestの形式にこだわる必要はない。
Pull Requestの位置付け
「目を皿のようにしてバグがないか、ロジックを追う」コードレビューをしてくれる人がよくいますが、レビューでバグを見つけるのはコストが高いと思っています*1。またレビューでバグが見つけられるエンジニアは開発力が高い人となり人数も限られます。その人にレビューが集中すると負荷が高まり、徐々に門番化していくことは避けられないでしょう。
バグがないか検証したいのであればテストをきちんと書くべきです。仮にテストが書きにくい箇所があったとしても開発者がきちんと動作確認を行うべきです。
レビューの目的はバグを見つけることではありません。 私は「開発者個人の責任から、開発チーム共同責任にする」ための儀式だと考えています。
自分がメンバーにお願いしていること
開発部門のマネージャーとして、上記の文化を醸成するためにメンバーにはこんなお願いをしています。
- わからなくてもコードをレビューして欲しい。
- レビューしたらなんらかの反応を残して欲しい。
- 良いねでも、勉強になりましたでも、LGTMでもいい。
- 読みにくいコードがあれば読みにくいとコメントして欲しい。
- わからなければそのまま「この箇所がよくわかりませんでした」と書いて欲しい。
- コメントでのやりとりが続いたら直接話して欲しい。PR上でのレスバトルは不毛
- 自動アサインするとその人しか見なくなるのでアサインは意図的につけない。
- 「人のPRをレビューしてないな」と感じる人がいたらマネージャーとして1on1でレビューするように促す。
Pull Requestレビューは必要か?
プロダクトのリリース前にレビューがなされるのであれば直接git push master
した後にレビューを行う形式でもよいと思っています。
個人的にはトランクベース開発の方が好みだし、実際にうまくいった開発現場も経験したことがあります。
コードの設計議論はコードを書き始める前にメンバーと同意を取っておいた方が良いです。 ホワイトボードなり紙なり簡単な方法で詳細を詰めておくべきです。 コードを書き終わってから設計のまずさが指摘されるのは、OSSの開発プロセスに憧れすぎた人の過ちではないかと思っています。
*1:この形式のレビューがダメという主張はないです。全員がこうするべきとは思っていないだけです