算并不是只是得到一个项目估算的总体数字,项目的估算总数其实是由项目各种工作的估算组成的。
前文介绍了项目的各种工作,每一种工作都需要认真估算。如果估算发生偏差,要能定位到具体是哪部分的估算出问题了,否则估算没有指导项目工作的价值。功能点法、代码行法的估算办法,只能得到一个项目估算的总数,而不能定位到具体的哪一部分工作,这样得到的估算结果难以用来指导项目工作。
4.估算依赖项目组的整体实力。
如果你没有软件开发相关经验,只懂理论上的估算,你是不可能做好估算工作的。
项目组由项目管理、软件设计、编码、测试、实施等各类专业人才组成,每个人在自己方面都是专家,每个人都是整个项目组中最有资格对自己专业方面的工作进行估算。前文列出了的项目各方面的工作,应该由相应的项目成员为主进行估算。
5.项目组应该不断学习、总结、进步,提高整体水平。
需求不明确、设计不确定这是项目的特点,我们需要不断地学习来提高水平,将这些不明确的因素逐步明确。
没有什么妙方能解决这些不明确的因素,靠的还是我们的知识和能力。项目组每个人都应该通过持续估算来发现自己的不足并提高水平。
6.公司应该定期组织项目资深人士制定估算指南并持续更新。
我们公司有一份估算模板,里面汇集了以前的估算经验,列出了所有需要考虑的估算内容以及详细的说明。
我们以前没有估算模板时,估算偏差会达到50%以上,总结经验发现偏差的主要原因是估漏!使用估算模板会帮助我们发现遗漏,后来我们的估算偏差基本可以控制在20%以内。
前文的“估算要估啥”小节,我列出了项目通常要考虑的各种工作,也列出了容易估漏和估计不足的地方,大家可在此基础上根据自己公司实际情况,修改和扩充这些内容,写出自己公司的估算模板或估算指南。
先得到项目规模,再由规模导出工作量,这是一个很美好的想法,问题就是和我们的实际情况相去甚远了。
将工作分解,直到分解到可以估计工作量的程度,这个可能是最土最有效的方法了。但你可能会问,这样的估算方法,项目之间就无法横向比较了?
项目估算第一目标是用来指导项目工作,如果这个目标都达不到,那么就不需要考虑项目之间的横向比较了。
另外我要反问:为什么非要用这样的方式来作项目之间的横向比较?有什么好处?国外优秀的软件开发工作室就不会做这样无聊的事情,软件开发可能是人类最厉害的智力活动,你觉得一定能量化度量吗?
要从本质上提升估算水平,你不太可能用几天时间去突击学习某种估算办法就能胜任项目实际的估算工作。
提高估算能力靠你长期的积累,你的实力、你的项目团队的综合实力,还有你们公司的综合实力,决定了估算的水平!
估算是为项目服务的,后文你会看到如何利用估算来管理项目,又如何因应项目实际情况来更新估算。
下面开始,我们将讲述估算与计划的关系、计划及计划跟踪。
计划有什么内容?
关于项目计划,我们要先讨论什么是正确的事情,然后再讨论如何做正确的事情,我们先来看看项目计划应该有什么内容?
让大家做项目计划,很多人以为用Project做一份开发进度计划就完事了。而项目的开发工作只是占了项目工作的其中一部分而已,跟项目所有相关的工作,我们都需要计划。诸如开发计划、测试计划、培训计划、沟通计划、采购计划等等,这些计划的集合,我们称之为项目计划。
项目计划应该包含以下内容:
1.项目背景、目标、概述等。
2.项目需要提交的工作产品,包括内部工作产品和最终工作产品。
3.风险分析及应对措施。
4.项目估算。
5.项目在成本、进度、质量方面的管理目标。
6.项目人员职责。
7.对