Fight the Future

Java言語とJVM、そしてJavaエコシステム全般にまつわること

なぜ依然としてウォーターフォールが残っているのか?アジャイルかウォーターフォールか?

http://d.hatena.ne.jp/iad_otomamay/20080127/p1
id:iad_otomamayさんにトラバ(会社の先輩です)。


アジャイルウォーターフォールか?ってなるとちょっとエクストリームな感じです。
僕としては深く考えもせず(適当な)ウォーターフォールっぽいプロセスを適用するプロジェクトが多すぎる!って思いです。
設計フェーズ、実装フェーズ、カチッと分けてみんなヨーイドンでそのフェーズの作業をするみたいな。


とにかく問題なのは、これだとフィードバックが遅すぎるってところで。
結局要件や設計は、文章だけでは実際どうなのかわからないですし、
モノを作って動かしてこそ改善点が見えると思います。もちろんUIや実装も。
事前設計はやりこんでも完璧にならず、ほどほどのバランスで終えてモノを作ってしまう方がいいかなと。
(事前設計は不要ではなく、かといって完璧を目指さずのバランス)


でも結局モノができるのは最後の最後で、そのときにフィードバックを得ても対応しづらいと思います。
フィードバックの単位がどうしても大きくなってしまうからです。
プロセスにおいては「いかにフィードバックを早く得るか」がポイントかなと。
早く得ることでフィードバックを小さい単位にする。小さいのですぐ対応できる。
イテレーティブはフィードバックを得やすいのが利点ですよね。
ウォーターフォールでも、ヨーイドンでなくて、「小規模の先行チーム(開発・顧客含む)が、先に1つの完成形を構築する。」をすればフィードバックを得られますね。
(「完成形」とまでいかなくてもいいかもしれません。)


なんというか、ウォーターフォールだとすべての要件がフラットな感じなんです。
優先順位がなくて、すべてを同じように納期までに作りこまなくてはならないみたいな。
それは2次開発で対応するって考えですが、本番稼動の後ではミスが許されにくいので、なかなか機能を変更できないのでは。。。
それから、一度完成したシステムって危ういバランス(危ういソース)の上に成り立ってません??
それを変更するのは難しそうです。自動テストがしっかりできていれば可能かもしれません。


あんまりまとまりませんでした。。。