Open6

ペアプロ・モブプロ

hbsnowhbsnow

ロール

  • ドライバー - キーボードの前にいてコードを書き進める人
  • ナビゲータ - ドライバーの隣に座り、ドライバーと会話しながら導く人
hbsnowhbsnow

効果

  • 常にリアルタイムでコードレビューが行われる
  • 常にみはられている緊張感
  • 発話による思考整理
  • コードの可読性・保守性の向上
    • 読みにくく意図のくみとりにくいコードにはすぐに質問がされる
    • 書き終えたコードの指摘は気分がいいものではないが、書き終える前に指摘され良いコードにしていくのは気分がいいもの
  • Four Eyes ミスが入りにくい
  • 知識と学びの共有
  • 結果ではなく過程を共有する
  • コードの共有所有ができるため、属人性が減る
  • 暗黙知の共有、設計判断の勘所やバグの原因究明の方法
hbsnowhbsnow

GitHub時代のボトルネック

  • ボトルネック: PRのレビュー
  • 手戻り: PRの差し戻し
  • 在庫: レビュー待ちのPR

レビューを減らすために……

  • ベテランはコードを書くのをやめ、レビュー専念する
    • 本来、コードを書くことで最も価値を提供できるベテランがコードを書けなくなる
  • レビュー速度を上げるために、一つ一つのレビュー時間を減らす
    • 簡略化により広く深い指摘ができなくなる
hbsnowhbsnow

WIP PR

PRの差し戻しを減らすために、コードを書く前に設計段階からの生煮えの状態で複数のレビューを受ける。大きな手戻りを防ぐ

WIP PRはレビュー時間を短くすると言われているが、レビューのコンテキストスイッチが伴う、コメントのやり取りが増えるので数が増えると効率は落ちる

PR数である在庫も減らない

hbsnowhbsnow

進め方

  • コードを書く前に方向づけを行う
    • 最終目標を決める
    • 新規開発であれば実装の一区切り、バグであれば修正まで
    • 二時間で到達できそうなライン
      • ToDoで小さな作業項目を書き出す、粒度は揃ってなくてよく、都度更新する
  • コードを書きながら会話し、考えを共有する
    • 今考えていること、迷っている設計判断をしゃべることで共有
  • ロールを交代する
    • 時間で交代、15分くらいが一般的
    • ステップで交代する
    • 自由に交代する
    • ロール交代で休憩やふりかえり