アジャイル開発は、本当に大規模システムの開発に向いていないか?
違和感の元は理由です。大規模システムの開発に向かない理由として、計画と設計が不十分である事が挙げられています。これは十分に納得できる理由です。計画と設計が不十分ならば、プロジェクトが失敗するのは当然です。しかし、この問題をアジャイル特有の問題として正しいと仮定すると、アジャイル開発は計画と設計をおざなりにしている事になります。しかしながら、アジャイル開発はプロトタイプ開発モデルではありません。似ていますが、思想が根本的に異なります。計画と設計をおざなりにして、場当たり的に実装する開発モデルではありません。
その事は、アジャイル・アライアンスの原則とアジャイルソフトウェア開発宣言をよく読めば分かります。アジャイル開発の本質は、柔軟さと俊敏さであり、設計を軽視していません。計画を立てて計画を練る事もアジャイルの一部だと考えられます。それはこの文面を読めば分かります。
【アジャイル・アライアンスの原則】から引用
卓越した技術と優れた設計に対する
不断の注意こそが機敏さを高めます。
それにもう一つ気になる事があります。それは、「ウォーターフォール開発モデルを採用すると、大規模システムの開発がうまくいく可能性が高いか否か」です。ウォーターフォール開発モデルを採用したプロジェクトに、何度も携わりましたが、この開発モデルだから上手くいくという論理的な答えがありません。大規模開発であっても、要求定義は変わります。お客様が初めから完璧な要求を言うなんてあり得ません。ですから、要求が変わらない合理的な理論が思いつきません。要求が変わった場合、その変化に対応しづらいのは、ウォーターフォール開発モデルの有名な弱点です。ならば、ウォーターフォール開発モデルが、大規模開発に向いていると言えません。しかし、大規模システムの開発でアジャイルが採用されないのは事実です。
その理由として、考えつくのが大規模システムに関係する企業の規模です。巨大な企業が、俊敏かつ柔軟に仕事を出来るのでしょうか?私は出来ないと思います。特に日本の企業の場合、一つの物事の了承を得るのに、何個ものハンコと会議が必要となります。そんな状態で、アジャイル開発が出来る筈がありません。その事実から私は次の結論に達しました。
アジャイル開発そのものが大規模システムの開発に向いていないのではなく、大規模開発に関係する企業が、柔軟さと俊敏さを備えていないのです。結論だけを言えば、大規模システムの開発でアジャイル開発を採用できない事になりますが、この違いは重要です。何故ならば、私の理論が正しければ、柔軟さと俊敏さを目標とした企業になれば、アジャイル開発を採用するべきだという事になるからです。
我々に必要なのは、アジャイル開発モデルの最終地点ではなく、過程なのかもしれません。アジャイル開発の理想を語るのではなく、どうやったらアジャイルな企業になれるのかを考えるべきです。