アトラス、モブプロはじめたってよ

お久しぶりです。テックリードのなかむらです。
昨年、WEB+DB Press Vol.102 で「はじめてのペアプロ/モブプロ」という特集があり、読んでみてやってみたいなと思い、モブプロをはじめました。
まだ、はじめたばかりで数回しか実施できていないのですが、やってみて感じたことを書きます。

モブプロとはなにか、モブプロの効果

まず、モブプロをご存知ない方もいると思うので、WEB+DB Press Vol.102 の「はじめてのペアプロ/モブプロ」から引用してまとめます。

ペアプロとは

  • ペア(2人)でプログラミングを行うこと。
  • コードを書くだけに限らず、「目標定義」「タスク分割」「設計」「議論」「コーティング」「リリース」までの全ての行程をペアで行う。
  • 1つのディスプレイ、1つのマシン、1つのキーボードを共有する。
  • キーボードの前にいてコードを書き進める「ドライバー」と、ドライバーと会話しながら導く「ナビゲーター」の役割がある。役割は定期的に交代する。

モブプロとは

  • モブプログラミングの「モブ」とは群衆のこと
  • ペア(2人)ではなく、モブ(チーム全体)でプログラミングを行う。
  • モブの人数は3人から5人くらいを想定する。

モブプロの効果

ペアプロ/モブプロは、ペア内、モブ内の情報伝達効率を最大にすることでプログラミングの質を変える試みで、次の3つに集約されると書いてありました。

  • 作業への集中と質の向上
    • 作業を相互監視することにより緊張感が生まれ、脇道にそれにくく集中できる
    • 常時コードレビューが行われるため、チームのコーディング規約を意識的に守る
    • ひとりよがりなコードではなく、読みやすく保守性に優れたコードが生まれやすくなる
    • 声に出して相手に説明することで頭の中を整理整頓し、プログラミングの質の向上につながる
    • ビジネス上の意思決定や設計判断の待ちや手戻りを減らすことができる
  • 知識と学びの共有
    • 上位の人にレベルを合わせることで成長のスピードと質が飛躍的に高まり、チームの技術や仕様理解のレベルを大きく底上することができる
    • 結果だけでなく過程を共有できる
    • 属人性が減り、コードの共同所有の促進につながる
    • 言語の表現が難しい暗黙知の共有ができる
  • 楽しさとチームビルディング
    • 仲間と協力して同じ目標に向かい、達成感を分かち合うことができる
    • 多人数で行うゲームやチームスポーツのようなおもしろさがある

なぜモブプロをはじめたか

アトラスでは新しい技術を積極的に取り入れていますが、技術共有のために社内で勉強会を開催しても、参加したメンバが新しい技術を習得するにはハードルがやや高く、プロジェクトで新しい技術を採用しても、実装やレビューができる人が限られてしまいました。

そこで、モブプロの「知識と学びの共有」の効果を試すべく、実践的な勉強会としてモブプロをやってみることにしました。

はじめる前に

モブプロをはじめるにあたり、「モブプロとはなにか」、「なぜモブプロをするのか」、「用意するもの」、「簡単なルール」などを記載したドキュメントを作成してDocBaseで、社内メンバに共有しました。
前触れなしにやるのではなく、「こんなことはじめるよ」と周知したことで、メンバが関心を持ち、「今度参加してみようかな」と思ってくれたと思います。

やり方・ルール

内容はあらかじめIssueを作成しておき、事前に周知しておきます。メインメンバーは3人ですが、他のメンバも参加できるようになるべくオープンな場所、かつ、大きなモニターのある場所で開催するようにしています。
モブプロはチームで生産的にプログラミングをするものですが、私たちの今のやり方は勉強会としてのモブプロなので、業務に大きな影響が出ないように、今のところ1回のモブプロにかける時間は最大1時間と決めて実施しています。

モブプロをしてみて

mobpro

モブプロをやってみた所感です。私一人だけではなく、参加メンバの意見も含みます。

よかったこと

  • 実際に手を動かして書いている箇所の解説をしてもらえるから理解しやすい。
  • 有識者がどのように考え、どの手順で実装するのかを教えてもらえる。
  • 質問がしやすく、わからない時でもおいてけぼりにされない。
  • 便利なツールやプラグインを紹介してもらえる。
  • 会話がとにかく増えるので、コミュニケーションが促進される。

よくなかったこと

  • 共有のPCで作業するので、すでに作成したコードが手元の自分のPCでは確認できず、ドライバーに「あのファイルでの定義はどうなってたっけ?」などと、たびたび確認することになった。
  • 自分のPCが作業用PCでない場合、IDEのテーマやショートカットが違っていて、操作に違和感があったり、戸惑った。
  • Issueをこなす以上の時間がかかる。
  • 実装・実験の回数が少なくなる。「試しにちょっと書いてみる」ということができなかった。
  • 用意したIssueで設定したゴールまでたどり着かなかった。

わかったこと

  • 思考を言葉にするのが難しい。
    • 特にファイル名、変数名などの固有名詞を思い出すのに時間がかかる。
    • 画面共有の仕方によっては言及している位置を説明しにくい。
  • 若手への教育としてペアプロも普段から取り入れた方がいい。
  • 速さを最優先にするプロジェクトでは難しい。

さいごに

今はまだ勉強会の枠を超えていない私たちのモブプロですが、継続するメリットがあると思います。今後は他のメンバも巻き込み、楽しみつつ、早くコーディングできるように、モブプロのやり方を改善していきます。