モブプログラミングを成功させるための2つのルール
モブプログラミングとは、開発チーム全員を共有スペースに集め、1台の開発マシンを与えて、共同でソフトウェアを作成してもらうというテクニックです。なんとも奇妙ですね。「モブ (mob:統制が取れない群衆)」という言葉には、チームメンバーが好き勝手に行動するという意味が含まれているため、さらに奇妙な状況になっています。
確かに、モビングという行為には、あまりルールがありません。モビングのガイドライン(英文)の大部分は、常識的なものです。それは、チームメンバーに対して敬意を払い、チーム全体から意見を募り、高品質なソフトウェアを提供する能力を継続的に向上させるように努めることです。Woody Zuill(英文)のような有名なモブ推奨者がすでに提言していなかったとしても、これらのガイドラインはあなた自身がすぐに思いつくことでしょう。
「チーム全体」という言葉は、定義上のルールです。チーム全体を1つの場所に集めると言うときは、まさにチーム全員を意味します。私たちは、テスター、プログラマー、デザイナー、マネージャー、アナリスト、セキュリティ担当者など、ソフトウェアの開発に関わるすべての人を招待します。彼ら全員が貢献することを期待しています。
しかし、1台のコンピューターの前でのモビングは、本当に誰しもを参加させてよいものなのでしょうか?誰かがキーボードを手に街に繰り出し、皆が見ている中で何時間もコーディングしてもよいのでしょうか?
もしそうだとしたら、ほとんどの人にとって、これは退屈でイライラさせるものに違いありません。このような組織化されていないチームを見たマネージャーは、「モブプログラミングはソフトウェアチームに押し付けられた最も愚かなアイデアのひとつだ 」とすぐに思うことでしょう。
モブプログラミングとは?
先に進む前に、モブプログラミングとは何か、どのように活用するか(英文)についての理解を共有しておきましょう。Agile Allianceの説明(英文)によると、モブプログラミングとは、「…チーム全体が、同じ時間に、同じ空間で、同じコンピュータを使って、同じことに取り組むソフトウェア開発手法」です。
モブプログラミングは、ペアプログラミングに近いものですが、参加メンバーがペアプログラミングの通常2人よりはるかに多い点が異なります。
「スワーミング」(英文)は、複数のキーボードを同時に使用することを除けば、モブプログラミングとよく似ています。スワーミングでは、複数のメンバーが複数の画面を操作し、同じ問題のさまざまな部分に集中して取り組むのが一般的です。
個人またはペアのプログラマーが一般的にプログラミングに専念するのに対して、モブプログラミングのメンバー は、より幅広い開発アクティビティをおこなう傾向があります。ビジュアルデザインやドキュメント作成など、プログラミングとは別の開発タスクを担当します。
これらの共同作業のパターンは、長年使われてきていることで、それぞれが抱える危険性が認知されています。たとえば、ペアプログラミングでは、支配の問題が発生します。これは、ペアの一方がキーボードを抱えて解決策を懸命に模索しているのに対して、もう一方は椅子にもたれかかりくつろいでいるという状況です。参加への意識の乖離が進んだこのような「プロセスの臭い」は、「作業者と休憩者の状況」として知られます。作業者と休憩者の状況に陥ると、ペアリングの効果は低下し、ソフトウェアを提供するために2倍 (またはそれ以上!) のコストがかかるようになります。
モビングを成功させるためには、ペアリングと同様に、関係者全員を巻き込む必要があります。そうでなければ、関係者以外は無意味なオーバーヘッドとなってしまいます。モビングをおこなうことで得られるメリットは、無意味とはほど遠いものです。私たちは、真のコラボレーションがもたらす劇的に優れたソリューションを称賛します。
モビングを最大限に活用し、チーム全員の才能を活かし、より良いソフトウェアをより早く提供するために、モビングを成功させるための2つの重要なルールを紹介します。
ルール1: ドライバーはナビゲーターではない
1 番目のルールは、モビングにはドライバーとナビゲーターという2つの役割があることです。ドライバーは、コンピューターへの入力 (通常はキーボードとマウス) をコントロールします。ナビゲーター (残りのチーム メンバー ) は、ドライバーに継続的な指示を与えます。ドライバーの主な仕事は、チームメンバーの意見を聞き、その指示をソフトウェア、テスト、スクリプト、その他必要な解決策に変換することです。
Llewellyn Falco氏は、このようなやり取りを ”強力なスタイルのペアリング” (英文)と表現しています。「アイデアが頭の中からコンピューターの中に入るためには、誰かの手を介さなくてはなりません」とFalco氏は言います。もし、あなたが現在コンピューターの前にいるドライバーであり、新しい素晴らしいアイデアを思いついたなら、キーボードを手放して、自分のアイデアを新しいドライバーに説明する必要があります。
このルールにより、モブセッションが退屈な聴衆になってしまうというリスクのほとんどがなくなります。支配的なタイプのメンバーがハンドルを握って気の向くままに私たちを乗せて運転することはできませんし、他のメンバーが退屈 (または恐怖) して後部座席から見つめていることはありません。
ルール2: 時限式ローテーションを採用する
それぞれのドライバーがキーボードを操作する時間は、一定の短い時間 (通常は4分から7分) だけにして、新しいドライバーに操作を譲るようにします。私たちは、チーム内の全員が交代でドライバーを務めることができるように、継続的にタイマーを使用しています。物理的なキッチンタイマーを使うチームもあれば、モビング専用のソフトウェアを使うチームもあります。
時間を決めて交代することで、全員が公平にドライバーを務め、ドライバーに意見を述べることができます。タイマーがないと、参加者が離脱してしまうリスクが高まります。ドライバーになってメンバーからの指示を受ける順番が回ってくることで、緊張感を持って取り組むことができるでしょう。
他の理由においても、このプラクティスは重要です。部屋にいる全員が、モビングをナビゲートする一員として、 解決策を導き出すスキルを高めるべきです。また、その場にいる全員が、指示を聞いて、それを実用的な解決策に変換する能力を高めることも必要です。モビングをおこなうことで、初心者や新しいメンバーでもすぐにチームに貢献し、他のメンバーとの交流を開始することができます。
恐怖心を取り除く
短期間でのローテーションの利点は、長時間「注目の人物」ではないことです。私たちの多くは、同僚の前で自分の開発能力を (あるいはその欠如を) 見せなければならないと思うと、当然ながら恐れを感じるでしょうが、数分もすればその状況から解放されます。
モブプログラミングチームの運転席は、ルール1の「ドライバーはナビゲートしない」という理由から、実際にはそれほど注目を集めることはありません。ドライバーとして、あなたは答えを知っている必要はありませんし、むしろ答えは期待されていないのです。あなたはただ耳を傾け、コンセプトをコードに変換する能力を高めることに集中すれば良いのです。
いずれにしても、優れたチームというものは、誰もが不安を抱えていることを忘れないものです。モビング環境で成功するためには、チームメンバーからの適切な配慮が必要な人もいます。辛抱強く、攻撃することなく、すべてのアイディアを検討しましょう。
数週間かかるかもしれませんが、チームのメンバーは、お互いに支え合い、助け合うことで最高の結果が得られることを学び、やがて恐怖心を克服していくでしょう。パンデミック時代の開発には欠かせない分散型モビング(英文)も実用的です。モビングを成功させるためには、これら2つのルールを守ることを忘れないでください。
作者について:
この記事はJeff Langrが執筆し、2019年4月に公開されました。そして、2021年6月に、受賞歴のあるソフトウェア開発者であり著作者でもあるCameron Lairdによって更新されました。Cameron Lairdは、業界のサポート団体や標準化団体に参加しており、Python Software Foundationの投票メンバーでもあります。長年テキサス湾岸に居を構え、お気に入りのアプリケーションは農業自動化向けのアプリケーションです。
(この記事は、開発元 Ranorex 社 Blog 「Two Rules for Mobbing Success」2021年6月23日の翻訳記事です。)