程序员的职业素养 读书笔记

什么是预估

不同的人对预估有不同的看法。业务方觉得预估就是承诺。开发方认为预估就是猜测。

承诺

    承诺是必须做到的。专业开发人员不随便承诺,除非他们确切知道可以完成。

    如果被要求承诺做自己不确定的事情,那么就应当坚决拒绝。

预估

    预估是一种猜测。它不包含任何承诺的色彩。

    大多数软件开发人员都很不擅长预估。原因在于我们并不理解预估的实质。预估不是个定数,预估的结果是一种概率分布。

暗示性承诺

    专业开发人员能够清楚区分预估和承诺。只有在确切知道可以完成的前提下,他们才会给出承诺。

    他们也会小心避免给出暗示性的承诺。他们会尽可能清楚地说明预估的概率分布,这样主管就可以做出合适的计划。

PERT

计划评审技术(PERT,Program Evaluation and Review Technique)的一部分内容就是对预估的计算方法。

根据3个数字预估某项任务。这就是三元分析法。

    O:乐观预估。这是非常乐观的数字。为保证乐观预估有意义,这个数字对应的发生概率应当小于1%。

    N:标称预估。这是概率最大的数字。

    P:悲观预估。这是最糟糕的数字。为保证悲观预估有意义,这个数字对应的发生概率也应当小于1%。

有了以上三个预估,可以像下面这样描述概率分布:

    μ=(O+4N+P)/6

μ是任务的期望完成时间。通常这个数字都有点水分

    σ=(P-O)/6

σ是这个任务的概率分布的标准差,用来衡量不确定性。如果这个数字很大,就表示非常不确定。

预估任务

德尔菲法(wideband delphi)

    一组人集合起来,讨论某项任务,预估完成时间,然后重复“讨论-预估”的过程,直到意见统一。

    1、亮手指

    2、规划扑克

    3、关联预估(Affinity Estimation)

    4、三元预估

大数定律

预估是非常容易出错的,控制错误的办法之一是使用大数定律。把大任务分成许多小任务,分开预估再加总,结果会比单独评估大任务要准确很多。

原文地址:https://www.cnblogs.com/TanSea/p/ClearCoder-10.html