見積もりとスコープ — 不確実性コーンと握り方
「いつ終わりますか」に点で答えるから外れる。不確実性コーン、三点見積もり、バッファが足し算にならない理由、参照クラス予測、そしてスコープを交渉可能な形に組み替える言い方までを、前提知識ゼロから解説します。
カーナビは1分単位で嘘をつく
高速道路に乗った直後、カーナビは「17時38分着」と表示します。1分単位です。実際には渋滞や工事で1時間ずれることがある。それでも私たちは毎回この表示を信じますし、もしナビが「17時から19時の間に着きます」と正直に言ってきたら、故障を疑うでしょう。
人は幅で言われるのを嫌い、点で言われたがります。ソフトウェアの見積もりが荒れる原因の半分はここにあります。答えは本当は幅なのに、点で聞かれ、点で答え、その点が約束として一人歩きする。
もう一つ、根深い誤解があります。見積もりが外れるのはサボったか能力が低いからだ、という思い込みです。実際の主因はまだ知らないことがあることで、知らないことの量は気合いでは減りません。調べる・作ってみる・触ってみる、という作業を通してしか減らない。ここから見積もりの一番大事な性質が出てきます。精度は、努力ではなく行動の関数だということです。
不確実性コーン — 精度は最初から出せない
この性質を絵にしたものが「不確実性コーン」です。もとは1981年の Barry Boehm の書籍にある図で、Steve McConnell がこの名前を付けて広めました。横軸にプロジェクトの進行、縦軸に「見積もりが実績の何倍か」を取ると、開始直後が最も広く、進むにつれて狭まる漏斗の形になります。構想段階では実績の0.25倍から4倍、最良と最悪で16倍の開きがあるとされます。
大袈裟に聞こえますが、思い当たる節はあるはずです。「まあ2週間くらいですかね」と言った機能が2日で終わることも、2か月かかることもある。どちらも同じ口から出た同じ言葉です。
ここで外してはいけない読み方があります。コーンは、放っておいても勝手に狭まるとは言っていません。 McConnell 自身、これは達成しうる最良の包絡線であって、不確実性を減らす行動を取らなければ幅は縮まないと注意しています。現場で頻発する事故がこれです。「来月には精度が上がるはずだから」と言いながら、仕様も技術検証も何ひとつ確定させずに1か月が過ぎる。幅はそのままで、期日だけが近づく。狭めるのは時間ではなく、決めることと試すことです。
具体的には3つしかありません。仕様の曖昧な箇所を1つずつ潰すこと、未知の技術を小さく試すこと、そして一番細い経路でいいので端から端まで1本通してみることです。最後のものが特に効きます。画面から保存まで薄く1本通すと、想定していなかった作業がまとめて姿を現すからです。
点ではなく幅で答える — 三点見積もり
では実務ではどう答えるか。最小の道具が三点見積もりです。1つの数字の代わりに3つ出します。
- 楽観値 : 想定していることが全部うまく運んだ場合
- 最頻値 : 普通にやったらこうなる、という一番ありそうな値
- 悲観値 : 起こりうる悪いことが起きた場合(隕石は除く。既知のリスクが顕在化した場合)
3つ揃うと、代表値とブレの大きさを計算できます。PERT と呼ばれる古典的な式です。
は期待値、(シグマ)はブレの大きさを表す標準偏差です。要するに は「最頻値を4倍重く見た平均」、 は「楽観と悲観の幅を6等分した1つ分」。6で割るのは、平均±3σの範囲にほぼ全部が収まるという経験則から来ています。
たとえば 日、日、日なら 日、日です。最頻値の5日で約束していたら、かなりの確率で破ることになります。
この式はベータ分布のごく粗い近似で、厳密なものではありません。それでも価値があるのは、計算結果より3つの数字を口に出させる過程のほうです。「最悪の場合どうなりますか」と聞いた瞬間に、頭の中にあったリスクの一覧が言葉になって出てきます。悲観値が最頻値の3倍なら、そのタスクは見積もる前に調べるべきだ、という判断もその場でつきます。
コメント
コメントにはログインが必要です