消灭不确定性——项目管理评估指南
发布日期:2015-09-08浏览:2390
有些人听到估算就头疼。我曾经听到一些聪明且经验丰富的项目经理断言,要估算他们项目的工作量是“不可能的”。我认为这些人不懂得估算。我认为这些人可能混淆了估算(对不确定事件进行合情合理的评估)与超感官知觉(对不确定事件进行准确预测)。或者在某些情况下,他们可能不做估算就准备预算或报价。
我知道准确估算是有可能的。我自己就做到过(我的一个项目曾被估算需要1300工时,结果用了1302工时完成),我也教过数千人怎样做。回想一下克拉克定律:任何太过先进的技术都会被误认为魔术。准确估算也是一项技能,可以在实践中学习提高,直至外行看起来像魔术的程度。
说起来好像多余,进行估算的第一件事就是知道你要估算什么。现在,让我们假设有人要求你估算粉刷你的卧室需要多少工作量(占用你多少时间)。虽然这是一件很小的工作,但它仍有相当多的不确定性:
·你是否需要粉刷天花板和木器还是只有墙壁?
·有没有需要粉刷的窗户?这些窗户有窗框吗?
·房间里有家具吗?能移动吗?如果能移动,把它移回来是否算在“粉刷房间”之内?
·选择颜色是否包括在工作之内?还有去商店购买涂料呢?
·需要刷多少遍?需要做什么特殊效果(例如大理石纹)吗?
·有没有人帮你做?还是你要一个人做完?
如果你不知道这些问题的答案,你有多个选择。你可以完全拒绝去做估算;你可以做一个预留大量不确定性的估算;你可以对上述问题假设一些答案并根据这些假设做估算;你还可以在做估算之前取得上述问题的答案以减少不确定性。这些方法中每一个都是可以接受的,只要相关人员知道你使用哪个方法就行!
大多数时间,你会将几种方法结合使用。你会做一些合理假设(并且你一定会把你的假设记录下来!)。你会问一些问题。然后你就运用自己的最佳判断。
你可以用区间估算改进你的最佳判断。区间估算是怎样的?在它的最简单形式中,你对于你认为可能需要的工作量估算一个低值和一个高值。例如,在粉刷你卧室这一案例中,而且假设只粉刷墙壁,你可能估算2到3小时。
区间估算背后的基本概念是你不需要知道所需工作量的精确值。你需要知道的是它不会比你的进度表多出一整天。你需要知道的是它不是一件能在几分钟做完小事。只要实际结果落在估算值的2到3小时左右,你的估算就相当不错了。
即使实际结果超出了这个范围,你的估算也是很好的,因为就当时你能掌握的情况来说这已是你能做出的最佳估算了。另外,你可以从这次偏差(实际结果超出预测范围)学到东西并改进你以后的估算。
使用区间估算大大减少了估算过程的痛苦。如果你习惯于单点估算(见下文),要在2小时和3小时之间选择会非常困难。甚至做出一个2.5小时的估算都会困难,因为你知道实际会多于或少于那个数量。使用区间估算让你能在不确定性之下进行操作。
单点估算是魔鬼的作坊;它们就是魔鬼!在任何情况下都不要向任何人提供一个单点估算。如果你的老板坚持要单点估算,那他或她很可能是想要一个预算,而非估算。给他们一个预算也没问题,但你真的应当让他们也知道你的估算,这样他们就能了解你对预算数字的可靠性有多大信心了。
你可以通过三点区间估算进一步改进你的判断。在简单区间估算的低值和高值基础上,你加上一个区间内最有可能结果的评估。
比方说,假设你生活在电影《土拨鼠节》描绘的世界里,这样你就能粉刷你的房间100遍,并且记录下每次实际用了多少工作量。我们发现,你耗时从未少于2小时,也从未多于5小时。我们还发现你的实际用时结果构成一个三角形分布,峰值在3小时。
由于得到了这一实际的历史数据,对于粉刷一间相同大小的卧室,你就能够估算出所需的工作量如下:
·最可能:3小时
·乐观:2小时
·悲观:5小时
我知道有这样精彩完美的历史数据来支持你的估算的机会将是绝无仅有的,但区间估算的好处是你不需要完美的数据。只要三点区间估算是合理的,误差就可能在项目进行的过程中相互抵消了。
即使在这个案例中,拥有完美的数据,你仍然不能准确知道粉刷下一间卧室需要多少工时。可能是2.5小时,也可能是3.75小时,这不要紧。重要的是你有合理的估算;你的估算能让你有效地管理项目。
准备三点区间估算
准备三点区间估算的技巧很重要,尤其是如果你的团队成员过去从未使用过这一技术。
一对一工作。让我们再次用一个简单案例开始,你需要一名团队成员去估算要完成一项特定工作可能需要他们多少工作量。第一步是要确认你们两个对于“估算”和“结果”的词义有相同的理解。尽量保持你们的语言一致,即使你觉得有点别扭。
比如,人们总是喜欢问“你认为这需要多久?”之类的话。这个问题可能产生一个期间估算而非一个工作量估算。一定要记住这样问:“你认为这项工作要用你多少时间?”
开始讨论时要先审视下需要做的工作以确定你和你的团队成员对于工作任务有相同的理解。如果有不明确的地方,要确定怎样处理,是作假设,还是去找答案,或者其他做法。
在你们对于工作达到适当程度的一致之后,询问他们对最可能工作量的估算。我通常用这样的措辞,“如果这些假设是正确的,你认为这件工作可能占用你多少时间?”在他们回答了这个问题之后,我问,“如果一切顺利,如果你在这件事上很幸运,还使用同样的假设,你认为这件工作会占用你多少时间?”然后用相似的措辞去得到一个悲观的工作量估算。
要知道与任何一个人开始进行的几次谈话都不会很顺利。他们会产生另外的问题,或者在谈话的任何一点上要求你进行另外的假设。很好,随他们去。帮助他们攀登学习曲线。我的经验是大多数人需要3到5个来回才能接受这一过程。在这之后他们将会主动把三点估算交给你。
要不客气地质疑他们的估算,但是要建设性地询问一些澄清性质的问题。不要贬低他们的估算。如果你们的意见有分歧,最有可能的原因是你们对工作的理解不一致。努力找出并消除这些分歧。
以询问最可能结果作为开始似乎也很重要 ,然后再问乐观的结果,以及悲观的结果。我不知道为什么,但是这个顺序似乎效果最好。
小组工作。你的大部分估算不会是一对一做出来的,而是由一些小组作为一个团队计划过程的一部分做出来的。这一基本过程对于这些小组来说是一样的:
·对要做的工作进行讨论并取得一致。
·记录下各个假设。
·从最可能结果开始作三点区间估算。
即使有些小组成员对于项目工作没有足够的专业知识,他们的参与也有助于将隐含的假设显露出来,以及建立整个团队对于工作量估算的合作和理解。
有些项目经理企图通过只要两个数字—最可能结果和一定变动范围(例如,“10小时,增减2”)来加快三点区间估算的进度。即使这种表述相当于三点区间估算的8、10、12,以我的经验,它缺乏我的估算过程中的丰富内容,它似乎也没有同样程度的深思熟虑。
认识估算工作的关键成果
当我教人进行估算时,我强调估算工作的最重要成果是一个准确的项目预算—实际结果落在预算基准线的可接受区间内。可接受的预算准确度因项目的不同而不同:
·在新产品开发(NPD)中,项目最终成本达到最初估算的3至4倍是可以接受的。
·在信息技术中,如果各项要求经协商一致且保持不变,±10%是一个合理目标,然而如果该项目的任务是必须完成的,那么NPD的+300%至400%也可以是完全可以接受的。
·对于一个固定价格的顾问合同,管理层可能不愿意接受任何的超支。
我主张,如果满足两个条件:(a)工程项目的实际结果大部分时候能落在估算区间内,以及(b)实际结果的总和接近于区间估算的期望值总和,一项估算就是准确的。简而言之,我们关心总数。我们关心单个结果只是达到最终目的的手段而已。
我来做个说明。比如我们有一个项目包含100项工作。简单起见,让我们暂时忽略排期问题,而且让我们进一步假设每一项工作都有20、25、30小时工作量的三点区间估算。每一单项工作的预算将是25小时(这一点后面有论述),于是这一项目的预算将是2,500小时。
如果这一项目按计划进行,大部分的工作项,也许70%左右,其实际成本将会在预算工作量的1到2小时误差之内。1至2项可能耗费多达30小时;1至2项可能只用20小时。但是项目的总体工作量可能非常接近2,500小时。从统计上,我们有大约95%的概率该项目的完工时间将会落在±50小时的区间内。不错!
作为对比,我们拿一个相似的包含100项工作的项目,只是每一项工作的区间估算为10、25、和40小时工作量。我们仍将为这一项目做2500小时的预算,但实现±50小时之内误差的概率只有大约60%。如果我们想要95%的准确度,需要将误差范围增大到±120小时。
三点区间估算鼓励团队中每个人既要用足又不浪费时间和工作量以正确完成其工作项,这有助于达到我们的准确度目标。我们避免了许多不当行为,包括:
·团队成员可能会用足预算,即使他们不需要这样。
·团队成员可能偷工减料以避免超出预算。
·该项目的各级经理可能在解释细小偏差上浪费时间。
·经理们可能会操纵报告数字以使估算看起来“更好”。
最后一点:在有些情况下单点估算就足够了。例如,我们能够安全地预测一次一小时的七人团队会议需要7小时的工作量。有没有可能只有六个人参加?会不会用一个半小时?当然有可能,但是这种误差机会是如此之小,我们可以安全地将其忽略。
估算不足会让你疯掉。你将要无休止地解释为何你会超预算以及延误工期。你将要无休止地面对恼怒的客户和崩溃团队成员。过度估算也好不了多少。你的项目将无法得到批准,因为它们看起来太昂贵了。如果你的辩解被认为别有用心的,你甚至会丢掉工作。
三点估算不会把你送到天堂。但是对于被你的项目影响到的每个人,它们会让他的生活得到更多报偿。
我知道准确估算是有可能的。我自己就做到过(我的一个项目曾被估算需要1300工时,结果用了1302工时完成),我也教过数千人怎样做。回想一下克拉克定律:任何太过先进的技术都会被误认为魔术。准确估算也是一项技能,可以在实践中学习提高,直至外行看起来像魔术的程度。
说起来好像多余,进行估算的第一件事就是知道你要估算什么。现在,让我们假设有人要求你估算粉刷你的卧室需要多少工作量(占用你多少时间)。虽然这是一件很小的工作,但它仍有相当多的不确定性:
·你是否需要粉刷天花板和木器还是只有墙壁?
·有没有需要粉刷的窗户?这些窗户有窗框吗?
·房间里有家具吗?能移动吗?如果能移动,把它移回来是否算在“粉刷房间”之内?
·选择颜色是否包括在工作之内?还有去商店购买涂料呢?
·需要刷多少遍?需要做什么特殊效果(例如大理石纹)吗?
·有没有人帮你做?还是你要一个人做完?
如果你不知道这些问题的答案,你有多个选择。你可以完全拒绝去做估算;你可以做一个预留大量不确定性的估算;你可以对上述问题假设一些答案并根据这些假设做估算;你还可以在做估算之前取得上述问题的答案以减少不确定性。这些方法中每一个都是可以接受的,只要相关人员知道你使用哪个方法就行!
大多数时间,你会将几种方法结合使用。你会做一些合理假设(并且你一定会把你的假设记录下来!)。你会问一些问题。然后你就运用自己的最佳判断。
你可以用区间估算改进你的最佳判断。区间估算是怎样的?在它的最简单形式中,你对于你认为可能需要的工作量估算一个低值和一个高值。例如,在粉刷你卧室这一案例中,而且假设只粉刷墙壁,你可能估算2到3小时。
区间估算背后的基本概念是你不需要知道所需工作量的精确值。你需要知道的是它不会比你的进度表多出一整天。你需要知道的是它不是一件能在几分钟做完小事。只要实际结果落在估算值的2到3小时左右,你的估算就相当不错了。
即使实际结果超出了这个范围,你的估算也是很好的,因为就当时你能掌握的情况来说这已是你能做出的最佳估算了。另外,你可以从这次偏差(实际结果超出预测范围)学到东西并改进你以后的估算。
使用区间估算大大减少了估算过程的痛苦。如果你习惯于单点估算(见下文),要在2小时和3小时之间选择会非常困难。甚至做出一个2.5小时的估算都会困难,因为你知道实际会多于或少于那个数量。使用区间估算让你能在不确定性之下进行操作。
单点估算是魔鬼的作坊;它们就是魔鬼!在任何情况下都不要向任何人提供一个单点估算。如果你的老板坚持要单点估算,那他或她很可能是想要一个预算,而非估算。给他们一个预算也没问题,但你真的应当让他们也知道你的估算,这样他们就能了解你对预算数字的可靠性有多大信心了。
你可以通过三点区间估算进一步改进你的判断。在简单区间估算的低值和高值基础上,你加上一个区间内最有可能结果的评估。
比方说,假设你生活在电影《土拨鼠节》描绘的世界里,这样你就能粉刷你的房间100遍,并且记录下每次实际用了多少工作量。我们发现,你耗时从未少于2小时,也从未多于5小时。我们还发现你的实际用时结果构成一个三角形分布,峰值在3小时。
由于得到了这一实际的历史数据,对于粉刷一间相同大小的卧室,你就能够估算出所需的工作量如下:
·最可能:3小时
·乐观:2小时
·悲观:5小时
我知道有这样精彩完美的历史数据来支持你的估算的机会将是绝无仅有的,但区间估算的好处是你不需要完美的数据。只要三点区间估算是合理的,误差就可能在项目进行的过程中相互抵消了。
即使在这个案例中,拥有完美的数据,你仍然不能准确知道粉刷下一间卧室需要多少工时。可能是2.5小时,也可能是3.75小时,这不要紧。重要的是你有合理的估算;你的估算能让你有效地管理项目。
准备三点区间估算
准备三点区间估算的技巧很重要,尤其是如果你的团队成员过去从未使用过这一技术。
一对一工作。让我们再次用一个简单案例开始,你需要一名团队成员去估算要完成一项特定工作可能需要他们多少工作量。第一步是要确认你们两个对于“估算”和“结果”的词义有相同的理解。尽量保持你们的语言一致,即使你觉得有点别扭。
比如,人们总是喜欢问“你认为这需要多久?”之类的话。这个问题可能产生一个期间估算而非一个工作量估算。一定要记住这样问:“你认为这项工作要用你多少时间?”
开始讨论时要先审视下需要做的工作以确定你和你的团队成员对于工作任务有相同的理解。如果有不明确的地方,要确定怎样处理,是作假设,还是去找答案,或者其他做法。
在你们对于工作达到适当程度的一致之后,询问他们对最可能工作量的估算。我通常用这样的措辞,“如果这些假设是正确的,你认为这件工作可能占用你多少时间?”在他们回答了这个问题之后,我问,“如果一切顺利,如果你在这件事上很幸运,还使用同样的假设,你认为这件工作会占用你多少时间?”然后用相似的措辞去得到一个悲观的工作量估算。
要知道与任何一个人开始进行的几次谈话都不会很顺利。他们会产生另外的问题,或者在谈话的任何一点上要求你进行另外的假设。很好,随他们去。帮助他们攀登学习曲线。我的经验是大多数人需要3到5个来回才能接受这一过程。在这之后他们将会主动把三点估算交给你。
要不客气地质疑他们的估算,但是要建设性地询问一些澄清性质的问题。不要贬低他们的估算。如果你们的意见有分歧,最有可能的原因是你们对工作的理解不一致。努力找出并消除这些分歧。
以询问最可能结果作为开始似乎也很重要 ,然后再问乐观的结果,以及悲观的结果。我不知道为什么,但是这个顺序似乎效果最好。
小组工作。你的大部分估算不会是一对一做出来的,而是由一些小组作为一个团队计划过程的一部分做出来的。这一基本过程对于这些小组来说是一样的:
·对要做的工作进行讨论并取得一致。
·记录下各个假设。
·从最可能结果开始作三点区间估算。
即使有些小组成员对于项目工作没有足够的专业知识,他们的参与也有助于将隐含的假设显露出来,以及建立整个团队对于工作量估算的合作和理解。
有些项目经理企图通过只要两个数字—最可能结果和一定变动范围(例如,“10小时,增减2”)来加快三点区间估算的进度。即使这种表述相当于三点区间估算的8、10、12,以我的经验,它缺乏我的估算过程中的丰富内容,它似乎也没有同样程度的深思熟虑。
认识估算工作的关键成果
当我教人进行估算时,我强调估算工作的最重要成果是一个准确的项目预算—实际结果落在预算基准线的可接受区间内。可接受的预算准确度因项目的不同而不同:
·在新产品开发(NPD)中,项目最终成本达到最初估算的3至4倍是可以接受的。
·在信息技术中,如果各项要求经协商一致且保持不变,±10%是一个合理目标,然而如果该项目的任务是必须完成的,那么NPD的+300%至400%也可以是完全可以接受的。
·对于一个固定价格的顾问合同,管理层可能不愿意接受任何的超支。
我主张,如果满足两个条件:(a)工程项目的实际结果大部分时候能落在估算区间内,以及(b)实际结果的总和接近于区间估算的期望值总和,一项估算就是准确的。简而言之,我们关心总数。我们关心单个结果只是达到最终目的的手段而已。
我来做个说明。比如我们有一个项目包含100项工作。简单起见,让我们暂时忽略排期问题,而且让我们进一步假设每一项工作都有20、25、30小时工作量的三点区间估算。每一单项工作的预算将是25小时(这一点后面有论述),于是这一项目的预算将是2,500小时。
如果这一项目按计划进行,大部分的工作项,也许70%左右,其实际成本将会在预算工作量的1到2小时误差之内。1至2项可能耗费多达30小时;1至2项可能只用20小时。但是项目的总体工作量可能非常接近2,500小时。从统计上,我们有大约95%的概率该项目的完工时间将会落在±50小时的区间内。不错!
作为对比,我们拿一个相似的包含100项工作的项目,只是每一项工作的区间估算为10、25、和40小时工作量。我们仍将为这一项目做2500小时的预算,但实现±50小时之内误差的概率只有大约60%。如果我们想要95%的准确度,需要将误差范围增大到±120小时。
三点区间估算鼓励团队中每个人既要用足又不浪费时间和工作量以正确完成其工作项,这有助于达到我们的准确度目标。我们避免了许多不当行为,包括:
·团队成员可能会用足预算,即使他们不需要这样。
·团队成员可能偷工减料以避免超出预算。
·该项目的各级经理可能在解释细小偏差上浪费时间。
·经理们可能会操纵报告数字以使估算看起来“更好”。
最后一点:在有些情况下单点估算就足够了。例如,我们能够安全地预测一次一小时的七人团队会议需要7小时的工作量。有没有可能只有六个人参加?会不会用一个半小时?当然有可能,但是这种误差机会是如此之小,我们可以安全地将其忽略。
估算不足会让你疯掉。你将要无休止地解释为何你会超预算以及延误工期。你将要无休止地面对恼怒的客户和崩溃团队成员。过度估算也好不了多少。你的项目将无法得到批准,因为它们看起来太昂贵了。如果你的辩解被认为别有用心的,你甚至会丢掉工作。
三点估算不会把你送到天堂。但是对于被你的项目影响到的每个人,它们会让他的生活得到更多报偿。