他人や自分など「ヒト」ではなく「コト」に向かうコードレビューについて考えてみる。
参考:「コトに向かう」について => DeNA南場智子さんの講演「ことに向かう力」がいい話だった|narumi
(本来の「コトに向かう」話とそれほど親和性のある話ではない気はしつつも、響きがいいので借用しています)
このコードは良くないなと思ったとき
- 「ヒト」に向かうコードレビュー
- 「なんであなたはこんなコードを書いたの?」
- 原因の中心を個人のスキル不足に置く見方
- わかっていないあなた vs わかっている私たち の構図になる
- 「コト」に向かうコードレビュー
- 「なんでわれわれのコードベースはこんなコードが書けてしまうんだ?」
- 原因の中心を環境(コードベース)のサポート不足に置く見方
- 問題 vs 私たち の構図になる
コードレビューが「ヒト」に向かわないために
レビュイーができること
- 全力を尽くす
- コードレビューは頭と時間を使う大変な仕事
- 大変な仕事を自分のためにやってくれる同僚の時間を、せめて有意義にできることは全部やる
- やる気の感じられない手抜きのコードに真剣に向き合うほどレビュアーも暇ではない
- 見直したらすぐ気づくようなミスを残さない
- 今の自分が出せる最高傑作だと思えるまでリファクタリングする
- 成長(変化)を見せる
- 指摘されたことはただ直すだけじゃなく、理由を理解する
- 同じことを繰り返さないよう、本やドキュメントを調べるなどして勉強する
- それでもわからなかったらメンバーに聞いて教えてもらう
- 前回からの成長が感じられれば、レビュアーの苦労が報われる
- 指摘されたことはただ直すだけじゃなく、理由を理解する
- レビューしやすく工夫する
- レビュアーも疲れてイライラしていると「ヒト」に向かいやすいので、レビューしやすいプルリクエストにする
- 粒度を小さくするとか
- タイトルで意図を明確にするとか
- 調べればいろんなノウハウは出てくるので、これも全力を尽くす
レビュアーができること
- 全力を尽くしていることを疑わない
- ハンロンの剃刀
- 「確かにこういうコードも書けうるな」と考えてみる
- 「確かに、真似してほしくなかったが似たようなコードがすでにあるな」とか
- 「確かに、既存のコードの再利用性が低くて自前で書きたくなるな」とか
- 発生しうることは発生する(マーフィーの法則)
- 起きてほしくないことは、起こりえないようにするしか防ぐ方法はない
- 先を見通して先手を打つのは、先が見えている人の役目
- そのためのアーキテクチャ、設計、制約
この記事はClassiの社内ブログに書いたものの転記です。