2点見積法とは
「この作業ってどのぐらいかかりますか?」という質問はエンジニアをやっている限り避けて通ることはできないでしょう。
いわゆる工数見積ですね。
2点見積法とは、この工数見積を最短工数と最長工数の2点で見積もるという手法のことです。
この2点見積法の利点は「担当者の性格・姿勢による見積のブレを解消できる」ということ。
どういうことかを説明するために、まずは1点見積だと困るケースをご紹介しましょう。
1点見積の問題ケース
ケース①性格による見積のブレ
例えば、Aさんはめちゃくちゃ楽観的、一方でBさんはめちゃくちゃ悲観的な性格(これは悪いというニュアンスではなく、ベクトルとしての話です)という場合。
二人にほとんど同じ作業の見積をお願いすると、恐らくこんな見積回答になることでしょう。
数値的に見れば1人日の差ですが、比率で言えばBさんの工数はAさんの1.5倍。これが連続していくと、バカにならない数字で二人の実装コストは乖離していくことになります。
実際にはAさんの工数で済む場合、そのまま合計工数をもとにお客様に費用請求してしまうと、お客様からすると納得のいかない数値になるかもしれません。場合によっては、別の会社に依頼する結論となり案件が頓挫してしまうかも。
ケース②姿勢による工数のブレ
例えば、Aさんはめちゃくちゃ作業が早いけどミスも多くて手戻りが発生しがち、一方でBさんは作業が遅いけどその分丁寧で手戻りもほとんどないという場合。
二人に同じ作業の見積をお願いすると、恐らくこんな見積回答になることでしょう。
実際にはAさんも結局手戻り含めBさんと同等の工数がかかってしまう場合、そのまま合計工数をもとにお客様に費用請求してしまうと、想定よりも収益が出ないという結果になってしまうかもしれません。場合によっては赤字になってしまうかも。
2つのケースを見極めるのは困難
ケース①とケース②は、過大か過小かというベクトルは違えど、二人の見積結果は全く同じです。
二人の性格・姿勢を熟知しており、どちらのパターンか判断がつくということであれば困らないかもしれません。が、よく知らない場合、その見極めは非常に困難を極めることでしょう。
しかしどちらの結果になったとしても、不適切な計画・コストになりうる可能性があります。困りましたね。
どうすれば適切な計画を立て、お客様にも納得してもらえる工数を出すことができるでしょうか?
2点見積法による改善
問題の本質から対処法を考える
2点見積法は問題の見極めを可能とするものではありません。性格の問題か姿勢の問題かなんて、結局のところある程度勝手知ったる仲じゃないとわからないですしね。
ただし、2点見積法では二人の見積もりに共通の基準を置くことができます。それによって工数の乖離を小さく抑えることができるので、結果的に2ケースの問題に対処しやすくなるのです。
具体例を見てみましょう。
この二人の乖離構造を図式化すると、下記のような形になります。
楽観的or速度優先の場合は最短工数に寄って提示しており、悲観的or品質優先の場合は最長工数に寄って見積を提示しているんですね。
二人は同じ作業を見積しているにも関わらず、最短か最長かという部分において、そもそも見積の基準がズレている訳です。それを鵜呑みにしてしまっては、正確な計画を立てられるはずがありませんね。
であれば、二人の見積の基準を合わせてあげればいい。具体的に、どちらの観点で見積をすれば良いかを明示するようにすれば、二人の見積は同じ方向に偏るようになるはず。
無事、乖離を解消することができましたね!
適切な計画バッファを計算する
乖離も解消できたことだし、めでたしめでたし、という訳にはいかないですね。
二人とも最短で算出したのでは、何か問題が起きた時に破綻してしまいます。この問題を防ぐには、計画のゆとり、いわゆるバッファを計算する必要があります。
この場合、今度は最大工数の観点で見積もるようお願いすることで、二人の基準を合わせながらリスク計算ができます。
これで考慮すべきリスクに対する対処工数を算出することができました。
実際には、全ての作業で想定されるあらゆる問題が発生することはまずないと思うので、1/2とか2/3とかの係数をマネジメント工数も考慮しながら置くことが多いかなと思います。
まとめ
まとめると、2点見積法は理論上(※ここがポイント!)、下記のことを達成できます。
- 担当者の性格・姿勢による見積のブレを解消できる
- 最短工数をもとに基準となる工数を算出し、最大工数をもとにバッファを算出することで、適切な計画を策定できる
2点見積法だけでは問題の本質を改善し切れない
理論上と書いた通り、実際のところ、2点見積法を導入したからといって問題の本質は改善し切れません。
例えばBさんの場合、ついつい無意識に保険をかけて考えてしまうかもしれません。その場合、最短工数を求めても、結局乖離が起きてしまいそうです。
反対にAさんの場合、そもそもの性格的にリスクを考えるのはあまり得意ではないかもしれません。結局のところ楽観的に考えてしまい、最長工数を求めても、こちらも乖離が起きてしまいそうです。
また、性格や姿勢の問題だけでなく、能力を起因として乖離が発生することも多いでしょう。熟練の経験者であれば様々なリスクケースを考えられますが、新人にそれを求めるのは酷というもの。
つまり、「2点見積法が理論通りに機能するのは、担当者が同程度の能力を持っており、かつこちらの思惑通りに見積の基準を合わせてくれた時だけ」なんですね。
見積ポーカーによる補助導入
2点見積法がうまくいくのは担当者の見積基準が一致していた場合のみ。
逆に言えば、担当者の見積基準がズレていたらそれを補正するようにできれば、2点見積法は魅力的な技法になりそうです。
そこでおすすめなのが見積ポーカー(プランニングポーカー)です。
アジャイルの技法ではありますが、自分はウォーターフォールのプロジェクトで導入していました。
見積ポーカーとは、一人ではなく複数人で見積もる手法です。
見積に参加する全員に同じ手札のカードを配り、それぞれが作業にかかる工数を一斉に提示して、認識にズレがある場合は話し合ってそれを解消します。実際やってみるとわかりますが、見た目的にはまさにポーカーのようです。
この見積ポーカーの素晴らしい点は3つあります。
- 異なる性格・姿勢を持つ人間が同じ作業を見積もり、納得のいく数値になるまで話し合うことで、性格や姿勢による基準のズレを小さくすることができる(2点見積法の問題点改善①)
- 新人の作業見積にベテランの視点が加わることで計画が破綻し辛くなる(2点見積法の問題点改善②)。また、ベテランから考慮しなければならないケースを教えてもらうことで、新人の見積レベルを向上させることができる
- 関係者間で認識共有を図ることで、個人の考慮漏れであったり重要な情報の連携不足に気づきやすくなり、見積精度が向上する
つまり、見積ポーカーを補助として導入することで、2点見積法がより機能しやすくなるんですね。
ちなみにおまけでもうひとつ言うと、何かちょっとレクリエーションっぽくって楽しい、というのも利点です。
2点見積法+見積ポーカーの導入例
自分がプロジェクトに導入した時は下記のように運用していました。
参加者:エンジニアリーダー、レビュアー、担当者の3人
見積単位:開発単位である1機能に対して、PG(実装)、UT(単体テスト)、LT(結合テスト)など、V字モデルの作業単位で見積を行う
事前準備:担当者は見積の根拠となる作業内訳を事前にまとめておく。準備完了したら見積会議を設定する
見積会議は下記のような順番で進めます。
-
見積ポーカーで利用する工数カードを参加者に配る(リモートの場合は省略)
-
担当者から見積単位毎に作業内訳を軽く説明してもらう(どんな作業、どんなテストケースを想定しているか)
-
参加者全員で最短工数を考え、工数を決めたら準備完了したことを知らせる
-
提示した工数に大きなズレがあった場合、最も乖離が大きい順に、見積の根拠を説明してもらう
-
説明を聞いて提示工数を変えたくなった場合は適宜工数を更新する
-
皆の提示工数が完全一致する、または工数のズレが許容範囲内になったら最短工数を決定する
-
次に最長工数を決定するにあたり、担当者に懸念しているリスクを聞く
-
参加者が挙げたリスクを考慮し、最長工数を考え、工数を決めたら準備完了したことを知らせる。そして4〜7を行う
-
最短、最長工数が確定したら、最短工数で作業タスクを設定する。そして(最長工数 - 最短工数) * リスク係数(1/2か2/3か)を作業バッファタスクとして設定し、それをもとにWBSを作成する
-
見積単位の数だけ2〜10を実施
あえて作業タスクとバッファを分けているのには理由があります。
- 作業タスクを最短工数とすることで、担当者が最短工数を意識して作業しやすくなること
- バッファ工数の半分を過ぎても対応完了の目処が立たない場合はアラートをあげるなど、リスク対策に対する明確な基準を設けられる
多くの作業は少なからず問題やミスが発生するため、最短工数通りにはいかないでしょう。ただし、最短工数で終わらせようという努力はして欲しいので、最短工数は意識して欲しいという意図があります。
また、問題が発生して順調に進まなかった時、担当者としては何とかそれを自分の力で終わらせたいという欲に駆られ、ついつい期日を過ぎても個人で溜め込んでしまいがちです。もちろん自力で解消できた方が本人のレベルアップにも繋がるので、ある程度は許容したい。けれど計画が破綻するのは困るので、マネジメント観点ではどこかでリスクジャッジが必要となります。
WBSを見ただけでは「個人の力であとちょっと頑張れば終わる」のか「バッファを食い潰しても終わらない」のかは判断がつかないですし、「もうちょい頑張れば終わると思うんです」という担当者の判断を鵜呑みにして良いかも判断が難しいです。
そういった時に、ここまでに解消できなかったらどんな状況だったとしても必ずアラートをあげること、という共通のルールをプロジェクトで持つことは、リスクヘッジの観点で非常に有用と判断しています。
2点見積法+見積ポーカーの欠点
2点見積法+見積ポーカーにて精度の高い見積を実現する方法を紹介させていただきました。
ただしここまで読まれた方は感じたかと思いますが、この方法は結構な時間を消費します。そのため、
- 工数の乖離があまり発生しない、あるいは考慮すべきリスクがないような作業は、簡略的に済ませたり1点見積でOKにしたりする
- なるべくコンパクトに済むよう、見積会議の進め方を工夫する(話が脱線しそうになったら戻すなど)
といった運用面の考慮は必要な認識です。
また、見積ポーカーは、担当者に対してリーダーやレビュアーが異なる価値観を持って意見を言ったり、担当者の見積結果をリーダーやレビュアーが評価できないとあまり意味がないため、プロジェクト体制によっては導入が難しい場合もあると思います。
つまり、この方法も決して銀の弾丸という訳ではありません。
なので、ご自身のプロジェクトに導入しても有効に機能するかどうかはきちんとご検討いただければと思います。が、自分としてはおすすめの技法なのは間違いないです。
もし見積精度でお困りの方がいれば、ご参考になれば幸いです。
まとめ
メリット
- 2点見積法により、見積に共通の軸(最短観点で考えるか、最長観点で考えるか)を持ち込むことで、見積のブレを小さく抑えることができる。また、最短工数+最長工数から想定されるバッファを算出することで、安定した計画を立てやすくなる
- 見積ポーカーを補助として導入することで、認識のズレや考慮漏れ、関係者間の能力差を吸収しやすくなり、2点見積法が機能しやすくなる
- 最短工数と最長工数に基づくバッファでタスク分けすることにより、単純なWBS表現だけでは見え辛いリスク管理がしやすくなる
デメリット
- 見積に時間がかかるし、関係者の負荷があがる
- プロジェクト体制によってはあまり効果を発揮しない場合がある。例えば関係者が全員同じ気質(全員が楽観的とか、全員が悲観的とか)の場合は結局どちらかに偏ってしまいがちだし、担当者以外があまりその機能に詳しくなくて適切に評価できない場合は担当者の1点見積と実質変わらない結果になってしまう
最後に
自分がこの2点見積法+見積ポーカーを導入したのは、FF14のCTOをやられていた橋本善久さんのプロジェクトマネジメント講座がきっかけです。
Youtubeに動画があがっており、めちゃくちゃ面白いので、興味があればぜひご覧ください。
橋本善久氏講演 『ゲーム開発プロジェクトマネジメント講座2012』 01
橋本善久氏講演 『ゲーム開発プロジェクトマネジメント講座2012』 02