モブプログラミングについて

ソフトウェア工学

最近モブプロを人生で初めて経験したので、その体験の良さを忘れないようにメモ書きしておく。

モブプログラミングとは

3人以上のメンバーで1台のコンピューターを共有してプログラミングする手法のこと。

通常コードを書くドライバーと、それを支えるナビゲーターの二手に分かれて作業をする。

Pros / Cons

Pros

  • ナレッジ共有がしやすい
  • 同期的なフィードバックを得ることができる
  • 認識を合わせやすい
    • 後続のレビューや個人作業がスムーズになる

Cons

  • 作業効率の低下
    • コードを書く人以外はナビゲートに徹するため、全体的な作業効率が落ちやすい可能性がある
  • スケジュール調整
    • 同期的に作業をするため、時間合わせる必要がある
  • コミュニケーションコスト
    • コミュニケーションが捗る反面、議論や合意形成に時間を要する可能性がある

ツール

VS CODEのlive-shareという拡張が良くできていてとても使いやすい。

所感

モブプログラミングの経験が浅いのでまだ練度が低いのだが、いくつか感じたことがある。

  • 学びが得られる。その場でナレッジを共有できる
  • 全員で一定以上の理解度を保ったり、認識を合わせながら作業を進めることができる
    • 後続で各自が個別作業しやすくなる
  • 一人で作業するより思ったより疲れる!
    • 時間を決めずに作業していたからというのもありそう...
  • 作業スコープ(何をどこまで進めるか?大まかな作業方針)、作業ルール(作業時間はどれくらい?何分休憩するか?いつドライバーを交代するか?)はちゃんと取り決めを持ったほうが効率が上がるように感じた
  • 同期的な作業になるので、誰かが参加できないときは録画しておくと良さそう
  • モブに向いている作業と個人でやる作業を上手く見分ける必要がある
  • ドライバーは決めるが、ドライバー以外もコードを書いたり、コメントしたりしても良さそう
    • live-shareを使うと同じソースコードを誰でも触れる
    • みんながバラバラに書くのではなく、ドライバーがメインの実装作業を、それ以外のメンバーはサポート的な実装作業(単純な作業や手分けしてやったほうが早そうな作業など)を行うと効率が上がりそう
    • 実際やってみた感覚として、結構良かった。ただし、コミュニケーションをちゃんとする必要はある(無言でコード書いてやっておいたよ!などはモブプロの意義に反してしまう)