最近では,場所に制限されずに実施できる「リモートモブプログラミング」を採用しているチームも多いと思う.もともと「モブプログラミング」に慣れているチームなら,急に「リモート」に移行しても「特に変わらなかった」と感じるかもしれないけど,慣れていないチームだと苦労もあったりする.そして最近は相談を受ける場面も増えてきた.今回は「リモートモブプログラミング」で意識するべき原則を学べる本「Remote Mob Programming」を紹介する.
Remote Mob Programming
本書は Leanpub で購入できる.とは言え,内容はウェブサイトに無料公開されているため,最低価格は無料になっている.僕はウェブサイトとほぼ同じだと気付かず,推奨価格の $9.99
で購入したけど,正直購入しなくても良いと思う.著者に感謝の気持ちを伝えるなら購入を!
- MINIMUM PRICE : Free!
- SUGGESTED PRICE : $9.99
以下のウェブサイトに無料公開されている!読むべし!
目次
本書には「リモートモブプログラミング」で意識するべき原則が「計15個」載っている.「リモート」に限らず重要な原則も載っているため,今後モブプログラミングを採用するチームにも参考になる.なお,正式な日本語訳はなく,個人的に載せているため,参考程度にしてもらえればと!今回は個人的に気になった原則を紹介する.
- Remote Everybody(全員リモート)
- Camera Always On(常時カメラ ON)
- Regular On-Site Meetings(定期的なオンサイトミーティング)
- Small Team(小さなチーム)
- Same Time(同じ時間)
- Typist and the Rest of the Mob(タイピストと残りのモブ)
- Screen Sharing(画面共有)
- 10 Minute Intervals(10分インターバル)
- Git Handover(Git 引き継ぎ)
- Group Decisions(グループで決める)
- Constant Momentum(継続的な勢い)
- Learn from the Team(チームから学ぶ)
- Trust(信頼)
- Save the Planet(地球を守る)
- Dine with your Family(家族で食事)
Remote Everybody(全員リモート)
リモートモブプログラミングでは「全員リモート」を前提にする.同じ部屋に数名いると「情報の非対称性」の問題に繋がってしまう.リモートモブプログラミングを使えば「まるで同じ部屋にいるような感覚」になる!と書いてある.
リモートモブプログラミングに限った話ではなく,リモートワーク全般でよく聞く話だし,重要だと思う.僕もリモートモブプログラミングを実施するときは,できる限り「ローカルさ」をなくしていくように意識している.
Camera Always On(常時カメラ ON)
言葉だけではなく,ジェスチャーなど「ノンバーバル(非言語)コミュニケーション」を意識することが重要で「常時カメラ ON」にする.最初は違和感を感じるけど,慣れれば「同じ部屋にいるような感覚」にもなる!と書いてある.
個人的には賛成だし,実際にリモートモブプログラミングに実施するときは必ずカメラは ON にしている.とは言え「ネットワーク回線を圧迫」したり「カメラ ON に抵抗を感じる環境」も考慮すると,必須にする必要はないように思う.また「画面共有」を見ることに集中するため,本書に書いてある「視線が合う」という体験はあまりなさそう.なお,Zoom だと画面共有中に「左右表示モード」にすれば,画面共有とカメラを並べられるため,便利!
Small Team(小さなチーム)
リモートだと,基本的に複数人で喋るのは難しく,カブらないように意識的にタイミングを見計らったりする.だからこそ,人数が多くなると,集中力を維持しにくくなってしまう.本書では「4人」を推奨!と書いてある.
個人的な経験からも「4人」を推奨する.「5人」だと窮屈に感じてしまう.とは言え,アジャイル開発で4人以上の場合もあるから,意図的にミュートを活用したり,適切にコミュニケーションを取れるスタイルを確立すると良いと思う.例えば,Zoom で「挙手機能」を使ったり,実際にカメラに挙手をしてジェスチャーで伝えたり,Fist of Five Voting で合意形成をしたり.
Screen Sharing(画面共有)
ドライバー(タイピスト)の画面を共有し,全員同じ画面を見るようにする.通知を無効にしたり,集中力を維持する工夫もする!と書いてある.また「コラボレーション IDE はコラボレーションを悪化させた」という話もあった.
まず,モブプログラミング未経験者にトレーニングをすると,作業を効率的に分割しようとする人が多かったりする.例えば「僕 Google 検索してみますー!進めておいてもらえるとー!」など.そうすると戻ってきたときにリズムを止めてしまうことになるため,ドライバー(タイピスト)の操作を尊重する意識をして,全員で画面共有を見て検索をするように伝えている.
また,前に AWS Cloud9(コラボレーション IDE としても使える)でモブプログラミングを試したけど「全員同じ画面を見ているようで見ていなかった(ドライバーがどこを見ているのか共有できなかった)」という課題があり,難しかったため,本書に書かれている話も納得できる.あと最近試している Visual Studio Live Share にもコラボレーション IDE の側面がある.
10 Minute Intervals(10分インターバル)
目標を達成するまでに数時間必要になる場面もあり,様々なインターバル時間を試したけど「10分」が適切である!と書いてある.
今まで読んできたモブプログラミング関連の本にも最初は短くはじめるべきと書いてあるし,長くても 1 ポモドーロ(25分)で交代すると良いと思う.当然ながら,コードを書くのには短すぎるけど,集中力を維持するには十分だし,なんとなく時間が過ぎてしまった!という状況を減らすために細かく作業を分割する意識も強まる.画面共有をするちょっとした時間もオーバーヘッドになるため,できる限りスムーズにできるように練習しておくのも良いと思う.
Git Handover(Git 引き継ぎ)
リモートモブプログラミングだと,物理的にキーボードを渡すことができないため,作業用の Git ブランチを使って引き継ぎをする.特に Git 操作で時間を取られたり,コミットメッセージに悩む時間もオーバーヘッドになるため,迅速に行うべき!と書いてある.
簡単に言えば「git pull
で始まり git push
で終わる」となる.前に紹介した mob
コマンドはまさに「Git Handover(Git 引き継ぎ)」を実現するツールだし,最近使っているけど,非常に便利だと思う.
まとめ
今回は「リモートモブプログラミング」で意識するべき原則を学べる本「Remote Mob Programming」を紹介した.ウェブサイトに無料公開されているので,興味があったら読んでみると良いかと!もしもう1個原則を追加するとしたら,僕なら「小さな成功を喜ぶ!やったー!」を追加したいと思う.やったー!やったー!