レベルエンター山本大のブログ

面白いプログラミング教育を若い人たちに

BLOCKVROCKリファレンス目次はこちら

反復型モデルは速さとは真逆のプラクティスである。

反復型vsウォーターフォールを新人教育で教えるときに、
あるゲームで体感してもらったんだが、現実にあるあると言える面白い結果になった。

結論から言うと、反復開発は速くはないということがわかった。


題材は、伝言ゲームである。


■基本ルール
・5−6人で1チームを作り、最後尾の人がマジックと紙を持つ。
・講師が先頭の人だけに絵を見せる。絵は以下のようなものだ。

・先頭の人は、自分が伝言している間だけは何度でも講師の絵を見に来ることができる。
・言葉だけを使った伝言ゲームによって順番に1人1人回して行く。
・最後の人が紙に書き出しす。
・制限時間は15分

ウォーターフォールバージョン
基本ルールに加えて以下をルールとする。
・伝言のフローは1回だけ。1回で伝えきること。

■反復型バージョン
基本ルールに加えて以下をルールとする。
・伝言のフローは何回行っても構わない。
・ただし、先頭の人を起点としたフローのみ許可する。(列の途中の人が起点にはなれない)
・前回のフローが完了する前に、新しいフローを始めても構わない。
・絵は何回書き直しても構わない。
・最後尾の人が紙に書き落とした絵を見て、新しいフローを始めるのもあり。

■採点基準
・どれだけ特徴をとらえているかによって点数をつける。
 例えばTOMCATのヒゲの数や、体の模様の数や形状、配置についてそれぞれ1点などとする。

■結果
結果として得られたのは以下だ。
・WF版では、制限時間内に全チームが完了した。
・WF版では、伝言実施中の一部の人だけが稼働状態となり周りで暇にしているメンバーがいた。
・反復版では、全てのチームが制限時間を使い果たし、時間をオーバーし失格となるチームもいた。
・反復版がWF版に比べ、やや難易度が高い絵を使ったが平均点が1.5倍となった。
(絵の完成度は高かった)
・反復版では、全員が常にフル稼働状態となった。

■所感
反復型は、より緻密に要求通りの絵が描けた事は確かだが、速くはなかった。
速くないだけではなく明らかに遅かった。全員が時間いっぱいまでフル稼働状態制限時間に終わらないチームすらあった。
制限時間に遅れてしまったチームがあるのは、反復型では「終わりを自分たちで決めなくてはならない」ことが一つの要因だった。何度繰り返しても良いとなると、キリをつける理由がなくなる。
こういったことを考えてみると、早く終わるには計画を強制するWFの方が良い。*1

■まとめ
反復モデルはやはり速さを追求するのではなく、要求の実現度を高めるため、もしくはムービングターゲットをリアルタイムに追うための仕掛けであり、速さという意味では真逆のプラクティスであった。

*1:ただ、今回の演習は、差し引いて考えるべき現実とのギャップがある。WF版は、ドキュメントドリブンと呼ばれるほど厳密な仕様書を書く、その作成工数と手戻り時の工数が厳密なWFのデメリットであるため今回の演習モデルではWFの良い面しか現れていない。ただアジャイルであろうとSIの領域において仕様書は必須である。仕様書の要/不要はアジャイルかWFか、ではなくJoelのいう5つの世界の違いである。もっと具体的に言えばゲーム業界やWebサービス系業界とインハウスソフト業界の違いである。アジャイルはゲームやソーシャルにマッチしやすいが、SIでアジャイルを用いるときに設計書を作らないモデルでやるとやはり後で困る。こういったことから、仕様書の有り無しは現実とのギャップとはなるが、今回の演習の比較においてはそれほど大きなギャップにはならない。