工数見積もり:なぜ「だいたい三日」が三週間になるのか

見積もったのはコーディング時間で、約束したのは実装+結合+レビュー+手戻り+待ち時間です。不確かな部分を明示する方が、日数を二倍するより効きます。

見積もりが外れるのは楽観のせいばかりではありません。範囲の食い違いです。あなたは打鍵時間を出し、相手は納品時間を受け取っています。

抜け落ちる工程

機能はコーディング以外も食います。

工程 過小評価される理由
既存コードの読解 「このコードは知っている」は仮定です
結合 相手の API がまだできていない
レビュー後の修正 指摘内容は予測できません
試験と不具合修正 順調な経路しか見積もっていない
配備と確認 環境の問題一回で半日消えます

コーディング日数だけを出すのは、残り全部をゼロと宣言するのと同じです。

数値ではなく幅で出す

「三日」の情報量はゼロです。根拠付きの幅で出します。

2〜5 日。
2 日:API は準備済みで既存コードを再利用できる。
5 日:新しいテーブルが必要で、他チームとの結合も要る。

幅は曖昧さではなく、不確かさを口に出すことです。単一の数値は、賭けているか、危険を考えていないかのどちらかです。

半日以内に割る

二日を超える作業は未知が多すぎて見積もれません。半日未満に割ると誤差は大きく下がります。精度が上がったからではなく、各段階の未知が減ったからです。

× ユーザー書き出し機能を作る(5 日)
○ 書き出し API を足す(1 日)
  ダウンロードボタンを足す(0.5 日)
  大容量を分割転送(1 日、不確か)
  権限検査(0.5 日)

「不確か」と付けた行こそ、単独で議論すべき箇所です。

履歴で校正する

感覚は当てになりません。実測を記録して次に突き合わせます。

見積もり 2 日 → 実際 4 日
見積もり 1 日 → 実際 1.5 日
平均係数 ≈ 2

十数件も溜まれば、自分の安定した倍率が見えます。それを認めて掛ける方が、今度こそ正確にと誓うより役に立ちます。

見積もるべきでないもの

  • 仕様が固まっていない機能:先に「仕様を確定させる時間」を見積もる
  • 他チームの日程待ち:それは待ち時間で工数ではありません
  • 未経験の技術:先に調査を一本入れる

三番目が特に重要です。やったことのないことに約束はできません。 約束できるのは「できるかどうかが分かるまでの時間」だけです。

見積もりは能力の問題ではなく情報の問題です。未知を小さく割り、幅で出し、履歴で校正すれば、残りは時間が処理します。

← 記事一覧に戻る

コメント

…