プランニングポーカーでアジャイルな見積もりを!
今回は、4日目に行われたJames Grenning氏による「Beyond Planning Poker - The Planning Poker Party」の様子を紹介します。アジャイルマニフェスト起草者の一人であるJemes Grenning氏は「プランニングポーカー」という見積もり手法を定義した人物であり、組み込みのC言語におけるアジャイル開発の第一人者としても知られています。セッション概要は次の通り。
世界中の人々がプランニングポーカーから発見を得ているだろう。プランニングポーカーは技術として役立つものだが、ただのゲームではない。ゲームのルールを知っているだけでは、「見積前ストーリーの大群」の前では正しく機能しないことがある。このセッションでは、プランニングポーカーやその原則、別の利用方法などを紹介する。そして、プランニングポーカーと類似性グルーピングのアイデアを発展させた「プランニングポーカーパーティ」を紹介する。
プロジェクト開始時点で、これからこなすべき要求の山を一つひとつ見積もるのは大変な作業です。しかし、今回紹介するプランニングポーカーパーティーによって、「見積前のストーリーの大群」にも対応できるようになるとGrenning氏は言います。セッションをのぞいてみましょう。
プランニングポーカーを使った見積技法
プランニングポーカーとは、「1、2、3、5・・・」といった数字が書かれたカードを使って、タスクの規模を相対的に見積もる手法です。やり方はとても簡単。まず、作業を行うメンバーを集め、それぞれにカードを配ります。その後、それぞれのタスクに対して開発を担当するメンバーが思いのままに数字のカードを出し合います。
ポイントは、メンバーがそれぞれ提示したポイントについてお互いに根拠を述べ合うところにあります。「テストデータの作成に時間が掛かる」「テンプレートを使えば簡単」など、各メンバーの考えをシェアすることで、一人で考えている時には漏れていたかもしれない工夫や懸念材料を洗い出すことができます。ひととおりディスカッションを終えたら、再度カードを出し合います。このサイクルを2、3回繰り返すことで、全員がある程度、納得できる見積もりを出すことができるようになるという仕組みです。
カードに書かれた数字は通常、ポイントと表現されます。これは、あくまで各タスクを相対的に評価するための目安で、単位自体に「工数」「難易度」など特定の意味が結びついているわけではありません。例えば、日数で計算したい場合は「終わらせるのに理想と考えている日数」として数値を使うこともできます。
私自身も試しに現場で使ってみたところ、チームのメンバーから好評を得られたので、その後も継続して作業の見積もりに使っています。実際にメンバーに感想を聞いてみると、前向きな意見が多く寄せられます。
- 作業に100%集中できるという前提で計算できるので見積もりがしやすい
- 漏れていたタスクを発見することができる
- ディスカッションを通して見積もりの勉強ができる
見積もりを繰り返すうちにだんだんと精度が高くなっていきます。「○日だと怖いから2日上乗せしちゃえ!」といった「根拠のないバッファ」もなくなります。
ところで、プランニングポーカーではなぜ「1、2、3、5・・・」というフィボナッチ数を使うのでしょうか?Grenning氏は、それが「花弁の数のように自然な数」であるためだと言います。そもそも、見積もりは正確になりえないものですが、「1、2、3、4・・・」と数字が並んでいると、どうしても正確性を意識せざるを得ません。その点、フィボナッチ数は「ちょうどよい」サイズなのです。
計画初期ではプランニングポーカーパーティーを活用
さて、肝心のプランニングパーティです。プロジェクト当初はタスクの数が多いため、一つひとつにポーカーを適用していると、見積もりに時間が掛かってしまいます。また、リリース計画も同時に検討する必要があるため、ざっくりとした開発のベースラインと見積りを出すために登場するのが「プランニングパーティー」です。まずは、各タスクを「大きいか小さい」といった単位でグルーピングします。
ポーカーほどの精度は得られませんが、大きなタスク、中くらいのタスク、小さなタスクがどれくらいの割合で存在しているか、ざっくりと全体を相対的に把握することによって、木を見て森を見ずという事態になることを避けることができます。計画初期ということもあり、開発のベースラインであるマイルストーンやリリース計画がまだ決まっていないため、以下の点に注意する必要があります。
- 開発者はチームがイテレーションごとに達成できるポイント合計数(Velocity)を意識する
- 顧客はリリース計画を意識しながらゲームを組み立てる
プランニングパーティーを行った後で、各タスクの細かい見積もりにポーカーを適用すれば、時間の浪費を避けるとともに、見積りのブレを抑えることができます。