例えば「ECサイトに新しい決済機能を追加したい」という要望に対して見積もるとしたらどう回答するでしょう? もちろんこれだけの漠然とした条件では分かりませんが、例えば「3週間あれば」と回答したとしましょう。そこで疑問になるのはなぜ「3週間」なのかということです。2週間と3日間でも、3週間と4日間でもありません。なぜ3週間という数字が出てきたかが問題です。
通常、そこにはこれまでの経験則から導きだされる予想数値が入ります。しかしシステム開発というのは大抵はこれまでにないものを作ることが多いので、経験則だけではカバーしきれません。そこで使われるのが“直感”です。
個人的に直感はおおむね正しいと考えています。しかし直感は定性的なものであり、定量的な測定に対して用いるべきではありません。つまり「できそう」か「できなさそう」かの判断に直感は必要だと思いますが、3週間という数字に対して用いると誤差が大きくなります。
そしてもしお客さんから「なぜ3週間なのか」という疑問が寄せられたらどう答えれば良いでしょう。まさか「直感です」とは答えづらいと思います。対お客さんに対して「直感」という言葉を使うと、それは「適当」という言葉にすり替わるからです。そこで何となくそれっぽい理由を並べてしまったりします。つまり3週間という数字ありきで、後は理由をつけて外堀を埋めていく訳です。こんなやり方をしていたら、それは失敗するのももっともと言えるでしょう。
大事なのは根拠が出せるところまで細分化していくことです。「新しい決済機能を追加する」のに必要な画面修正、データベースの構造変更、テスト、ロジックの変更などを機能単位で書き出していきます。そうすれば経験則でもはかりやすいレベルまで小さくできます。後はそれぞれを足し合わせていけば精度の高い見積もりになるはずです。
人はこれまでにない事由に相対すると、相対的に大きく見積もりがちです。逆に既にある程度把握しているものだと楽観視して低く見積もってしまいます。どちらも正確さという意味においては全くダメです。
根拠がないのであれば、根拠が出せる所まで(自分が胸を張って説明できるレベルまで)細分化しましょう。