アジャイル開発の教育で、リリースパターンを説明することがあって、
よくこの質問を受けます。
質問者:Q 私:A
Q:「アジャイル開発でイテレーション(スプリント)ごとにリリースしますか?」
A:「開発しているシステムやお客様が希望しているかなど、環境によりますね。」
Q:「やっぱりそうなんですね。毎回リリースできないですよね。」
と言って安心される方がいます。
ここで、安心される方には、「できるわけないよ」とか、「やりたくない」とか、
「やりなさい」と言いたくない、というのが含まれていると思います。
当然にイテレーション(もしくはスプリント)の期間は、1から4週間なのですから、
最初からリリースしたところで、業務としては使えないかもしれません。
だとしたらなぜ
「アジャイル宣言の背後にある原則」に
「動くソフトウェアを、2-3週間から2-3ヶ月という
できるだけ短い時間間隔でリリースします。」
書かれているのでしょうか。
安心している人に言うのは、
A:「毎回システムテストを実施して、受け入れテストを実施して、
提供するレベルを維持してください。
また、開発チームには毎回リリースする覚悟でやらせてください。」
と言うようにしています。
この部分が大切だと思っています。
話はちょっと変わりますが、私が開発リーダーだった時、
1カ月間隔でリリースする提供物を作成していました。
リリースして利用するか、お客様利用時期、欲しい機能に
よりますので、一カ月に一回修正をあてていたわけでは
ありません。
当然ながら、システムテストで結果がNGになり、
提供できなかったこともあります。
「あのチームは1カ月に1回リリースし、
アジャイル開発だと言っているが、
品質が悪いんだよ」
と言われたこともあります。
「品質が悪い」について言えば、
アジャイル開発を社内で進めようとした時の抵抗だった
のかもしれないです。
また、製品機能が不十分であるといわれていたのかもしれません。
(当時そう思い、さらなる良い製品を目指そうと思っていました)
ただし、私たちのチームのストロングポイントは、
「テストでOKが出ればお客先に出ていくんだ」
という覚悟だと思います。
その覚悟があったからこそ、
デグレートさせてはいけない、リグレッションテストで確認しよう
となっていたのです。
実際に新機能の不具合はありましたが、
非互換以外のデグレートはありませんでした。
「え?気合だけ」って思うかもしれません。
実態は違います。
しかし、その覚悟があるからこそ実態が伴ってくるのです。
「LeanとDevOpsの科学」にも書かれているので、
続きを書きたいと思います。