制作会社でモブプログラミングを試してみた結果

週に1度開催しているエンジニアの勉強会で、モブプログラミングに初めて挑戦したが、思いのほか人によって違う実装をしていたり考え方が違ったりと新しい発見があり、とても勉強になり充実した時間になった。 実施した内容は以下の通り。

概要

  • slickのようなカルーセルの実装。
  • 1人がコードを書くドライバー、その他がドライバーに指示を出すナビゲーターとなり、10分毎にドライバーを交代。

ドライバーの役割

  • 自分で勝手に手を動かさない。
  • 指示されるままにコードを書く。
  • 指示の内容で分からないことがあれば質問する。

ナビゲーターの役割

  • ドライバーに指示を出す。
  • 指示の内容で分からないことがあれば質問する。

良かった点

この内容で1周まわしてみたが、1人で実装するときとは違い、意見交換が頻繁に行われたため手を動かす時間がなく、完成には至らなかった。案件の性質上、大規模なシステムを設計するわけでもないので開発速度の恩恵は感じなかったが、やってみて以下のメリットがあると感じた。

  • 自分の知らない技術や実装方法を知ることができた。
  • 意見の交流が発生して参加者全員の知見になっている感じがした(実施した日の日報でも、満足度の高い人が多かった)。
  • プログラミングについて意見交換が発生するので終始楽しめる。

ベイジでは、コードレビューや上述したエンジニアの勉強会などでエンジニア間の交流はあるが、1人1案件を抱えることが多いため、社内のエンジニアが一丸となってコードをじっくり読んだり意見交換する機会はそれほど多くはない。

同じ内容でも違う方法で実装している、ということがあるので、モブプログラミングを通して共通の理解を得たり、よりよい書き方を知るなど、すぐに業務へ活かせる知見を得ることができるのはとても大きなメリットだ。

また、10分が思いのほか早く感じたが、このくらいのペースで回すのが冗長になりにくくて良いのかもしれない。

今後改善したい点

一方で、以下の反省点も出てきた。

  • 意見の交流が多く実装自体はほとんど進まなかったので、ファシリテーションを工夫する必要がある。
  • ドライバーは指示に従うだけだとぼーっとして順番を終えることになってしまうので、ナビゲーターの指示に対して疑問点があれば質問するようにする。
  • 初心者の場合、ナビゲーターをするのはなかなか難しいのでドライバーで手を動かしながら学ぶのがよい。
  • 会社の端末で実装したが、各自自分の慣れた環境ではないので操作に手間取っていた。次回は自分のPCやキーボードなどで作業できるようにする。
  • プログラミングに関しての知見交流はあったが、ショートカットや画面操作など周辺技術への意見がだしにくかったので、もうすこし手元が見えるか、上述したように各人の環境で作業できるようにする。

初回なので反省点は多くあるものの、モブプログラミングは知見の共有やエンジニアの教育にも役立つと実感したので、反省点を生かして第二回も企画したいと思う。