私たちのチームでは、今年の4月からスプリントで開発する項目(以下ユーザーストーリーと呼びます)の見積もりをリファインメントにて行なってきました。
今回は、このリファインメントで試行錯誤してきた内容をまとめます。
前提
リファインメントとは?
スクラムガイドより
プロダクトバックログに含まれるアイテムに対して、詳細の追加、見積り、並び替えをすることを、プロダクトバックログのリファインメントと呼ぶ。これはプロダクトオーナーと開発チームが協力して行う継続的なプロセスである。プロダクトバックログのリファインメントによって、アイテムのレビューと改訂が行われる。いつどのようにリファインメントをするかは、スクラムチームが決定する。リファインメントは、開発チームの作業の 10%以下にすることが多い。
私たちのチーム
エンジニア6名、デザイナー3名(1名増えた!)のチームで1週間で1スプリントのペースで実施しています。
リファインメントの概要
目的
ユーザーストーリーの見積もりと、必要な機能や実装方法の認識合わせを行う
流れ
準備:
プロダクトオーナーがプロダクトバックログのユーザーストーリーの優先順を決定
- 開発者から優先順をあげたいユーザーストーリーがないか確認
- 優先順の高いユーザーストーリーから3~7を実施
- プロダクトオーナーにユーザーストーリーと、受け入れ条件の内容を説明してもらう
- 開発者と話し合い、ユーザーストーリー、受け入れ条件の内容の調整
- プランニングポーカー(*)にて、ポイントを提示
- ポイントを提示した理由について話し、必要な作業について認識を合わせる
- ユーザーストーリーに対するポイントを決定
- プランニングポーカーについては、「ユーザーストーリーとプランニングポーカーを使ってアジャイルに見積もりしよう!」が詳しい記載ありわかりやすいです。
リファインメントをうまく運用するためのポイント
上に挙げた通り、リファインメントはユーザーストーリーの内容を修正しつつ、見積もりをした上で共通認識の構築し、スプリント中の開発に繋げる重要な役割を持っています。リファインメントをうまく運用するための、ポイントを以下にまとめます。
ユーザーストーリーと受け入れ条件の内容について、プロダクトオーナーと調整し、合意する
スプリント期間中に開発した際に曖昧な点や、認識違いを残さないためにもプロダクトオーナーとの認識合わせを見積もりの前に行います。「××のように作った方がよりユーザが使いやすいのではないか?」、「○○のように作れば開発の時間が短くできます」等の会話を通して、ユーザーストーリーを良い形にしていきましょう。良いユーザーストーリーの作り方に関しては「ユーザーストーリーの”INVEST”とどう付き合うか」が参考になります。
また、リファインメント中の会話のログを取っていたこともありましたが、現在はユーザーストーリーと受け入れ条件に重要なポイントを反映するようにしています。(ログ取りはメンバーの負担が大きいため、継続できず断念しました。。)
ユーザーストーリーを小さく保つ
大きいユーザーストーリー程正確に見積もるのが難しいため、見積もり時に大きなポイントが出た場合は、複数に分割する等して、ユーザーストーリーを小さく保つようにしています。「1スプリントで終えることができるかどうか?」を基準にし、大きいポイントが出た場合には、ユーザーストーリーの分割を行いましょう。
開発者間の会話で、実装のイメージを固める
プランニングポーカーにてポイントを提示したあとは
- どのような作業を想定しているか?
- なぜそのポイントになったのか?
を数人に話してもらい、チーム内で同じ実装イメージを作っていきます。単純な多数決にはせず、ポイントが異なる人にも意見を聞きましょう。開発工数を短縮するアイディアや、予想していなかったリスク等が出ることも。
見積もりしてから開発するまでを短く保つ
「3週間先のスプリントまでが見えるようになっていることが理想」という話もありますが、私たちのチームでは1スプリント+α分の見積もりができれば、その週のリファインメントは終了するようにしています。あまり先のユーザーストーリーの見積もりをし過ぎても、
- 見積もり後に状況が変わってしまい、再度検討が必要になる
- リファインメント時の会話から時間が経過すると記憶が薄れてしまう
等の問題が発生し、現在の形に落ち着きました。
ただし、「欲しい機能がいつ完成するか予想したい」等のケースがある場合は、関連するユーザーストーリーを全て見積もりをして予想を立てています。
プロダクトオーナーに同席してもらう
リファインメントに慣れてくると、「プロダクトオーナーがいなくても、見積もりができるだろう」と思ってしまうことがありますが、上述した認識合わせがされないまま実装されてしまうため、認識ずれや実装漏れが発生しやすくなります。私たちのチームでもこの失敗を経験しており、以降は「非公式リファインメント禁止」の約束が掲げられました。
今抱えている課題
会話をしつつ、短時間でストーリーの見積もりを合意したい
会話を重視し過ぎるあまり、予定していたリファインメントの時間内に終わらないこともしばしばあります。タイムキーパーを設置して時間を意識するようにしたこともありましたが、ポイントが大きいストーリー程時間を掛ける必要があり、難しいです。。誰か良い方法を知っていたら教えてください!