AgileJapan2017でモブプログラミングに飛び入り参加しました。

AgileJapan2017でモブプログラミングに飛び入り参加しました(飛び入りというか、後ろで見てようかなと思ったら座らされちゃった)。参加者は、7人くらい。

お題というか言語はelmというもので、参加者全員が知らない言語でした。みんなで調べながら動くものを作るという場を作るためにそういうマイナー言語を選んだみたいです。

まずJoshが紹介してくれたのがモブプログラミング用のタイマー、モブスターです。

github.com

指定した時間が来たらディスプレイを黒くして、次のドライバーを教えてくれます。

f:id:Akiyah:20170414172004p:plain

elmは、初めてだったけどどうやら関数型言語で、HTMLを作るのに便利だそうです。オンラインの実行環境があったのでここでモブプログラミングしました。

f:id:Akiyah:20170414172404p:plain

最初にハローワールド書いて(これはサンプルを実行しただけ)、assertメソッド書いて単体テストできるようにして、ローマ数字の足し算のお題を解き始めました(I、II、III、IVのみ出てくる演算に関してはできた)。

まあ、わけわからないですよ、初めての言語だし。でもみんなで知恵を出し合って、なんとかそこまでできたのでした。パチパチ。

モブプログラミングのコツ(教えてもらったこと、私の思ったこと)
  • 周りのナビゲーターが次にやることを指示して、ドライバーは手を動かすだけにする
  • モブスターを使ってドライバーを(10分とか)定期的に交代する
  • 周りのナビゲーターはみんなに聞こえるように大きな声で指示する
  • そこ、その行、と言ってもわからないので、行番号を数字で指摘すると良い
感想

やってみて、elmのような初見の言語や技術をみんなで学ぶ場としてモブプログラミングをするのはすごく良いなと思いました。デバッグとか、設計の方針の共有とかもそうだと思います。

あと、今までも同僚とやっていたみんなでディスプレイを見ながらプログラミングするという状態は、だいたいのところモブプログラミングだなと思いました。今までやっていたよと。ただ上に書いたようなコツを使った方がより効果的なんだなとも思いました。

モブプログラミングは普通の開発でも使うものなのですかね。そこらへんが不明でした。ずっとモブプログラミングでも良さそうでもあるし、週に1日というような運用でもありそうだし。そのあたり、詳しい人に聞いてみたいです。