プラクティス名(別名)
モブプログラミング (モブプロ、モブワーク、モビング、モビングセッション)
プラクティスの目的・狙い
- フロー効率の最大化
- チームワーク向上
- チーム学習促進
- 属人化解消
どんな時に使うか
- チームの総力を結集して最短でバグを解消したい時
- プロダクトの核となる重要プログラムを全員で共有したい時
実施手順
- DEV全員が集合し、最初のタイピスト役を決める(他のメンバーはモブ役)
- 全員で同じ画面を見ながら、モブがコーディングの指示を出す
- タイピストは私情を挿まずに、指示通りにタイプすることに徹する
- 10分前後でタイピストを交代する
- 集中力を持続させるために30~60分毎に休憩をとる
全員が同じ作業に従事するのでリソース効率は落ちるが、その分フロー効率が上がるため適切に機能すれば生産性はむしろ高まる。レビュー/承認/コード同期/情報共有といったプロセスが全て不要となるためフローが極めてシンプルになる。自然と「問題vs私たち」の構図が出来上がり、チームの連帯感が生まれる。問題解決も早く、学習効果も高い。
アレンジ例
- 属人化しているプログラムに手を入れる時はモブプロにして、有識者はモブに徹する
アンチパターン
- タイピストが主導権を握ってしまい自分の書きたいようにコードを書き進めてしまう
(=モブが観客化してしまう) - タイマーが鳴った後、区切りのよいところまでやってから交代するルールにする
(=間延びする原因になりやすい)
参考情報
こぼれ話(私的コメント)
ソロ/ペア/モブの使い分けが良く分からないという人のために(というか、そんな僕自身のために)、それぞれの特徴を整理してみました。主観100%ですが、少しでも参考になれば幸いです。
比較観点 | ソロワーク | ペアプロ | モブプロ |
---|---|---|---|
参加人数 | 1人 | 2人 | 3~10人 |
役割 | ー | ドライバ、ナビゲータ | タイピスト、モブ |
目的 | リソース効率を最大化する(手分けして誰もが手を動かしている状態にする) | メンバー間のスキル差/知識差を緩和し、コード品質を一定に保つ(手戻りを減らす) | フロー効率を最大化する(全員の力を結集して最速で仕上げる) |
メリット | ①自分のペースで仕事ができる ②個人毎の生産性が分かりやすい | ①間違いを減らせる ②相談しやすい ③互いに当事者意識を持てる ④スキルアップにつながる | ①共通認識とチーム意識の醸成 ②多角的なチェック ③迅速な問題解決 ④レビューがいらない |
デメリット | ①品質が個人依存 ②第三者チェックが必要 ③行き詰まりやすい ④属人化しやすい ⑤個人主義に陥りやすい | ①1on1に緊張してしまう人もいる ②ペアの相性で生産性が変わる ③ペアのローテーションを考える手間 | ①人数が増えると発言機会が減る ②傍観者になってしまう人がでる ③意見が分かれると時間がかかることも ④全員のスケジュール調整が必要 |
適用対象 | 誰でも簡単にこなせる単純なもの、相談する必要がないもの | 考えながら進めた方がいいある程度複雑なもの、スキトラしたいもの | 緊急度や重要度が高く、注意力を要するもの(緊急障害対応や最重要機能など) |