《程序员的职业素养》十——预估

1、承诺

  如果你承诺在某天做成某事,就必须按时完成,即使它意味着你必须每天工作12个小时,放弃周末的休假。承诺是关于确定性,其他人会把你的承诺当真,据此拟定计划。如果不能兑现承诺,他们的损失以及你的声誉都会受到很大的影响。

2、预估

  预估是一种猜测,不包含任何承诺的色彩。大多数软件开发人员都很不擅长预估,这不是因为他们没有掌握关于预估的诀窍,而是根本没有这样的诀窍。

预估不是个定数,预估的结果是一种概率分布。

Mike:你估计要多久完成Frazzle任务?
Peter:3天。
Mike:3天完成的概率有多大?
Peter:相当有可能。
Mike:能说个准数吗?
Peter:百分之五六十吧。
Mike:也就是说如果给你4天,概率会更大点。
Peter:是的,其实可能需要5到6天,虽然我估计不用这么久。
Mike:到底有多少把握呢?
Peter:嗅,我不清楚……6天内完成的把握有95%吧。
Mike:你的意思是可能也需要7天?
Peter:呢,如果事事都不顺利的话。其实,如果事事都不顺利,也可能需要10天到11天。但情况不太可能这么糟糕。

现在我们开始接触到真相了。Peter想的预估是概率分布,概率分布图可能如下所示:
图片名称
​​

3、预估任务

  在预估时,最重要的资源是你周围的人,他们可以看到你看不到的东西。相比于自己单干,他们可以帮你更精确地预估任务。

“德尔菲法”是一种估量方法,到现在已经演化出许多变种,其中一些是正式的,一些是非正式的。常见的方式如“亮手指”、规划扑克等。

仪式虽然多样,但相通点就是一组人一起预估完成时间,然后重复“讨论——预估”的过程,直到意见统一。

4、大数定律

  把大任务分成许多小任务,分开预估再加总,结果会比单独评估大任务要准确很多。这是因为小任务的预估错误几乎可以忽略,不会对总的结果产生明显影响。

5、结论:

  1. 预估是业务人员和开发人员之间最主要的障碍,业务方觉得预估就是承诺,而开发方认为预估就是猜测。

  2. 专业人士一旦做了承诺,就会按时兑现。

  3. 多数情况下,专业人士是提供概率预估来描述期望的完成时间及可能的变数。

GNG
发布了128 篇原创文章 · 获赞 430 · 访问量 71万+

猜你喜欢

转载自blog.csdn.net/so_geili/article/details/105029303