あなたのいうウォーターフォールとアジャイルはそんなに違うものじゃないよという話

日経SYSTEMSの安藤さんの記事が、それなりに盛り上がりまして。

3分でわかる アジャイル開発 | 日経 xTECH(クロステック)

以下の記述が、企業さんなんかを訪問させていただいて意見交換していると出てくる「私たちウォーターフォールでー」というご発言の部分をうまく写し取っているのではないかと思いました。膝ポンです。

現在多くの開発現場で利用されているウォーターフォール型の開発では、要件定義工程で要件を確定させてから、設計工程や開発(製造)工程に移る。後工程になって要件定義の漏れや変更などが発覚すると、要件定義の工程まで戻って作業をやり直さなければならない。

 要件定義の漏れや変更が発生した際、アジャイル開発では次のイテレーションの始めに要件の優先度を再検討する。これにより変更リスクに備えつつ、より価値の高いソフトを提供できるようになると言われている。

この2つは実はほとんど同じことにすぎないのではないかと思ったんです。

どういうことかというと...

A->B->C->D の手順で作る必要があるんだ!だからいつまでにAを終わらせよう、と考えるわけですが、やってみて気づくこともある。なので実際は手戻りすると思うんです。(しない仕事もあるのは認める)

で、手戻りが起こるかどうかは事前にわからないので「起きてからきちんと手戻りしよう」でもよいでしょうし「手戻りするかも/しないかも、だけどチェックポイントはあらかじめ決めとこう」もよいと思います。(たぶん前者のことをウォーターフォールとみなさん言ってて、後者がスクラム/アジャイルかな。)

 

大事なのは、手戻りするということは「計画から誤差が出る」ではなく「以前は得られていなかった情報を得て意思決定をアップデートした」ということで。

その辺がアジャイルマニフェストの「計画に従うより変化への適応を(より重視)」というところかなと思いました。

アジャイルソフトウェア開発宣言

 

皆さんはどう感じたでしょう。

安藤さん、興味深い記事ありがとうございました。