13.4软件项目的估计
阿超:大家都来谈谈我们如何估计软件项目需要的时间吧。我们在第二篇中有过讨论和练习。我先说一点,下面三个词汇是有区别的:
估计(Estimation)——绕王屋村步行一圈,我估计要花一个小时。
目标(Goal)——领导说让我们30分钟就要完成。
决心(Commitment)——那我们决心豁出去了,跑步前进!争取20分钟完成任务!
用软件项目为例子:
估计——估计这个项目要花至少5到7个月的时间。
目标——领导说:但是我们要向“十一”献礼,只有4个月的时间了!
决心(之一)——那咱们拼了!我们争取在“十一”之前完成所有任务,向“十一”献礼!
决心(之二)——那我们争取在“十一”拿出一个可用的产品,但是不一定有所有功能。
决心(之一)、(之二)是不一样的。
另一件事情是,从一个粗略的模型到一个最终的产品需要很长的时间。一个演示版出现后,很多领导不理解为啥还要花N个月的时间做这个软件,大部分功能不都已经在那儿了吗?
对于一个时间驱动的项来说,如果你在“粗略的模型”阶段浪费了一个月的时间,等待各级领导做决定(这是很容易发生的事情)。你就得在项目开发过程中把这一个月的时间夺回来——这是非常困难的事情。
二柱:在做上一个项目的时候,我们的领导大智在路上碰到我,提到客户刚刚和他通了电话,有一个新的功能需求如此如此,问我需要多长时间。我脱口而出,也就是三五天吧。后来和大牛讨论之后,三五天变成了七八天。然后在实施过程中,原来认为的小问题变成了大问题,最后花了半个月才勉强完成,而且另外两个同事还帮了不少忙。听说大智告诉了客户“五天交货”,弄得我非常下不来台。所以我的教训是不要“脱口而出做估计”——因为你在匆忙之中的估计会传播得非常远,你再也无法更改。
大拴:作为开放人员,我们还要为我们的领导和客户设定正确的期望值——到底我需要多长时间才能开发出客户满意的产品。如果我们总是眼高手低——保证三五天,结果半个月。那即使我们在这半个月中拼了老命,做得很好,客户和老板还是不满意。
大牛:估计活动本身也需要时间。我很高兴地看到我们有专门的时间来做“估计”这件事情。以前都是拍拍脑袋,或者在饭桌上你一言我一语就决定了。
阿亨:我们还要用上一次项目的数据作为参考,如果我们上一次过于乐观地估计了进度,那么这次我们要引以为戒。
果冻:兵法云,置之死地而后生,不少成功的经理都有意地缩短估计时间,以激发团队的士气。
大家:(纷纷说)果冻,你在哪本书上看到这样的妙计?你去投奔这些成功的经理去吧。
阿亨:(在白板上一边画图,一边说)果冻的兵法会产生这样的恶性循环(如图13-1所示)。
图13-1果冻的兵法:恶性循环
阿超:还有一种可能是,团队成员不再相信项目的计划,项目经理的喊话会像“狼来了” 一样没有效果。