イテレーション開発とインクリメンタル開発の違い〜劣化版ウォーターフォールに気をつけろ〜
みんな大好きアジャイル開発。アジャイルに対する考え方は、十人十色。理解度も違えば認識も違う。一つだけ、共通認識があるとすれば、ウォータフォールが嫌い。ただ、嫌いな割には、離れられない不思議。蓋を開けてみると、アジャイルといいつつ、劣化版ウォーターフォールになっていること数知れず。
PMBOK第7版を読んで気づいたことがある。
アジャイルを試みる人たちが、そもそも、”イテレーション開発”と”インクリメンタル開発”の違いがわかっておらず、最終的には劣化版ウォーターフォールになってしまっているのではないかと?
私が今まで携わった多くの”アジャイルと称された開発”のほとんどが、”インクリメンタル開発”であった。
そもそもインクリメンタル開発とは何か?
インクリメンタルは、日本語では”増加の、徐々に増加する”である。要は、徐々に開発していくって意味である。インクリメンタル開発の例としてよくあがるのが家の建設である。
- 予算と欲しい家の具体化
- 設計
- 基礎構築
- 外枠作り
- 内装
- 完成
これをシステム開発に照らし合わせて考える。
旧来のウォーターフォールだと、、、
①の段階で、⑥の完成の姿を決め、あとは黙々開発していくイメージである。①以降の変更は、いわゆる変更管理、仕様変更と言われるもので、手戻りやコスト増につながる。SIerが大好きな”これ仕様変更ですよ?”である。水戸黄門の印籠並みに効力がある言葉である。
インクリメンタル開発だと、、、
工程ごとに再検討の余地がるので、多少の設計変更が許容される。しかし、結局のところ”作るもの、欲しいもの”が決まっているので、変更できるといっても壁紙の色や、部屋の仕切り程度であり、微々たるものである。やっぱ、竪穴式住居がいいよね?とかいったところで、”そんな初めから言えや”ってくだりになり、却下される。
この手の方法だと、請負契約にしづらく、結果的にコスト増につながるケースが多い。壁紙の色を変えたところで、元々の構想がいけてなかったら元も子もない。上述した”劣化版ウォーターフォール”とはまさにこのことである。請負を避けたい人売りSIerにしかメリットがない。ユーザー企業の皆様、ぜひ騙されないでいただきたい。
イテレーション開発とは?
よく例示されるがのが、
- スケボーを作る
- 自転車を作る
- バイクを作る
- 自動車を作る
である。要は、動くもの、評価できるものをしっかり作成し、次に繋げていく開発である。私の経験則では、このイテレーション開発ができている現場はほとんど見たことがない。
なぜなら、イテレーション開発を実践するためには、”その場でソースコードを書いたり、修正したりする人”が必須であるからだ。
大手SIerに頼むと何故かインクリメンタル開発になってしまう。それは何故か?
答えはシンプル。客先に出てくる社員がソースコードをかけず、結局子会社や下請け会社に依頼しなければならないからである。スクラムを組んだところで、何故か開発チームが、”設計する人とソースコード書く人”に別れ、体制図や指揮命令系統がウォータフォールっぽくなってしまうのである。
しかも、設計する人とソースコード書く人が全くの別会社だともう末期。無駄な優先度の調整が始まり、工数がどんどん消費されていく。しかも請負でないので、完成責任もない。かけるコストの割に、できた成果物がしょぼくなる。
ノーコード開発が流行っている今日このごろ。高い投資をして、失敗するぐらいなら、いったん誰でもプログラムが書ける、PowerAutomateとか使ってアジャイルお試しするのはいかが?多分そしたら、”アジャイルやるなら、チームにソースコード書ける人必要じゃなね?”って気が付けると思う。