はじめに
この記事は謎の集団 Zenelo Advent Calendarの19日目の記事です。
前日は atom4lightning さんの Webフロントエンドにおける品質の可視化と向上を目指して(エラー監視編) でした。
モブプログラミングをしていく中で、様々な交代のタイミングを経験したので、今回はそれを紹介していきます。
目次
方法1:7分1分制
7分で強制的に終了し、次の1分間で「ドライバーをやってみた感想」「次のドライバーに引き継ぐ内容」などを伝える方法
オススメの現場
- モブプロの体験をとりあえずしてみたい
- ドライバーになることにまだ若干の抵抗感がある
実際に行なっていた場所
メリット
- 1分のインターバルがあるため、そこで考えを整理できる。
- 実況しながら手を動かす、というドライバーの役目に慣れていない人に有効
デメリット
- 1分間のインターバルにナビゲーターが甘えてしまい、7分間のモブプロ時間内に集中しないことがある
方法2:7分制(10分制なども同様)
7分で強制的に終了し、次のドライバーにすぐ交代する方法
オススメの現場
- 参加者全員がモブプロへの意欲がある現場
- 時間内でドライバーを全員に経験させたい現場
実際に行なっていた場所
- モブプログラミングワークショップ in Developers Summit 2018(参加レポート記事)
- モブプログラミング体験会@WACATE(参加レポート記事)
- 認定スクラムデベロッパー研修(公式サイト)
メリット
- モブプロの本質である、みんなで取り組む姿勢が出る
- さらに集中させる方法として、ドライバーが1名、ナビゲーターが1名、オブザーバーがその他全員というやり方もある。
- ドライバー…キーボード操作をする人。ナビゲーターの指示なしで勝手にキーボード操作をしてはいけない
- ナビゲーター…操作を指示する人。
- この方法で行うと、ドライバー以上にナビゲーターの緊張感が高まる。なぜなら、唯一のナビゲーター全ての指示をすることになるので。
- オブザーバー…ナビゲーターが助けを求めた時のみアドバイスをする人。ナビゲーターの代わりに指示をしてはいけない。
- この場合、オブザーバーは基本的に「観察すること」が主業務になる。もしも観察をきちんとしていないと、ナビゲーターになった瞬間に「何をすればいいんだっけ?」となり、ナビゲーターを務められなくなるので。
- さらに集中させる方法として、ドライバーが1名、ナビゲーターが1名、オブザーバーがその他全員というやり方もある。
デメリット
- 中途半端な状態での交代になる可能性がある*1
方法3:1Step制
サイクルの1Stepごとに交代する方法。例えば、TDDにおけるRed -> Green -> Refactoring のそれぞれで交代したり。
オススメの現場
- 区切りの良いタイミングまで1人で行いたい現場
- TDDなどのサイクルを意識させたい現場
実際に行なっていた場所
メリット
- 区切りの良いタイミングでの交代なので、次に何を行うのか分かりやすい
デメリット
- サイクルの1Stepが長い場合、なかなか交代にならないことがある
- 一番よくありえるのは、TDDでなかなかRedからGreenにならないパターン*2
- 次にドライバーになるタイミングが1サイクルよりも大きい場合、そのサイクルが集中できない可能性がある
- 例えば、TDDのサイクルでやっていた場合、次のドライバーになるタイミングが4人目以降だった場合、Red -> Green -> Refactoringの1サイクルでドライバーになれるのは3人だけのため、今回のサイクル内は集中しない可能性がある*3
方法4:我が家方式
コントトリオ「我が家」のように、代わりたいタイミングで「代われ!」と宣言し、ドライバーに自分からなる方法。
オススメの現場
- どのメンバーもモブプログラミングに対して理解があり、かつ意欲的な現場
- ドライバーになることもナビゲーターになることも嫌だと感じていない現場
実際に行なっていた場所
- 実況パワフルモブプログラミング in Developers Summit 2018(参加レポート記事)
- テスト駆動飲み会 - Test Driven Drinking(参加レポート記事)
- 実業務
メリット
- 時間やサイクルに縛られず、自分達が考える区切りの良いタイミングで交代できる
デメリット
- 発言力やスキルに差がありすぎると、ドライバーになる時間の差が大きくなり、そのスキルの差を埋めにくくなる可能性がある*4
おわりに
今回は、今まで経験したモブプログラミングを交代のタイミングに着目して分類分けしてみました。
おそらく、これが正解!というものはなく、チームの成熟度によって変わっていくと思います。
もしもモブプログラミングがうまくいっていないチームがあれば、交代のタイミングについて見直してみるのもいかがでしょうか。
アドベントカレンダーは次の日の yuinchirn さんの 受け入れテスト駆動開発(ATDD)で簡単なiOSアプリを作ってみたにお繋ぎします!