コードもあんたも最低だ: コードレビューの社会動学
Your Code Sucks and I Hate You: The Social Dynamics of Code Reviews
Twistedを開発するDivmod, Inc.のJonathan Lange氏がOSDC Sydney 2008で行った発表の資料が公開された。「Your Code Sucks and I Hate You: The Social Dynamics of Code Reviews」というタイトルでコードレビューにおける人間同士の関わりとその影響をまとめた内容になっており、オープンソースプロジェクトに限らず、企業内でのコードレビューにおいても考慮すべき点が色々と解説されている。
翻訳しようとして挫けたので、とりあえず見出しだけ日本語で書き出してみた。
- コードレビューとは何か? (What is a code review?)
- レビューで達成できること (What can reviews achieve?)
- 規則への準拠 (Enforcing conformity)
- 品質の確保 (Ensuring quality)
- 明確さの向上 (Enhancing clarity)
- レビュアーの教育 (Educating reviewers)
- 優先度の調整 (Balancing priorities)
- 優れたプログラマの育成 (Making better programmers)
- 結論 (Summary)
- 決定 (Decisions)
- 誰がレビュアーとなるか? (Who are the reviewers?)
- どこで行うか? (Which forum?)
- リアルタイムに行うか、オフラインで行うか? (Real-time or offline?)
- 誰が議論を解決するのか? (Who resolves disputes?)
- 悪いこと (Bad things)
- 人格攻撃 (Ad hominem)
- はっきりしない結論 (Unclear Outcomes)
- 個人的嗜好と客観的価値の混同 (Confusing personal preference with objective worth)
- あなたがいる間に… (While you’re there…)
- 進行妨害 (Filibustering)
- 良いこと (Good things)
- 詳細なフィードバックは良いフィードバック (Specific feedback is good feedback)
- 迅速なフィードバックは良いフィードバック (Fast feedback is good feedback)
- ベターは良い、完璧は不可能 (Better is better, perfect is impossible)
- 感謝せよ (Be thankful)
- 質問せよ (Ask questions)
- まとめ (Conclusion)
わりと平易な英語で書かれているので、見出しを見て気になったところを読んでもらうだけでも得るものがあると思う。タイトル通り、コードレビューで生じる軋轢を避けるための心得が中心で、そのスタンスは以下のまとめにもあらわれている。
Code reviews provide an amazing opportunity to grow as a programmer and to improve the software we make. There are many choices that a project can make about how reviews are done and what they can achieve. By thinking carefully about how technologies and processes affect the basic human interactions involved in code review, open source projects can avoid traps that scare off newcomers or wear down longstanding contributors and instead focus on building the best software possible.
コードレビューは、プログラマとしての成長とソフトウェアの改善という素晴らしい機会をもたらしてくれる。プロジェクトがどのようにレビューを行い、何を達成するのかについては多くの選択肢がある。テクノロジーとプロセスがコードレビューによる人間同士の交流に対してどのような影響を及ぼすかについて注意深く考えることで、オープンソースプロジェクトは新参者を恐れさせたり古参コントリビューターを参らせてしまう罠を避けることができ、ベストなソフトウェアを構築することに集中することができる。

