工期估算:为什么「大概三天」永远变成三周

估的是「写代码」的时间,交出去的是「写代码 + 联调 + 评审 + 改需求 + 等别人」的时间。把不确定的部分显式列出来,比把天数乘二更有效。

估算失准很少是因为「想得太乐观」,而是因为口径不一致:你估的是敲键盘的时间,别人理解的是交付时间。

被漏掉的那几段

一个功能真正占用的时间,除了写代码,还有:

环节 常被低估的原因
读代码、理解现有结构 「我熟」是假设,不是事实
联调 对方的接口还没好
评审后的修改 评审意见本身不可预测
测试与修 bug 只估了顺利路径
部署与验证 环境问题一次能耗掉半天

只报「写代码」的天数,等于默认后面几项为零。

把区间报出来,而不是一个数

「三天」传递的信息量是零。改成区间并说明依据:

2 到 5 天。
2 天:接口已就绪,现有代码能直接复用。
5 天:需要新增一张表,且要跟另一个团队联调。

区间不是含糊,是把不确定性说出来。只给单点数字的人,要么在赌,要么没想过风险。

拆到「半天以内」才有意义

超过两天的任务无法估算,因为它包含太多未知。拆成若干不超过半天的子项之后,估算误差会显著下降 —— 不是因为变准了,而是因为每一小步的未知变少了。

✗ 做用户导出功能(5 天)
✓ 后端加导出接口(1 天)
  前端加下载按钮(0.5 天)
  大文件分片(1 天,不确定)
  权限校验(0.5 天)

那条标了「不确定」的,就是该单独拿出来讨论的地方。

用历史数据校准

感觉永远不可靠。记下每次的实际耗时,下次估算时对照:

估计 2 天 → 实际 4 天
估计 1 天 → 实际 1.5 天
平均系数 ≈ 2

有十几条记录之后,你会发现自己有个稳定的偏差倍数。先承认它,再在估算里直接乘上去,比每次发誓「这次一定准」有用得多。

什么不该估

  • 需求还没定清楚的功能 —— 先估「把需求问清楚」要多久
  • 依赖外部团队排期的部分 —— 那是等待,不是工作量
  • 自己没做过的技术方向 —— 先安排一次探针

第三条尤其重要:没做过的事不该给承诺,只该给「多久能知道能不能做」。

估不准不是能力问题,是信息问题。把未知拆小、把区间报出来、用历史校准,剩下的交给时间。

← 返回文章列表

评论

…