Open6
ペアプロ・モブプロ
- 1つのモニタ・マシン・キーボードを使う
ロール
- ドライバー - キーボードの前にいてコードを書き進める人
- ナビゲータ - ドライバーの隣に座り、ドライバーと会話しながら導く人
効果
- 常にリアルタイムでコードレビューが行われる
- 常にみはられている緊張感
- 発話による思考整理
- コードの可読性・保守性の向上
- 読みにくく意図のくみとりにくいコードにはすぐに質問がされる
- 書き終えたコードの指摘は気分がいいものではないが、書き終える前に指摘され良いコードにしていくのは気分がいいもの
- Four Eyes ミスが入りにくい
- 知識と学びの共有
- 結果ではなく過程を共有する
- コードの共有所有ができるため、属人性が減る
- 暗黙知の共有、設計判断の勘所やバグの原因究明の方法
GitHub時代のボトルネック
- ボトルネック: PRのレビュー
- 手戻り: PRの差し戻し
- 在庫: レビュー待ちのPR
レビューを減らすために……
- ベテランはコードを書くのをやめ、レビュー専念する
- 本来、コードを書くことで最も価値を提供できるベテランがコードを書けなくなる
- レビュー速度を上げるために、一つ一つのレビュー時間を減らす
- 簡略化により広く深い指摘ができなくなる
WIP PR
PRの差し戻しを減らすために、コードを書く前に設計段階からの生煮えの状態で複数のレビューを受ける。大きな手戻りを防ぐ
WIP PRはレビュー時間を短くすると言われているが、レビューのコンテキストスイッチが伴う、コメントのやり取りが増えるので数が増えると効率は落ちる
PR数である在庫も減らない
進め方
- コードを書く前に方向づけを行う
- 最終目標を決める
- 新規開発であれば実装の一区切り、バグであれば修正まで
- 二時間で到達できそうなライン
- ToDoで小さな作業項目を書き出す、粒度は揃ってなくてよく、都度更新する
- コードを書きながら会話し、考えを共有する
- 今考えていること、迷っている設計判断をしゃべることで共有
- ロールを交代する
- 時間で交代、15分くらいが一般的
- ステップで交代する
- 自由に交代する
- ロール交代で休憩やふりかえり