リリース==稼動開始という呪縛

アジャイル開発でのリリース、特に一回目のリリースは使い心地が悪いだろうし、機能的な漏れがあったりして、運用に耐えられないかもしれない。が、小さいサイクルでリリースを繰り返すことにより、運用に耐えられるレベルに達することを期待される。どの時点で実際に運用に使うかは、あくまでも顧客側の判断にゆだねられる。(…ですよね?アジャイル屋じゃないから多分に想像です。)

一方、日本のSI業界は「本稼動」を保証する契約なのが普通で、しかも、どこかの時点で稼動開始時期と金額を決めたりする。で、その条件のもとで確実に運用に耐えられるものを作らなければならない。こんな状況だと、ベンダ側にとって、全てを差し置いて最優先されるのが「確実性」となるわけです。

そう、システム開発で全てを差し置いて最優先なのが「確実性」となるわけです。

「機能性」「保守性」「使い心地」「品質」「開発効率性」、これら全てを差し置いて最優先なのが「確実性」となるわけです。

大切なことなので何回でも言います。全てを差し置いて最優先なのが「確実性」です。実装なんて足元にも及ばないほど最優先なのが「確実性」です。要件定義よりも最優先なのが「確実性」です。あれ?最後のってなんかおかしくね?

この辺りのギャップは契約手法だけじゃなく、現場の人間の意識に深く入り込んでるはず。特に現場上がりのマネージャ層やリーダー層が一番気にしてきたことなので、これを変えるのは相当労力がかかるだろうなぁと思います。

ブコメより

はてなブックマーク - リリース==稼動開始という呪縛 - @katzchang.contexts

b:id:ryuzee 初期リリースで機能漏れがあるというより重要機能しかないはず

「重要機能がある => 運用に耐えられる」ではないですよね。
例えば顧客が「8か月後に稼働させます!」な保証を求めたら、アジャイル的にはどう解決するんだろうか。それとも、そもそもそんな契約はしないんだろか?
特に何らかの既存システムがある場合、そのシステムと同等の機能を求められたりするのが普通。既存システムを捨ててしまうのが間違い?それとも初期リリースで同等の機能を実装し直して、そこからスタートすべき?
*1

*1:id:kakutaniid:masayangに、不躾にもIDコールしてみるテスツ。