预估是软件开发人员面对的最简单的、也是最可怕的活动之一了。
10.1 什么是预估
10.1.1 承诺
承诺是必须做到的。如果你承诺在某天做成某事,就必须按时完成。
承诺是关于确定性的。
10.1.2 预估
预估是一种猜测。它不包含任何承诺的色彩。它不需要做任何约定。
10.1.3 暗示性承诺
专业开发人员能够清楚区分预估和承诺。
他们也会格外小心避免给出暗示性的承诺。
10.2 PERT
你可以根据三个数字预估某项任务。这就是三元分析法。
- O:乐观预估
- N:标称预估
- P:悲观预估
有了这三个月预估,我们可以像下面这样描述概率分布: \(μ = (O + 4N + P) / 6\) μ是这个任务的期望完成时间。 \(σ = \frac{P - O}{6}\) σ是这个任务概率分布的标准差。
10.3 预估任务
德尔菲法
- 亮手指
- 规划扑克
- 关联预估
- 三元预估
10.4 大数定律
把大任务分成许多小任务,分开预估再相加,结果会比单独预估大任务要准确很多。
10.5 结论
专业开发人员懂得如何为业务人员提供可信的预估结果,以便做出计划。如果做不到,或者不确定能做到,专业开发人员不会做出承诺。
专业开发人员一旦做出了承诺,就会提供确定的数字。