アジャイルやスクラムの「完成の定義」について、本サイトでもいくつか紹介しているが、問い合わせが多いので、補足して説明しよう。
「完成の定義」「Doneの定義」「完了の定義」いずれも同じ意味で使われる。
人により、そして組織により、呼び方は違うが、「完成の定義」はたった1つである。
「完成」か「未完成」か、それだけだ。
「第一の完成」、「レベル3の完成」、「80%完成」、そういうものはない。
「できたか」、「できていないか」、しかない。
製品やサービスが「できた」と言えるのは、お客様に届けることができる状態のことを言う。だから、コンセプトやアイデアをカタチにして、顧客に届けるまでに必要なことを全て含んでいる。
例をあげれば、以下である。
プロダクトのコンセプトやアイデアから始まり、
- 要求の収集
- 要求の調査・分析
- 要求の定義
- ソリューション検討(スパイクやPoC)
- 設計
- 開発
- コードレビュー
- リファクタリング
- ピアチェック
- 単体テスト
- 結合テスト
- システムテスト
- 受入テスト
- パフォーマンステスト
- 回帰テスト
- セキュリティーテスト
- リリースノート
- 操作・サポートマニュアル
- トレーニング
そして、顧客や利用者へのリリース。
場合によっては、独立したユーザー体験チームによる認知性・操作性のチェックだとか、社長も含めた全役員の前での公式デモなんかもあるだろう。
ペースメーカなどの医療機器では、体の動き、体温、心拍数を感知して最適なパルスに調律する精緻な検査を、何度も繰り返し行う。人命に関わることだから、ひとまずリリースして様子を見る訳にはいかない。リリースまでの品質は100%でなくてはいけない。
企業によっては、公式なゲートチェックなど組織レベルのガバナンスもあるだろう。
更に、監督官庁による届け出や承認が必要なケースもある。
これらを全て完了したら、インクリメントが本当に「完成した」と言える。
だが。。
現実問題、これら全てを1~2週間のスプリントでこなすのは難しいこともあるだろう。
ウェブアプリのように、その日のうちに「完成」できるものもあれば、どう頭をひねっても数ヶ月かかるものもある。。
だから「完成の定義」を全員で定義するのである。
本当の「完成」は1つだ。
それは、顧客にリリースできる状態に仕上がったこと。
だが、その前に、開発してテストして、ひとまずカタチになった「完成」もあるだろう。
これを「プロダクトバックログ項目の完成」という。「ユーザーストーリーの完成」でもいい。
スプリント計画でプロダクトオーナーの受入基準も特定してるはずだから、それを満たすよう作り、POに受入テストをしてもらいOKをもらった状態である。
サービス内容や対象顧客によっては、このレベルで即リリースできるケースもある。
その場合、「プロダクトバックログ項目の完成」=「完成の定義」である。
スプリント期間中に、これらのバックログ項目はどんどん完了する。そして、都度都度リリースしてくイメージである。
あるいは、スプリントの公式レビューまで待つケースもある。POのOKを取り付けたバックログアイテムを溜めておき、スプリントの最後に公式レビュー会を開催して見てもらうケースだ。
そこには、担当役員やステークホルダーを呼んで、公式のお披露目会を行う。
それが組織のセレモニーであり、公式な承認を取るシーンであるなら、それまでリリースできない。
この場合、「スプリントの完成」=「完成の定義」となる。
そして、冒頭のケースに戻ろう。
業界によっては、監督官庁による検査が必要であったりする。そのケースでは、政府から承認をもらわない限りリリースできない。
このケースでは、「リリースの完了」=「完成の定義」だ。
いくつも完成がでてきたが、本物の「完成の定義」は1つだけである。
「完成の定義」をややこしくしているのは、人や組織により、「完成」がまちまちであることだ。
だから、なにを「完成」と呼んでいるのか、関係者全員で合意しておかないといけない。
アジャイルコミュニティーで汎用的に使われている「完成の定義」には以下の3つある。
- バックログアイテム(ユーザーストーリー)の「完成の定義」
- スプリント(イテレーション)の「完成の定義」
- リリースの「完成の定義」
いくつもあるからややこしい。
「完成の定義」は、本来1つであるべきものだ。
だから、リリースの完成のみ、「完成の定義」と呼び、その他は「完成」とだけ呼ぶといいだろう。あるいは、呼び方を変えて「完了」にする。
- バックログアイテムの完成(完了)
- スプリントの完成(完了)
- リリースの完成(完了)、これがいわゆる「完成の定義」
「完成の定義」は開発チームの力量を反映する。
最初に目指すのは、プロダクトバックログ項目の完成(完了)だ。スプリント中に、バックログ項目の完了をいくつもできるようにしよう。
チームの総合力が上がれば、後続のスプリントの完成(完了)作業を前倒しできる。担当役員の公式レビュー会を前倒しすることで、スプリント中程で本番移行できるかもしれない。
最終的に、チームのチカラをもりもり増強して、リリースに必要な全ての作業をスプリント内で完結できるようにする。そうすれば、チームでいう完成(完了)が、正にリリースの完成(完了)となり、結果、即リリースできる「完成の定義」となる。
あなたのチーム、プロダクト、組織の「完成の定義」、今一度、何を指しているのか確認してみてはどうだろう。