モブプロ実践の経緯とその効果

このブログ記事はモブプログラミング Advent Calendar 2018 6日目の記事です。

@tronperidotさんからバトンを受けとりました。それでは張り切って参りましょう。

簡単に自己紹介させてください。お仕事で私は会社でプロダクト開発をしています。役割はスクラムマスターです。マイブームはフロントエンド側の作業です。勢いに任せて人生初のアドベントカレンダーを書くことにしました。 最近、フロントエンド側の作業に魅力を感じ始めた@harashoです。勢いに任せて人生初のアドベントカレンダーを書くことにしました。

モブプログラミングはチームメンバーとの関係性や、プロダクトの置かれている環境に依存する面があるかもしれませんが、やり始めてしまえば、簡単です。じゃあ、やり始めるまでが難しいかといえば、そうでもありません。

私がモブプログラミングを知ってから、実践投入するまでの流れは次のとおりです。

モブプログラミングを実践投入するまでの流れ

  • モブプログラミングの存在を知る
  • モブプログラミングを体験する
  • モブプログラミングを周知する
  • モブプログラミングを導入する

モブプログラミングの存在を知る

私がモブプログラミングの存在を知ったのは、2017年の夏頃だと思います。楽天@TAKAGING22さんのモブプログラミングに関するスライドを見て興味を持ちました。エンジニアとして中途半端な状態で悩んでいたのですが、しばらくしてマイクロソフトの牛尾さんのブログを読んで、中途半端な私でもなんとかなるチャンスかもと思いモブプログラミングをしたい欲が次第に高まっていったのです。

モブプログラミングを体験する

というわけで私は社内にモブプログラミングを持ち込むための知見を得るため、モブプログラミングを体験する場を探しました。その年、私はXP祭りに参加していたのですが、セッションの一つにモブプログラミングのワークショップがありました。これはもう参加するしかないと思い、勢いでワークショップに参加しました。このとき自身は業務ではコードをほどんど書かない状態だったので、不安もありましたが、モブは参加者全員で課題に取り組むのでなんとかなると思って参加しました。当時の感想はここ に書いてあります。

モブプログラミングを周知する

モブプログラミングを体験した後は、社内にそれを導入するだけです。私の観測できる範囲では、2017年はアジャイル界隈ではモブプログラミングがトレンドになっている感じがありました。私は流行ものにはすぐに乗っかりたい性分なので、すぐさま行動です。所属しているスクラムチームはプロダクトオーナーを除いてエンジニアは、当時、20代1名と私を含む30歳以上の4名で構成されていました。アジャイルのプラクティスに精通しているというか私の話に比較的乗ってきてくれるのは20代のエンジニアだったので、そのひとに向けて広報活動をしました。事あるごとに、「モブプログラミングっていいらしいよ」、「楽天でモブプログラミングやっているらしいよ」、「牛尾さんがモブプログラミングを絶賛していたよ」など耳元で囁くように、当時は「モブプログラミング、モブプログラミング」と言ってました。

モブプログラミングを導入する

そして私の広報活動の成果が出るときが来たのです。確か、2017年の冬ごろの出来事です。

1期(2017年冬):開発チーム4名,スクラムマスター1名,プロダクトオーナー1名

プロダクト開発をしている中で新機能としてAPIを作成する場面に遭遇し、どのように作業を進めようかと話あっていました。ペアで作業する?作業分担する?等、どのように開発を進めるかをチームで相談していました。そしたらそのときに20代のエンジニア(Aさん)が、「今回のようなケースでは@harashoさんがたまに言っているモブプログラミングで開発するのがマッチすると思います。」といった趣旨の発言をしたのです。おそらくAさんは手探りで作業するケースではチーム全体で一つの課題に取り組むスタイルの方がマッチするだろうという意味で発言したのだと思います。

結局、そのエンジニアの発言をきっかけにチームはモブプログラミングをしました。だいぶ昔の出来事でかつ私はほとんどモブに加わっていなかったので、当時の記憶はあまりありません。ただ覚えているのは、自動テストのフィードバックが遅い環境(半日)だったのがボトルネックとなり、期待していたよりは成果が出なかったと思います。当時、API開発が終わったあとは、モブプログラミングはやらなくなりました。

