モブプロとソロプロの生産性を比較してみた

この記事は移行しました！[最新の内容はこちら](https://naoqoo2.github.io/blog/%E3%83%A2%E3%83%96%E3%83%97%E3%83%AD%E3%81%A8%E3%82%BD%E3%83%AD%E3%83%97%E3%83%AD%E3%81%AE%E7%94%9F%E7%94%A3%E6%80%A7%E3%82%92%E6%AF%94%E8%BC%83%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F/)をご覧ください😀

この記事は [モブプログラミング Advent Calendar 2018](https://qiita.com/advent-calendar/2018/mobprogramming) 14日目の記事です。
もっと読みたい！という方は[去年のカレンダー](https://qiita.com/advent-calendar/2017/mob)も是非どうぞ。

## はじめに

モブプロをすると必ず「生産性悪そう」という声が聞こえてきます。
体験してみると「効率悪くない！むしろ良い！」と思えるのですが、証明するための根拠がない。。
そこで今回、ソロプロ（いつもの分担作業）との比較を行ってみました！

## 検証方法

チームでモブプロとソロプロをそれぞれ複数回行い、制限時間内にどれだけのタスクを消化できるかを比較しました。

### 開発フロー

実装 → コミット → プルリク → レビュー → マージ です。一般的ですね。
モブプロでもソロプロでも同じです。違いはみんなでやるか、各自でやるかだけ。

### チーム

下記3名構成のチームで検証しました。
結成して3ヶ月、普段はソロプロたまにペアプロといった感じです。

- 新人（1年目）
- 中堅（4年目）
- ベテラン（10年戦士。私）

### タスク

タスクはプランニングポーカーを使ってメンバー全員で見積もっています。

着手するタスクの選定は、公平を期すためにもモブ用、ソロ用といった選別は行わず、その時の優先度の高い順から着手しています。

### Doneの定義

マージするまでです。

実装途中やレビュー中で制限時間が来てしまった場合、そのタスクは0ポイントとして加算しません。終わってないので。

## 検証結果

お待ちかねの検証結果です。

数日間に分けて計測し、下記の様になりました。

|  |  | モブプロ |  | ソロプロ |
| :------: | ------: | ------: | ------: | ------: |
| **実施日** | **時間** | **消化タスク** | **時間** | **消化タスク** |
|  1日目 | 6h | 14.5pt |  |  |
|  2日目 | 3h | 9pt |  |  |
|  3日目 |  |  | 3h | 6pt |
|  4日目 | 3h | 12pt |  |  |
|  5日目 | 2h | 9pt | 2h | 4pt |
|  6日目 | 3h | 5.5pt | 3h | 7.5pt |
|  **合計** | 17h | 50pt | 8h | 17.5pt |
|  **1時間あたり** |  | **2.94pt** |  | **2.19pt** |

※2日目と6日目はリモート

実施時間がバラバラで比較にならないじゃねーかという声もあるかと思いますが、せっかく計測したので全データ載せてます。

1時間あたりの平均消化タスクは**モブプロ：ソロプロ＝2.94pt：2.19pt**となり、**モブプロのほうが約1.3倍タスクを消化できた**という結果となりました。

## 考察１：モブプロとソロプロの違い

開発フローの中でプルリクとレビューにかかる時間が決定的に違いました。
いわゆる同期の時間ですね。


- プルリク
    - ソロ：仕様を知らない人にも理解してもらうために、わかりやすく丁寧に書く。故に時間がかかる。
    - モブ：全員理解しているので説明不要（コミットログだけでOK）。ボタンポチで完成。

- レビュー
    - ソロ：複雑な仕様だと読み解くだけで時間がかかる。指摘や修正、時には大きな手戻りが発生したりする。
    - モブ：一応全員で行う。見つかるのはコメント忘れなど軽微な修正のみ。ほぼ承認ポチ。

今回の結果でいうと、分担作業のメリットをモブプロが上回ったということになります。

## 考察２：モブプロの3つの利点

比較したことて改めて気づいた利点が3つあります。

### レビューのつらみがない

ソロプロでよくあるレビューのつらみがありません。

- プルリク書くのが億劫（レビューイ）
- 数日待たないとレビューしてくれない（レビューイ）
- プルリクの説明がよくわからない（レビュアー）
- 無駄な処理やバグがある（レビュアー）
- 変数名や関数名がイケてない（レビュアー）
- 大どんでん返しな指摘をする必要がある...（レビュアー）
- 指摘内容がよくわからない（レビューイ）
- 今更そんな指摘されても...もっと早く言ってほしかった（レビューイ）

レビューは、する側もされる側も精神的にやられることがあるので、個人的には少しでもレビューが必要なタスクならモブプロしようぜって感じです。

### 確実に前進する

ソロプロでは上記のようにレビューで待ちや手戻りが発生する可能性があります。

数日かけて実装したコードがレビューで根本的な指摘を受けて、イチから実装し直さなければならなくなったなんて事、みなさん一度や二度、というか何度も経験してきているのではないでしょうか。昨日まで進捗80%だったものが突然0%になるのです。

これは実装に限った話ではなく、ドキュメント作成だったりもそうですね。イメージと違うとか。字が小さすぎて読めない！とか。ソロプロ（分担作業）にはこうしたリスクが常にあります。

モブプロは待ちや手戻りは発生しないので日々確実に前進します。

### パーキンソンの法則にかからない

パーキンソンの法則とは「仕事の量は、完成のために与えられた時間をすべて満たすまで膨張する」というあれです。

ソロプロでは、（サボっているわけではありませんが）

- 無意識にゆっくりやってしまったり
- 調べものをしてみたり
- slackやメールをチェックしてみたり

して見積もり時間を使い切ってしまうことが多いです。（サボっているわけではありません）

モブプロはみんなに見られているからなのか、集中力は100%。常に全員で最良、最速を目指します。気づいたらタスクが終わり、そしてすぐに次のタスクへ着手、となるのでサボっている暇がありません。

例えるなら、徒競走はたまに手を抜くけど、リレーは常に全力って感じでしょうか。...違うか。

## おわりに

今回はモブプロのほうが良い結果となりましたが、タスクの内容やチームによって当然結果は変わってくると思うので、全部が全部モブのほうが良いという結論ではないよ、とだけは言っておきます。

とはいえ、モブプロを躊躇している方、疑問に思っている方は、ぜひこの結果を参考にして挑戦していただければと思います。
あと去年のアドベントカレンダーで書いた[渾身のQiita](https://qiita.com/naoqoo2/items/ccc1ba817349726c7ea4)も参考にしていただければ。。（2018/12/14現在 いいねゼロ...）

それではステキなモブプロライフを！