チームにモブプログラミングを導入してみた

開発チームのフロー効率改善に向けて、モブプログラミングを導入してみました。このエントリでは、そのやり方や、実際にやってみてどうなったかを紹介します。
2022.07.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

prismatix事業部Devチームマネージャーの高野です。

過去に書いた

では、多くの施策についてちょっとずつ触れただけで、その詳細にはあまり触れていませんでした。

そこで、このエントリではそれらの深堀りをちょっとずつ出していってみようという試みの第一弾です。最初は「チームへのモブプログラミング導入」について、もうちょっと深堀りした内容を紹介したいと思います。

そもそものきっかけ

私が2021/7にプロジェクトマネージャーになるのと前後して、チームが成果物を出すスピードが、以前より鈍化していると感じていました。

その原因について色々考えた結果、各チームの個々人は常に何かしらをやってはいるが、「チーム全体で取り組む」という体制になっていない―つまり「フロー効率」より「リソース効率」を重視している状況になっている―のではないかという仮説を昨年末くらいに立てました。

フロー効率とリソース効率について思うこと - タマネギプログラマーの雑記

そんなタイミングで、QAエンジニアの長友から、「モブプログラミング」(以下モブプロ)を実施したいという申し出がありました。モブプロは、極論を言えばリソース効率でなくフロー効率側に全振りしたやり方なので、強制的にフロー効率を向上させる手段として良いのではないかと思い、導入を試してみよう思いました。

導入に向けての準備

とはいえ、前提知識についてもあまりない状態でチームに「やってみなよ」というのは、流石に無理があります。

ですので、まずチームにモブプロの知識をインストールするいい方法がないかなとWeb検索などをしてみたところ、下記の講座があることを知りました。

チームで実践するモブプログラミング講座(2022年6月・9月) | CodeZine Academy

モブプログラミングとは、チーム全員で、同じ仕事を、同じ時間に、同じ場所で、同じコンピューターですることです。 リモート下の環境でも実践でき、ノウハウの共有しやすさ、仕事の効率の良さなどから注目されており、多くの現場で導入されています。 本講座はこのモブプログラミングの考え方から実践までをオンライン講座(LIVE形式・ハンズオンあり)で学習いただきます。 モブプログラミングについて座学だけでなくハンズオン形式で実際に手を動かして体得することで、実践ですぐに活かせる力を身につけます。 また、普段一緒に活動しているチームでご参加いただくことで、即座に現場で活用することができます。

これは良いと思ったのですが、2022/1くらいにもチームで導入し始めてみたかったので、残念なことに当時丁度いいスケジュールが予定されていませんでした。

ただ、講師の一人の 安井力さん(やっとむさん) は以前 TDDBC 長岡 2019-02 を開催したとき、TAとして協力いただいたことからご縁がありました。そこで、個人的にチーム向けの特別講座をお願いしたところ、快く引き受けてくださいました。この場を借りて、改めて御礼申し上げます。

モブプロ講座の実施

実際に講座を実施するにあたっては、色々準備が必要です。QAエンジニアの長友を中心に、チームと協力して準備を進めました。

ボードメンバーの決裁取り付け

お金を払って講座を実施する以上、その効果を経営層に理解してもらい、実施の決裁を取り付けなければなりません。

こちらは私の方で次のような情報をまとめて提出し、OKを貰うことが出来ました。

モブプログラミングについて、外部有識者による講演+ワークショップを実施したいと考えています。

# 解決したい課題

- チームのフロー効率向上
    - 個々人が別別の作業をするのではなく、チームとして作業することで、チームとしてのアウトプットを向上させる
        - 結果的にプロダクトに価値が追加されるスピードが速くなる

- 知識・スキルのメンバーへのトランスファー
    - 協力して一緒に作業をすすめることで、必要な知識・スキルがメンバー感で共有される
        - 「作業が止まる」ことを常に解消しながら進むことで、もっとも効率的に伝達が行える
            - 「アレもいるかも、コレもいるかも」で事前に準備しなくて良い
    - 口伝だけで伝わる知識が出てきたらドキュメント化できる

- レビュースピードの向上
    - 常に前提情報をメンバー全員が共有しながら作業を進めることで、リアルタイムにレビューを行える
        - 結果として、承認儀式としてのレビューをなくすことが出来る

- (将来的に)メンバーの流動性向上
    - モブで作業することで、チームとして新メンバーをサポートする体制を構築する
        - 現在異なるチームとして働いているメンバーの入れ替えが可能になる
        - そもそものサービス別チームという体制を解消できる
        - 新入メンバーに最速で知識とスキルとインストールできる

# 導入方法