2期(2018年4月-2018年5月):開発チーム5名,スクラムマスター1名,プロダクトオーナー1名

1期では挫折した感がありましたが、2期では挫折しない土壌がありました。1期で触っていたプロダクトのアーキテクチャを作り変えるという号令が出たのです。具体的にはサーバーレスアーキテクチャに変更するというものです。アーキテクチャ変更で開発言語はPythonからTypeScriptに代わり、AWS EC2主体だったものがAWS Lambda、AWS Step Functionsに変わりました。このプロダクトの作りかえは先でAさんが先行着手して開発を進めました。3月あたりからAさんがが単独で開発を進めた後、4月頃に残りのエンジニアがサーバレスアーキテクチャに変更したプロダクトの開発作業に加わるという状況になったのです。Aさんがサーバーレスに対して技術的なアドバンテージがあり、他のエンジニアはディスアドバンテージがあったという状況です。

ここでモブプログラミングの出番が再来です。実はこのとき、チーム編成が多少変わっていました。チームに新卒の方が配属されていました。それと協力会社のひとがメンバーに加わっていました。モブプログラミングを開始することになるのですが、進め方としては、Aさんが残りのメンバーにTypeScriptの使い方をレクチャーしつつ、Aさんが作ったプロトタイプをプロダクトとしてきちんとしたものに変更していくというスタイルでした。2期はうまく行きました。新しいことを始めるのに、モブプログラミングはとても向いていると思います。当時の進め方について書いて見たいことはありますが、次の機会にしたいと思います。

現在:開発チーム4名,スクラムマスター1名,プロダクトオーナー1名

現在はモブしているのかというと実はしていません。モブが合わなかった、嫌になったとかではなく、モブを必要とする場面ではないとチームで判断しているからだと思います。今はモブプログラミングはしていませんが、ペアプログラミングをしています。3つのペアになったそれぞれの作業をしている感じです。ペアが当たり前に行われるようになったのは、モブプログラミングをやったことも多少影響していると思います。ちなみにペアプログラミングをしているときに、後からメンバーが加わるとモブプログラミングに変わります。私は会社でふらふら開発以外の作業をしているときがあるのですが、たまにメンバーのペア作業に混じってモブプログラミングっぽく作業に加わったりします。

モブプログラミングで得られたもの

ここまで書いた中では触れていませんが、私がモブプログラミングを実践して得られたものをまとめてみます。

  • みんなで一つの課題の取り組むと楽しい
    • 1人で課題を解決するスタイルからチーム全体で課題を解決するスタイル
  • 他人の作業を見ると学びがある
    • エディターの使い方やコードの書き方など
  • 集中して仕事すると4時間くらいで限界を向かえる
    • 集中力はもって4時間。8時間モブするのは厳しいなのでモブ以外に適度に雑務をする
  • 毎日振り返りができるで学びが早い
    • 1日の終わりに、チームでその日の作業のふりかえりをして、次に活かせる(フィードバックサイクルが早い)

参考

私が社外でモプブログラミングに参加したイベントをご紹介します。TDDワイワイ会です。このイベントは月一で開催しています。お菓子を食べながら、いろんな方とワイワイしながらコードが書けるので、モブプログラミングに興味がある方はぜひ参加してみて欲しいです。ワイワイがやがやしながらコードを書ける機会は貴重な体験だと思います。ちなみに私は娘と一緒にTDDyyχに参加しました。といってもこの時は、技術書典4の帰りで疲れていたので、モブプログラミングには参加せず、見学させていただきました。私は職場でやっているモブプログラミングと比較し、とても賑やかにコーディングする人たちを見て、職場でのモブもまだまだ工夫の余地があるなと思いました。娘はというと大人たちが楽しみながらコーディングする姿に、とても魅かれたようです。

まとめ

モブプログラミングは楽しくて、学びがあります。ぜひモブプログラミングをやってみてください。最後になりますが、私のつたない文章を読んでくれてありがとうございます。さて次はtakigawa401さんにバトタッチです(これをやってみたかった)。 引き続きモブプログラミング Advent Calendar 2018 をお楽しみください!