dskst's diary

Life and Tech Blog

おすすめの工数見積もり方法 2点見積もり

見積もり際に、ここ最近ずっと2点見積もりを使っている。
今日はそんなおすすめの工数見積もり方法についてのお話。

f:id:dskst9:20170708232958j:plain

(前置き)ストーリーポイントと相対見積もりについて

本題の前に相対見積もりとストーリーポイントについて少し触れよう。
私は人日、人月などの絶対見積もりは使わず、相対見積もりにてストーリーポイントをつけている。

そのため本記事もストーリーポイントを使用しているが、よくわからないという方は「相対見積もり」や「ストーリーポイント」でググってもらうと詳しい記事があるのでそちらを見てみてほしい。

2点見積もりとは

最小工数と最大工数の2つを算出して見積もる方法のこと。
見積もり案件規模が大きい、または不確定要素があるという時に効果を発揮する。

hirokidaichi さんの記事に、2点見積もりのことがさらに詳しくまとまっているので、是非一読いただければ思う。
qiita.com

1点見積もり

普段よく目にするのが下記のような1点見積もり。

タスク名 sp(ストーリーポイント)
タスクA 5
タスクB 3
タスクC 21
合計 29

これには個々人の尺度でバッファも乗せているのだろう。
見積もりは大きくなればなるほど不確実になる。 タスクCは本当に 21 なのか、もっと少ないのか、この判断が難しいはずだ。

スポンサーリンク

2点見積もり

対する2点見積もりは順調に進行した場合、遅延した場合、不安量をまとめる。
※記事によって色んなの呼び方があるが、本記事では以下の名前で統一する。

  • sp順調:順調に進行した場合のストーリーポイント
  • sp遅延:最大限に遅延した場合のストーリーポイント
  • 不安量:=(sp順調-sp遅延)^2 ※sp順調とsp遅延の差の二乗
タスク名 sp順調 sp遅延 不安量
タスクA 3 5 4
タスクB 2 3 1
タスクC 13 34 25
合計 18 29 69

上記のタスク3を例に取ると、順調に進めば 13 、遅延すると 21 と見積もっている。
もちろん、もっと遅延する可能性があれば 34 と入れたりするもの。

さて、ここから本来積むべきバッファ量を計算できる。
計算したバッファ量を順調spに足すことで、最終的な工数を算出するという仕組み。

バッファ量=合計sp順調+SQRT(不安量)
※合計sp順調と合計不安量の平方根の和

上記の例の場合 18+SQRT(69)=26.3sp となり、1点見積もりよりspが少なくなった。
今回は1点見積もりの方がバッファを積みすぎていたということがわかる。

尚、順調と遅延の差が大きければ大きいほど、不安量が積まれバッファ量に反映されることになる。

何がいいのか

1点見積もりの場合、
8なのか13なのか、うーん。。という悩みがでるはずだ。
そもそも要件が全然定まっていないことも多い。
こうやればすぐ終わるが、もしかすると全然想定が違うかも?そうなると21かな。。うーん…

こんなことを繰り返しているはずだ。 そして1タスク毎の微妙なズレが見積もり全体を破綻させるのだ。

2点見積もりの場合、
最小と最大を取るのでそこはざっくりといける。
ざっくりといく割にはかなり正確な値となってはじき出される。

  1. 見積もりという不確実なもので悩む時間を削減
  2. 悲観的見積もり、楽観的見積もりの偏りが少ない
  3. 不安量が多いタスクの洗い出しができる

さいごに

不確実性のコーンを考えると、開発前段階で正しい見積もりはでないので、そのに力を注ぐ価値はない。
不安量の高いタスクから消化していき、見積もりをブラッシュアップしていくのがいいのだろう。