1. 講演+ワークショップでインストール
    - 安中力さん(やっとむさん https://twitter.com/yattom )に依頼予定
    - 1回 xx万円
        - 2チーム(1チーム4-6名まで)まで対応可能
2. Devサブチーム1つでお試し
    - yyチームを想定
        - 期間中は1日4h(AM/PM2hずつ)はモブ
        - それ以外は各自改善活動など
            - モブ作業は非常に消耗するため
3. 効果があれば他チームに展開

参加者の選定

感情だけで言えば、是非チーム全員を講座に参加させたいところではあります。ただ、1回の講座で講師が見れる人数にも限りがあり、我々の予算にも限りがあるため、参加するメンバーを絞らざるを得ませんでした。

具体的には、次のような基準でメンバーを選定しました。

  • 普段の業務で関わりがあるメンバーを固める
    • 講座を終えた後、持ち帰ってチームで試すのが楽になるように
  • チームリーダーおよび若手メンバーを集める
    • 新たな手法の導入にはリーダーの協力が不可欠
    • 若手に普段では触れられない経験をさせたい

講座にむけて環境ととのえる

講座はリモートで実施するため、モブプロを行う環境を準備しなけれなりません。

幸いにも、やっとむさんの方からミーティングボードやオンラインミーティング用のZoomの準備などはしていただけましたので、こちらでは使うIDEなどの準備を行いました。

我々の組織ではJavaを扱っていて、IDEには IntelliJ IDEA を使っていたので、同じJetBrainsの Code with Me を使うことにしました。そのために必要なアカウントの発行などを当日までに実施しました。

講座

私はワークショップは出来なかったのですが、前後の講演部分および質疑応答は参加することが出来ました。

講演は下記の資料をベースにお話をいただきました。

チームをつくるモブプログラミング / Mob Programming to build teams - Speaker Deck

ワークショップについては、実際に参加したメンバーの視点での生々しい感想や質問も出てきて、色々と参考になりました。

モブプロを始めてみる

講座を実施した次の週くらいから、「注文・決済チーム」にターゲットを絞り、モブプログラミングを始めてみました。

  • 毎日午後2時間+2時間、6人のチーム全員が一つのオンラインミーティングに参加
  • 20分でドライバー交代
  • コードの共有はGitHubで行う
    • ドライバー交代のタイミングでpush→pullする

このやり方を基本に日々改善しつつ、しばらくモブプログラミングを続けてみました。ただ、結果としてこのままの形ではチームにモブプログラミングが根付くことはありませんでした。

  • 全員が長時間同じところに集まっても、声を出す人が数人に固定化されてしまった
  • キリのいいところまでやらないとドライバーの交代が出来ずに一人が長時間ドライバーをすることになってしまう
  • リモートワーク環境の変化により発言が困難なメンバーが出てきた
  • 事前にやることが決まっている作業については、あまりメリットを感じないという意見がでてきた

モブプロの改善

上記の声をチームメンバーから吸い上げた後、チームメンバーと一緒により良い形を模索し、今のところ次のような形に落ち着いています。

  • 全員を常時集めるようなことはしない
    • リモートで長時間モブプロは難しい
  • 少人数でスポット的に実施する
    • モブプロ講座でもリモートは3人が理想、4人が上限という話はあった
  • 探索的な活動のときに実施する
    • 方針検討などの探索的なタスクを行うとき
    • 知識・スキルの伝達手段として
    • 障害対応などの緊急時

なお、元々目指していた「フロー効率の向上」については、別の施策の影響もあり、少し成果が出ています。その結果、チームの成果物が出るスピードが少し向上しつつあります。

これは少し甘い考えかもしれませんが、「モブプログラミングの導入を試す」という「場」によって、「チーム全体で取り組む」という意識の向上が出来たという面は、少しはあるのかなと感じています。

後日談

後日たまたま書きのエントリを見つけ、我々の実体験を追認するような話が書かれていて、非常に参考になりました。

ソロワークか、ペア/モブワークかを効率と効果で考える | サーバントワークス株式会社

まとめ

当初は一メンバーの発案から始まった施策ですが、チームで実際に試して、自分たちが継続できる形を考えて、実施し続ける状態が作れたことが非常に良かったと思っています。

ただ、実際に知識・スキルの平滑化などを含む実際のスピードの向上については、まだまだ他の方法含めて改善の余地がある状態だと思っています。

今後もチームと一緒に、何ができるか共に考えて活動を続けていこうと思います。

余談

個人的な感想としては、 コミュニティ活動が仕事の役に立つ という一つの経験にもなりました。改めて、コミュニティ活動は良いものだなと思えたので、今後も積極的にやっていきます。