次に、マネジメントなどビジネス面におけるアジャイル開発への指摘を取り上げてみましょう。
指摘その1「ウォーターフォール型開発のように、アジャイル開発でもプロジェクトのスタート時に費用とスケジュールを確定できないと困るよ」
アジャイル開発で顧客(発注)と開発(受注)サイドの双方から最もよく言われることがこの工数やスケジュールの見積もりの難しさではないでしょうか。
ウォーターフォール型開発の場合、各工程の費用やスケジュールの見積もりは、一度決めた要求仕様以外の機能を実装するためのコストをリスクとして、あらかじめ、かなり多めに見積もりの中に上乗せするので、それ自体は比較的容易です。しかし、見積もりの精度を上げることは容易ではありません。
一方、アジャイル開発の場合、「顧客の変更要求を柔軟に取り入れる」ことを特長としています。従って、プロジェクトスタート時に「工数がどの程度膨らむのか」「最終的にどのくらいのコストがかかるのか」「開発期間はどれだけ必要なのか」などの条件を確定させにくいのです。そもそもアジャイル開発では要件が可変要因ですから、アジャイル開発でウォーターフォール型のように要件を最初に確定させるのは無理があります。
特に一括請負で契約を締結している場合、顧客側は「実際の工数より過大に見積もる(過大なコストがかかる)」ことを、開発側は「実際の工数より過小に見積もる(適切な対価を得られない)」ことを、それぞれリスクとして抱えながらプロジェクトをスタートしなければなりません。しかし問題の本質は、プロジェクト開始時に工数確定が難しいアジャイル開発に、現在ソフトウェア開発案件で契約の主流となっている一括請負契約がそぐわないという点で、これがアジャイル開発普及の大きな障壁となっています。
指摘その2「“お客様は神様”でしょ。顧客と開発者の“対等”な関係は日本の商習慣に合わないよ」
これは、ある意味、アジャイル開発の普及だけでなく、日本のソフトウェア開発の競争力向上に最も関係してくる問題点なのかもしれません。しかし、ウォーターフォール型開発に比べ、アジャイル開発には特に強く影響します。
ソフトウェア開発に限らず、日本では「お客様は神様」という言葉に代表されるように、顧客はサービスの提供者より立場が上という考え方が広く浸透しています。これは「顧客と開発者は対等なパートナー」という意識が強い欧米の商習慣と大きく異なります。
アジャイル開発は、顧客と開発者の密で対等なコミュニケーションを基本としています。例えば、イテレーションごとに、開始時に次に開発する要件をどれにするかを話し合いで一緒に決め、終了時に出来上がったソフトウェアの受け入れテストを顧客が行います。
開発者にとって、顧客は「神様」ではなく、プロジェクト遂行のための重要なメンバーなのです。顧客と開発者は対等な立場でディスカッションを重ねながら、同じゴールに向かって進んでいくことが理想とされています。ここでもし、過度な上下関係が強要されることになれば、それはもうアジャイル開発ではありません。顧客、開発側を問わず、この新しい関係性になじめない日本企業のほうが、まだ多いのではないでしょうか。
では仮に双方が対等な立場で連携しながらシステムが出来上がったとしましょう。このシステムに不具合が生じたとき、一体どちらが責任を取るべきなのでしょうか。顧客がプロジェクトメンバーの一員ならば、その責任の一部を顧客が負うのでしょうか。また、開発側が顧客の提案や要求の間違いになぜ気づかなかったのかと顧客側に責められたとき、どう対処すべきなのでしょうか。このように、開発における責任分岐点がはっきりしないということも、アジャイル開発におけるビジネス上の課題として指摘されやすい傾向にあります。