役割分担ではなく協働作業という考え方
プログラミング、コーディングというと、ともすると優秀なスーパーエンジニアが一人で設計、コーディング、デバッグまで進めるという、属人的な作業というイメージがある。大規模プロジェクトでも、プログラマーやエンジニアにはモジュールごとの開発を担当することが多い。それをグループの協働作業でひとつのプログラムを完成させるというのだが、果たしてうまくいくのだろうか。
実は、クリエイティブの場でもこのような協働作業を取り入れる動きがある。ハリウッド映画だ。映画のストーリーや脚本を決めるのに、脚本家や監督、企画系のスタッフらが集まりミーティングをしながら展開を決定していくスタイルが一部で広がっている。クリエイティブと相反するような取り組みだが、読めない展開、多様な登場人物とそれぞれが持つ設定が重層的にからみあうストーリーが可能になる。
映画におけるこの協働作業が、必ずうまくいくというものでもないが、ディズニーなどが、この手法でヒット作を生み出しているのも事実だ。
国内ではまだなじみのないモブプログラミングどのようなコンセプトでどんなメリットがあるのだろうか。日本の開発現場になじむものなのだろうか。10月28日に開催された「Rakuten Technology Conference」において、モブプログラミングを実際のシステム開発に活用している企業のエンジニアがセッションを行った。スピーカーは、Hunter Industriesという会社でソフトウェア開発部門の部長(Director)を務めるクリス・ルーシャン氏。
コーディングやテストなど役割は持ち回り
Hunter Industriesは、水道のスマートメーターや農業用の水管理用のバルブシステムなどを手掛ける企業。2011年頃からWebアプリケーションやITと連動した製品開発を行っている。しかし当時は、「システム開発の進行管理が難しく多くのエンジニアが残業や締め切りに追われるような状態だった(ルーシャン氏)」という。
4年ほど前、この状況を改善するための取り組みを始めた。それがモブプログラミングだという。
必要なものは、「メンバーが集まることができる会議室。ホワイトボード。80型の4Kディスプレイ。マウスとキーボードが2つずつ。コンピュータは1台。そして、外部スタッフとのテレカン、調べものや連絡用の電話が1台」(ルーシャン氏)という。
大きな部屋、フロアに複数のモブスペースを設けて、複数のモブプログラミング開発をしてもよい。いずれにせよ、パーティションで区切られたデスク(キュービクル)やオフィスは必要ない。
1チームは4人から5人が基本だが、とくに決まりがあるわけではない。2、3人のモブプログラミングから9人といった規模もモブプログラミングの成立するという。役割も固定ではない。メンバーの役割は、プロダクトオーナー(マネージャ)以外はとくに決まっておらず、コーディングする人、テストする人、調べものをする人など適宜分担がローテーションされる。
開発の流れは、厳密に決まっているわけではないが、開発のスタート、1日のスタート、マイルストーンごとにグループディスカッションを行う。1日の中で、スキルミーティングや役割のローテーションなどの区切りがあるので、「Mob Timer」というオープンソースのツールを利用するとよいそうだ。