こんにちは!Backlog開発チームの金です。最近、Backlogチーム内で モブプログラミング (以下、モブプロ) ブームが到来しています。そこで今回は、東京、京都、福岡の分散拠点で実施した「ペアプロもあまり経験したことのない初心者が モブプロ に取り組んだらどうなるのか?」というハラハラドキドキな実験の結果をレポートします。
モブプログラミングとは?
モブプログラミング (Mob programming)とは、チーム全員が同じ時に、同じ場所で、同じコンピュータ上で仕事をするソフトウェア開発手法です。
エディターやIDEを操作するドライバー(1人)と、何をどう書くかを指示するナビ(複数人)が、同じ画面を見ながらワイワイとプログラムを作ります。ペアプロみたいなことをより大人数で行う感じです。ちゃんとした定義やコンセプトについて興味ある人は以下の動画やリンクをご覧ください。
(参考資料)
Mob programming – Wikipedia
モブプログラミング – Woody Zuill氏とのインタビュー
社内のモブプログラミング気運の高まり
- 楽天さんの事例を読んで楽しそうだった
- 開発チームの一人がモブプロのワークショップに行ってきた
- 新しい開発メンバーが増えているので知識の共有に役立ちそう
- 話を聞くだけでは効果が信じられないので実際にやってみたい
- モルジブの海で泳ぎたい
など、モブプロという概念を知った人々の中で試してみたい気運が高まり、Backlog開発チームでモブプロの海に飛び込んでみることにしました。ちなみに今回のチームはペアプロ経験もほぼなしです。
いざモブプロの大海へ。
ダイブ to モブプログラミング !
モブプロをやらない理由がみつからない!ということで、Backlogチームはオンライン2回, オフライン1回の合計3回モブプロの海に出かけることにしました。各回の所感を箇条書きにしてまとめてみました。
初回:多拠点開発なので福岡・東京・京都をオンラインで繋いでダイブ!
- ドライバーの画面共有をScreenheroで、ナビの会話はGoogle Hangoutsで顔を付き合わせてる感じを出した
- ナビ、ドライバーの役割を簡単に説明しDisらないみたいな約束事項を共有
- ドライバー1人で交代なし、ナビ3-4人(途中打ち合わせで抜けた)で3時間
- モブプロ内容:カスタム属性の項目の文字数チェック修正
- 結果1:そもそもモブプロ内容が明確でなかった(仕様が曖昧だったため、あとで仕様確認することになった)
- 結果2:モブプロではない何かになってた(何かわからずにとりあえずやってた。着地点がわからなかった。終わらせどころがわからなかった)
2回目:1回目の反省点を踏まえつつ、再びオンラインでダイブ!
- ドライバー一人はきつい→ ドライバー二人で1時間交代くらい。ナビは5人
- 仕様を明確にしよう→モブプロ開始前に課題仕様をきちんと作成
- モブプロ内容:セッション切れてる時にAjaxのリクエストで自動ログインできるようにする
- 結果1:簡単なやつかと思ったら複雑だった。他のサービス(Nulab Apps)が絡んでた。
- 結果2:原因箇所の特定までできたものの修正まで進まず持ち越した。
- Screenhero の画質が人数や回線に左右された。画質がストレスになった。
- 参加メンバーのほとんどが詳しくない(ログインとApps連携周り)とこだった。→ 初めて見るとこで一緒にコード解読&解説してもらい勉強になった
3回目:初の「オフ」ライン。全員が福岡に集まる機会に待ってましたとダイブ!
- オンライン2回目の続きをやる
- 今回のモブプロに備えて、Nulab Appsに詳しい人にあらかじめ質問し提供されているライブラリを判定に使えそうと目処を立ててた
- 準備してたらAppsチームの人が興味を持って入ってくれた!
- ドライバー3人入れ替わり、ナビは5-8人
- モブプロ内容:セッション切れてる時にAjaxのリクエストで自動ログインできるようにする with Nulab Apps
- appsにかかわらずBacklogの自動ログイン機能を使えばいいのでは?(オンライン二回目のときに頭をよぎった)→ やってみる →これでできそう!
- 結果: 解決したい問題は一部解決したが別の問題を見つけたorz
- オフラインの効果1:画面共有や音声の遅延がない快適さよ
- オフラインの効果2:モブってると途中からでも別チームのひとがフラっと来て意見をくれた (想定してなかった効果)
海辺でモブプログラミングをふり返る
もっと簡単な題材のがよかったかも?
- 実はオフラインの回で時間が余った時に一つ簡単なやつをやってたけど簡単過ぎたかもしれない
- 簡単なものでも修正の影響範囲を調べたり、画面から実装クラスを調べたりするのもモブ早い
- 知見の共有には効果があると思う
今回は題材としてバグ修正を選んだのですが、FizzBuzzとかイチからつくる系のが最初の体験としてはいいかも?もしくは新規の機能開発の方がコントロールがしやすいかも(「ここはモックでいいか」など着地点を変えやすい)
モブプロはみんなの時間を使う
- だらだらやるよりしっかり時間を決めてやる方がよいと思う
- キリが悪くても時間を最優先に終わらせるようにした方がよいかも?
モブプロのふりかえりをやった方がよいと思う
- 「やったー動いた、コミット!」で終わってしまうと次につながらないので反省点とか出す
- ふりかえり含めて時間内におさめようと思うと簡単なやつの方がよい?
たのしかった!
- オフラインでやると特に楽しい
- 「なんかやってて面白そうなので参加します」とフランクに参加しやすい雰囲気が出る(周りを巻き込んでいける感)
- 「ぐぬぬ、これでどうだ?きたか?きたか?キターッ!!!」っていう動いたときの盛り上がり感(一体感)がオンラインと比べて段違いにある
なんとなく安心感あった
- ドライバーやってるときに他の人がいろいろ言ってくれるので、自分が詳しくなくても進めていける安心感がある
おまけ
ところで、この記事はモブブロ(Mob Blogging)で書かれています。
モブプロが面白かったので、紹介する記事を書くのにも”モブなアプローチ”で挑んでみました。だって、何度だって泳ぎたいから。でも、この段落だけ僕が孤独に書いてます。
最初に段落の枠組みだけ提案してモブブロを開始。モブプロやったメンバーが同じようにナビとドライバーになりGoogle DocsとHangouts を利用して書き上げられたのでした。(時間が限れていたため箇条書きに頼るところが多くなったのが課題です)
さて、あなたも一緒にモブプロの海で泳ぎませんか?(ヌーラボは開発者を絶賛募集中です)