软件开发时间预估是一种猜测。我们之所以要预估,就是因为不确定到底要花多少时间。而往往很多门外汉却把这种预估当成了是开发给出的时间承诺,这是非常可悲的。。。
三元分析法
- O: 乐观预估
- N:标称预估
- P: 悲观预估
图中P= 2就是乐观预估,而N=3是标称预估,而P=11则是悲观预估
有了这3个预估就可根据公式计算出期望的完成时间 u = (O + 4N + P)/6 = 4.16
还可以计算出标准差 = (P - O)/6 = 1.5
项目预估并不是承诺,而往往产品经理会把开发的预估当做是一种承诺。如果开发人员妥协于这种方式,最终导致的就是加班赶工。 预估是非常容易出错的,所以才叫预估,即使是有经验的开发者,也可能预估错误的时间,更别提那些年轻的开发者。妄想通过预估来量化生产程序,最终的结果就是失败,这只是时间问题。
提升预估准确性的一个方法是大数定律,说白了就是把大任务拆分成小任务分开预估,再加总。结果会比单独评估大人物要准确很多。这样做之所以能提高准确度,是因为小任务的预估错误几乎可以忽略。不会对总的结果产生明显的影响。
最后,【专业】开发人员要懂得如果为业务人员或者项目管理提供可信的预估结果。如果做不到,或者不确定能做到,千万不要给出承诺。一定要保留最终的解释权。