コードレビューは技術的な品質保証のプロセスだが、同時にエンジニアのメンタルヘルスに最も影響を与えるイベントでもある。丁寧に書いたコードに「なぜこの設計にしたのか理解できない」とコメントがつくと、技術力ではなく人格を否定されたように感じてしまう。
コードレビューがストレスになる理由
| 理由 | 心理的メカニズム |
|---|---|
| コードと自己の同一化 | 自分のコード=自分の能力と感じてしまう |
| 非同期コミュニケーションの限界 | テキストでは「トーン」が伝わらず、攻撃的に読めてしまう |
| 公開の場でのフィードバック | 他のメンバーも見ている中での指摘は恥ずかしさを伴う |
| 権力の非対称性 | シニアからの指摘は「命令」に感じやすい |
最も根本的な問題は「コードと自己の同一化」だ。コードを書くことに時間とエネルギーを注いだ分だけ、そのコードへの批判が個人攻撃のように感じられる。しかし、コードレビューの対象は「コード」であって「あなた」ではない。この分離ができるかどうかが、レビューへの耐性を決める。
レビューを受ける側(レビュイー)の心得
| 心得 | 具体的な実践 |
|---|---|
| コード=自分ではない | 「私のコード」ではなく「このコード」と呼ぶ |
| すべてのコメントは改善の機会 | 批判ではなく[学習](/tag/learning)のチャンスとして受け止める |
| 意図が不明なら質問する | 「攻撃された」と感じたら、まず意図を確認する |
| 感情的に反応しない | コメントを読んで感情が動いたら、30分置いてから返信する |
| 感謝を伝える | 良い指摘には「いい気づきですね」と返す |
レビューをする側(レビュアー)の心得
| 心得 | 具体例 |
|---|---|
| 人ではなくコードに言及する | × 「あなたはここを間違えている」 → ○ 「このロジックは〇〇の場合に対応できないかもしれません」 |
| 提案の形で書く | × 「この書き方はダメ」 → ○ 「〇〇の方がパフォーマンスが良いかもしれません。いかがでしょう?」 |
| 良い部分も指摘する | 「このリファクタリングは読みやすくなっていて良いですね」 |
| 優先度を明示する | [must] [nit] [question] のプレフィックスを使う |
チームとしての健全なレビュー文化
健全なコードレビュー文化を作るには、チーム全体でのルール設定が有効だ。
まず「レビューの目的」を明確にする。バグの発見、コードの一貫性維持、知識の共有——何を目的としたレビューなのかが明確であれば、コメントの方向性もブレにくい。
次に「コンベンション(慣例)」を決める。プレフィックスの使い方([must]は修正必須、[nit]は些末な提案、[question]は質問)、返信の期限(24時間以内)、Approveの基準([must]が全て解消されたらApprove)。これらのルールがあると、レビューの属人性が減り、感情的な摩擦も少なくなる。
コードレビューは「批判のプロセス」ではなく「協力のプロセス」だ。チーム全員のコードの品質を上げるための共同作業。この視点をチーム全体で共有できたとき、コードレビューは成長の最も強力なエンジンになる。あなたのチームのレビュー文化は、安心してコードを出せる環境になっているだろうか。
