アジャイルの問題点
東京で開催されたマネージャーのための研修(3日間)に参加した際のこと。1日目の研修を終えた後、友人のT氏と会う機会があり、アジャイルプロジェクトについて話をした。
T氏はアジャイルプロジェクトを担当した経験も多く、アジャイルには広く精通している。そんなT氏がこんな話をしていた。昔担当したプロジェクトで、顧客がアジャイルについて勘違いをしていたため、酷い目にあったと。
「アジャイルは無限に仕様変更できるんでしょ?」そう顧客が理解をしていたため、無限に仕様変更の対応を行う羽目になったそうだ。
完全に間違っているとは言えない。アジャイルはたとえ開発の後期であっても仕様変更を受け入れる。しかし、問題は受け入れる方法にある。ただ受け入れるわけではない。スコープもしくは納期の調整が必要だ。
スコープも納期も調整できていないとすれば、要員の追加や残業での対応が必要となるだろう。そうなると今度は予算の調整が必要だが、おそらく予算の調整もできず、すぐに予算が底をつくことになったに違いない。
そもそもこんな話はアジャイルに限った話ではない。今回の話でアジャイルに問題がなかったことはいうまでもないだろう。そうではないとすると、アジャイルはこういうものだと説明できなかった開発に問題があるのだろうか。私はそれに関しても否定的だ。なんせアジャイルに精通しているT氏が担当しているのだから。
それではどこに問題があったのだろうか。それは顧客、さらには顧客と開発の関係性に問題があったと考えている。実はこの話SIの世界ではさほど珍しい話でもない。笑い話のようでSIerにとって笑えない話でもある。
顧客はそんなに簡単に言うことを聞かないし、いつでも仕様変更をしたがる。そこへ持ってきてアジャイルは無限に仕様変更ができると発注側にとって都合のいい箇所だけを抜き出して、アジャイル手法を導入したのだ。
発注側はスコープ、納期(もちろん品質、予算についても)の調整に関して聞く耳を持たないケースも考えられるし、間に何社か入っている場合、そもそも調整自体行わないことも考えられる。
その場合でも、納期に間に合わせる必要があるとプレッシャーをかけられる。しかし、何を言われようが間に合わないものは間に合わない。そうして納期が遅れると、あたかも開発に全責任があるかのような罵声を浴びせられ、そうなって初めて納期が延期される。
ただ延期されるわけではない、顧客は「特別に納期を1週間伸ばしてあげましょう。その代わりしっかりと対応するように」と迫ってくる。
たとえウォーターフォールであっても同じ問題が起きたに違いない。ウォーターフォールでもまだ仕様が決まったわけではないと難癖をつけられ仕様は変更される。さらにアジャイルとなると、公然と仕様変更をつきつけられる。「それがアジャイルだ」と。
開発手法は、開発と名前はついているものの、開発メンバーだけのための手法ではない。アジャイルでは顧客も含めて一つのチームと定義されている。顧客が積極的に関与しないプロジェクトでは、開始時点からプロジェクトは失敗していると言っていい。丸投げは許されない。
しかし、どのような状況であってもアジャイルを止めてはいけない。生産性からベロシティ(開発速度)を計測し、常に顧客に真実を伝え続ける。たとえ顧客が聞く耳を持たなくても伝え続けなければいけない。結果は同じかもしれない。しかしメンバー(顧客は含まない!)は納期が遅れることをあらかじめ知っているのと知らないのでは大きく違う。遅れるのもすべて予定通り。予定通りで遅れる理由も明確になっていれば罵声を浴びせられたところで悲観的になることもないだろう。
アジャイルに問題点があるとしたら、仕様を受け入れるたびに顧客と調整し続けなければいけない点だろう。顧客の対応次第では、顧客と常に戦い続けることを求められているといっても過言ではない。決して平坦な道ではない。それがアジャイルだ。