Marginalia

コトに向かうコードレビュー

他人や自分など「ヒト」ではなく「コト」に向かうコードレビューについて考えてみる。

参考:「コトに向かう」について => DeNA南場智子さんの講演「ことに向かう力」がいい話だった|narumi

(本来の「コトに向かう」話とそれほど親和性のある話ではない気はしつつも、響きがいいので借用しています)

このコードは良くないなと思ったとき

  • 「ヒト」に向かうコードレビュー
    • 「なんであなたはこんなコードを書いたの?」
    • 原因の中心を個人のスキル不足に置く見方
    • わかっていないあなた vs わかっている私たち の構図になる
  • 「コト」に向かうコードレビュー
    • 「なんでわれわれのコードベースはこんなコードが書けてしまうんだ?」
    • 原因の中心を環境(コードベース)のサポート不足に置く見方
    • 問題 vs 私たち の構図になる

コードレビューが「ヒト」に向かわないために

レビュイーができること

  • 全力を尽くす
    • コードレビューは頭と時間を使う大変な仕事
    • 大変な仕事を自分のためにやってくれる同僚の時間を、せめて有意義にできることは全部やる
      • やる気の感じられない手抜きのコードに真剣に向き合うほどレビュアーも暇ではない
    • 見直したらすぐ気づくようなミスを残さない
    • 今の自分が出せる最高傑作だと思えるまでリファクタリングする
  • 成長(変化)を見せる
    • 指摘されたことはただ直すだけじゃなく、理由を理解する
      • 同じことを繰り返さないよう、本やドキュメントを調べるなどして勉強する
      • それでもわからなかったらメンバーに聞いて教えてもらう
      • 前回からの成長が感じられれば、レビュアーの苦労が報われる
  • レビューしやすく工夫する
    • レビュアーも疲れてイライラしていると「ヒト」に向かいやすいので、レビューしやすいプルリクエストにする
    • 粒度を小さくするとか
    • タイトルで意図を明確にするとか
    • 調べればいろんなノウハウは出てくるので、これも全力を尽くす

レビュアーができること

  • 全力を尽くしていることを疑わない
    • ハンロンの剃刀
  • 「確かにこういうコードも書けうるな」と考えてみる
    • 「確かに、真似してほしくなかったが似たようなコードがすでにあるな」とか
    • 「確かに、既存のコードの再利用性が低くて自前で書きたくなるな」とか
    • 発生しうることは発生する(マーフィーの法則)
      • 起きてほしくないことは、起こりえないようにするしか防ぐ方法はない
      • 先を見通して先手を打つのは、先が見えている人の役目
      • そのためのアーキテクチャ、設計、制約

この記事はClassiの社内ブログに書いたものの転記です。