スクラムの「完成の定義」はたったひとつ。「完成の定義」を全員で合意しよう

アジャイルやスクラムの「完成の定義」について、本サイトでもいくつか紹介しているが、問い合わせが多いので、補足して説明しよう。

「完成の定義」「Doneの定義」「完了の定義」いずれも同じ意味で使われる。
人により、そして組織により、呼び方は違うが、「完成の定義」はたった1つである。

「完成」か「未完成」か、それだけだ。

「第一の完成」、「レベル3の完成」、「80%完成」、そういうものはない。

「できたか」、「できていないか」、しかない。

製品やサービスが「できた」と言えるのは、お客様に届けることができる状態のことを言う。だから、コンセプトやアイデアをカタチにして、顧客に届けるまでに必要なことを全て含んでいる。

例をあげれば、以下である。

プロダクトのコンセプトやアイデアから始まり、

  • 要求の収集
  • 要求の調査・分析
  • 要求の定義
  • ソリューション検討(スパイクやPoC)
  • 設計
  • 開発
  • コードレビュー
  • リファクタリング
  • ピアチェック
  • 単体テスト
  • 結合テスト
  • システムテスト
  • 受入テスト
  • パフォーマンステスト
  • 回帰テスト
  • セキュリティーテスト
  • リリースノート
  • 操作・サポートマニュアル
  • トレーニング

そして、顧客や利用者へのリリース。

場合によっては、独立したユーザー体験チームによる認知性・操作性のチェックだとか、社長も含めた全役員の前での公式デモなんかもあるだろう。

ペースメーカなどの医療機器では、体の動き、体温、心拍数を感知して最適なパルスに調律する精緻な検査を、何度も繰り返し行う。人命に関わることだから、ひとまずリリースして様子を見る訳にはいかない。リリースまでの品質は100%でなくてはいけない。

企業によっては、公式なゲートチェックなど組織レベルのガバナンスもあるだろう。

更に、監督官庁による届け出や承認が必要なケースもある。

これらを全て完了したら、インクリメントが本当に「完成した」と言える。

ソース画像を表示

だが。。

現実問題、これら全てを1~2週間のスプリントでこなすのは難しいこともあるだろう。

ウェブアプリのように、その日のうちに「完成」できるものもあれば、どう頭をひねっても数ヶ月かかるものもある。。

だから「完成の定義」を全員で定義するのである。

本当の「完成」は1つだ。
それは、顧客にリリースできる状態に仕上がったこと。

だが、その前に、開発してテストして、ひとまずカタチになった「完成」もあるだろう。

これを「プロダクトバックログ項目の完成」という。「ユーザーストーリーの完成」でもいい。

スプリント計画でプロダクトオーナーの受入基準も特定してるはずだから、それを満たすよう作り、POに受入テストをしてもらいOKをもらった状態である。

サービス内容や対象顧客によっては、このレベルで即リリースできるケースもある。
その場合、「プロダクトバックログ項目の完成」=「完成の定義」である。

スプリント期間中に、これらのバックログ項目はどんどん完了する。そして、都度都度リリースしてくイメージである。

あるいは、スプリントの公式レビューまで待つケースもある。POのOKを取り付けたバックログアイテムを溜めておき、スプリントの最後に公式レビュー会を開催して見てもらうケースだ。
そこには、担当役員やステークホルダーを呼んで、公式のお披露目会を行う。
それが組織のセレモニーであり、公式な承認を取るシーンであるなら、それまでリリースできない。
この場合、「スプリントの完成」=「完成の定義」となる。

そして、冒頭のケースに戻ろう。
業界によっては、監督官庁による検査が必要であったりする。そのケースでは、政府から承認をもらわない限りリリースできない。
このケースでは、「リリースの完了」=「完成の定義」だ。

いくつも完成がでてきたが、本物の「完成の定義」は1つだけである。

「完成の定義」をややこしくしているのは、人や組織により、「完成」がまちまちであることだ。

だから、なにを「完成」と呼んでいるのか、関係者全員で合意しておかないといけない。

アジャイルコミュニティーで汎用的に使われている「完成の定義」には以下の3つある。

  • バックログアイテム(ユーザーストーリー)の「完成の定義」
  • スプリント(イテレーション)の「完成の定義」
  • リリースの「完成の定義」

いくつもあるからややこしい。

「完成の定義」は、本来1つであるべきものだ。
だから、リリースの完成のみ、「完成の定義」と呼び、その他は「完成」とだけ呼ぶといいだろう。あるいは、呼び方を変えて「完了」にする。

  • バックログアイテムの完成(完了)
  • スプリントの完成(完了)
  • リリースの完成(完了)、これがいわゆる「完成の定義」

「完成の定義」は開発チームの力量を反映する。
最初に目指すのは、プロダクトバックログ項目の完成(完了)だ。スプリント中に、バックログ項目の完了をいくつもできるようにしよう。
チームの総合力が上がれば、後続のスプリントの完成(完了)作業を前倒しできる。担当役員の公式レビュー会を前倒しすることで、スプリント中程で本番移行できるかもしれない。

最終的に、チームのチカラをもりもり増強して、リリースに必要な全ての作業をスプリント内で完結できるようにする。そうすれば、チームでいう完成(完了)が、正にリリースの完成(完了)となり、結果、即リリースできる「完成の定義」となる。

あなたのチーム、プロダクト、組織の「完成の定義」、今一度、何を指しているのか確認してみてはどうだろう。