ITシステム開発の手法は大きく分けて2つに分けられる、従来の方式の「ウォーターフォール開発」とここ数年のローコード開発で広がった「アジャイル開発」です。
しかしアジャイル開発は成功するのだろうか。と言う疑問が常にあります。
最近でもアジャイル開発での失敗を目の当たりにして、アジャイル開発でどうしても必要となるであろう一つの「技」について書きます。
もちろん開発で必要な技術は沢山あります。しかし成功させる為、少なくとも大赤字にさせない為にはこれが必要です。
アジャイル開発が失敗する見本
アジャイルの開発の多くは「開発する機能」を決め、それを「開発する期間」と「開発する人数」で準委任契約で行う事が多いと思います。一見、何の問題も無いように思えるのですが、「開発する機能」の見積もりが浅いのが通常です。
要件定義、基本設計をしながら開発を進めるアジャイル開発では、着手時には開発機能の「深さ」は見えません。そのためこの機能ならこのくらいで出来るだろう、で人数と期間を見積もります。
開発を進めるなかでユーザから出てくる要件を盛り込みながら進める為、想定以上に要件が出てきたり、想定以上に難易度が高く対応工数が必要となる要件が出て、開発工数が必要になって来ます。それも当初の「開発する機能」の中にです。
そうすると「いつまでたっても要件定義が終わらない」、「出てきた要件を盛り込むので精一杯」という状態になります。しかしお客様との開発機能は網羅できないので、お客様との打ち合せは続き、さらに要件が出てくる、又は仕様変更がでる。しかしそれに対応出来ないと言う状況になり、どんどん工数が膨らみ、開発工数が足りない、品質が確保できない、完成予定になっても動かないと言った状況に陥ります。
「それは出来ません」と言える事
私が考えるアジャイル開発に必要な「言葉」は それは
「それは出来ません」
「それは対象外です」
「これ以上は出来ません」
と言える事です。
準委任契約ですので本来は契約する工数を超える事は無いはずなのですが、前の通り要件の取り込みが十分でない、機能が正常に動かない中ではその時間を超えて対応する事が行われます。
しかし本来は契約する工数内で納めてこそ成功であり、その工数内でユーザが求める機能を実装する事が必要です。
ですので工数内で収まらないような機能には「それは出来ません」、当初の開発機能範囲外となる要件には「それは対象外です」、契約した工数を超える場合には「これ以上は出来ません」と言えることが必要となります。
「ユーザの要件をすべて飲もう」、「ユーザの要求はすべて叶えなければ」と思うプロジェクトマネージャーにはこれが出来ないのです。
そうするとそのメンバは悲惨です。やってもやっても開発が終わらない。打ち合わせするたびに仕様が変わる。
そして早朝深夜まで作業を行い、疲弊していきますが、とどまるところがないのです。
その言葉を言うために
もちろんお客様の要求を拒否する形になるため、それだけの後ろ盾になる資料が必要になります。
それは1機能、1要件あたりの工数の積み上げです。この要件の開発にはこれだけの工数が必要ですを積み上げて、お客様に提示して納得していただけていければ、積み上がった工数で止めることも出来ます。
また見積もった結果、超えそうな機能は第2ステップで実装すると言った調整も可能になるのです。
闇雲に要件を受けて、工数管理もしていないアジャイル開発は危険です。
最近の開発ではそんな開発増えているのではないかと思えます。