社内でモブプログラミングやってみた #mobprogramming
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
先日、社内の development team (以降 dev) でモブプログラミングをやってみました。
事の発端は dev メンバーが DevOps Days Tokyo 2017 での 開発環境もみんなでメンテ‼︎ DevOpsっぽい環境 on Azure をモブプログラミングで作ってみるよ セッションに参加したことでした。
Regional Scrum Gathering Tokyo 2017 以降、「モブプログラミング」という単語だけは何度か聞いたことはあったのですが、このモブプログラミングという開発手法で 3 人で開発環境を構築していくデモを見て、これは実際に試してみたい!と思ったのがきっかけです。
モブプログラミングは以下のように定義されています:
みんなの英知を集めて 同じ時間に 同じ場所で 同じコンピュータを使って 同じ課題にいっしょに取り組む 開発手法
また、ドライバ、ナビゲータという 2 つの役割があり、一定時間でドライバを交代します。
ドライバ:ナビゲータに従ってコードを書いたりする。ドライバは 1 人だけ。 基本的にドライバーは勝手に考えて手を動かしてはいけない。 ナビゲータ:ドライバに指示を出す。ドライバ以外は全員ナビゲータとなる。
お題は、dev メンバーが以前やったことがあるパズルゲームのような感じで隣接する数字を消していくプログラムにしました
(ちなみにそのメンバーは答えを知っているので今回はベンチでした)。
リモートワークのメンバはとりあえず画面共有してナビゲータ専任での参加としました。
モブプログラミングの経験者は 1 人もおらず、全員初めてということで、とりあえずみんなでわいわいやってみました。
環境等はこんな感じです:
参加人数 | 4 人 (1 人はナビゲータ専任) |
場所 | 会議室 (大テーブル + ディスプレイあり) |
言語 | Java (Java未経験者は1人) |
PC | MacBookPro (英字キーボード) |
ディスプレイ | 60 インチ |
ツール | mobster (5 分作業、休憩は 5 作業で 5 分) |
モブプログラミング実施後に、ふりかえりを行いました。チーム内からはこんな声が挙がりました。
良かったこと:
- タイポなどすぐに気づいて指摘してもらえる
- 他の人の作り方/思考が知れておもしろい!
- 話し合いながら進めているので、最終的な成果物はみんなが合意したものになっている!
学んだこと:
- 普段使いの PC ではないので操作にとまどう
- ドライバーの 1 回の操作が 5 分は短い
- 1 人で作業する時と違い、みんなの意見を理解しながら進めるので疲れる
- ドライバは、ナビゲータの指示を理解して手を動かさないといけないから
- ナビゲータは、他のナビゲータと意見を合わせながら指示を出す必要があるから
今後試したいこと:
- スキル、内容によって設定時間を考慮する
- 全体の流れ、設計などについて全員で話し合いをして認識合わせしてから、作業に着手する
- 疲れるので休憩は大事
- 飲み物や食べ物を準備する
- リラックスした雰囲気をつくる
- リモート参加の人はドライバとして参加できなかった
- モブプロ用ブランチを切ってリモートのドライバに交代するタイミングで必ず push し、リモートのドライバは自分のマシンに pull してからコードを書き始める
- 周回数を記録する
なにしろ初めての試みだったので戸惑いながらも、最終的な感想としては全員「楽しかった!」でした。
モブプログラミングはよく生産性が……と言われることがありますが、実際にやってみると自然と情報共有ができている状態になるし、レビューも並行して行なっている感覚になったり、と様々な気付きがあり、これが生産性が低いんだろうか?といろいろ考えさせられました。
最後に、本記事はモブで作成しました!