見積ポーカーをやってみた
2011-05-04 agile, software-estimation
先日客先にて、新プロジェクトの着手に先立ち工数見積をする機会がありました。その際、開発リーダーから見積ポーカーなる手法でやってみようという提案があり、実際にやってみたところ非常に良かったのでメモしておきます。
見積ポーカー(またはプランニングポーカー)とは、アジャイル開発における開発工数を見積もるための1つの方法とのこと。もしかしたら一般的な見積ポーカーの方法とは異なるかもしれませんが、今回のやり方をメモしておきます。
1. 準備
- 開発メンバー全員
- テーブル(円卓だとなお良い)
- ホワイトボード
- ポスト・イット(または貼りつけられる付箋紙)
- 各メンバーに「2」,「5」,「7」,「10」と書いた4枚のポスト・イットを配っておく(ポイントカード)
2. やり方
システムに盛り込むべき機能を洗い出す
メンバー全員で洗い出し、ポスト・イットに書き込み、ホワイトボードに貼りつけていきます。 なるべく粒度を揃えられればベストですが、それよりも大事なのはモレを無くすこと。この段階で出てこない物は見積もれません。
グルーピングする
工数が大きそうな物、すぐできそうな物、中間ぐらいのものぐらいの3グループに分けます。この辺はベテランプログラマが行うべきですね。
全体の機能の中で工数が真ん中ぐらいのものを選ぶ
1つだけ選び、これを「5ポイント」と仮決めします。その他の機能をこの5ポイントとの相対評価で決めていくためです。
1つの機能に対しメンバー全員が同時にポイントカードを出す
ホワイトボードに貼られた機能を示すポスト・イットを剥がし、テーブルに置きます。そして数分間この機能に対しディスカッションします。ディスカッションのポイントは、
- この機能を実現するには何を考慮すべきか
- 他に影響を与える物があるか
- 詳細な機能は決まっているか
- どうすれば楽に実装できるか
etc..
各メンバーは質問を出し合い、イメージが固まってきたら、せーので手持ちのポイントカードを出します。先の5ポイントの機能より工数が掛かりそうであればポイントを大きく出します。この時に他のメンバーより大きく外れた数値を出したメンバーには、なぜその数値を出したのかの根拠を問いただします。そしてその根拠が間違っていたのであれば数値を訂正し新たに工数を出します。いやいや自分はこの数値だよ、という場合にはそのまま残します。最終的に開発リーダーが平均(大体でOK)を機能カードに書き込み、次の機能に移ります。
まだこの段階では工数ではなく、あくまでも相対ポイントです。
すべての機能を見積もりできたら、最終的な工数を出してみる
最初に見積もった5ポイントの機能が3人日ぐらいだったとして、機能全体の合計が200ポイントならば120人日 ≒ 6人月となります。 ここで重要なのは、この数値は正確ではないこと。1週間実装作業を進めてみて、消化したポイントの実績と比較することでスケジュールを決めることをおすすめします。
3. 感じたこと
- ポスト・イットの粘着が弱いといつの間にか落ちてしまうので注意
- みんなで見積もるので、仕様を知ろうとする当事者意識が生まれる
- 直感も大事
- メンバーがどのように実装しようとしているかわかる
非常に良い経験でした。