项目估算与计划不是一般的难!

发布时间:2026/7/6 4:21:03
项目估算与计划不是一般的难! 从建筑工程说起大家都喜欢用建筑工程与软件工程做比较但我们常常所说的建筑工程只是指建筑施工部分而不是一个完整的建设项目。我们常常将施工项目管理与软件项目管理进行比较这是不合适的。一个完整的建设项目由甲方提出需求设计院根据需求设计出图纸再由造价公司进行估价然后公开招标最后由建筑公司承担建设。相对于软件项目建筑工程有以下特点1.从需求到竣工经历需求、设计、估价、建设等环节每个环节由不同专业的公司或人员完成。2.每个环节签署不同的合同每个环节对应不同的乙方。而软件项目从需求到开发完成基本上是签署一个合同只有一个乙方。3.整个过程可以认为是瀑布型的需求和设计会在前期确定后期基本上不会变动。而软件项目就没有这么理想了需求和设计不断在变。4.建筑工程只会采用最成熟的技术可行性和设计方案要经过反复论证你看看港珠澳大桥就论证了好多年了。而软件项目往往要采用不成熟的技术边设计边尝试。5.建筑工程的估算是在需求与设计都确定的基础上估算的。而软件项目不确定的东西太多估算无法一次成型。软件项目管理可能是最复杂的一种项目管理因为软件项目具备这样的特点1.需求、设计不明确。2.项目组需要在需求设计不明确的基础上承担需求、设计、编码、实施等全部工作。如果你是这样项目的项目经理对你来说是多么大的挑战啊建筑行业发展了这么多年整个建设工程的各个环节已经有很多专业的公司有很多设计院、造价公司、建筑公司等。而软件行业几乎很少见到专业的需求分析公司、软件设计公司。这既是软件行业的特点决定的也是甲方习惯决定的。我们公司在一些项目尝试和客户签署两份合同第一份合同只做需求的工作而第二份合同则完成实现与编码但客户往往不会接受。软件项目管理难归难但我们还是要去面对的我们应该如何应对软件项目的估算与计划呢估算要估啥很多人问如何才能做好估算这个问题是问如何正确做事情的问题而实际上要回答好这个问题先要回答估算要估算什么内容的问题也就是什么是正确的事情问题。对于估算要区分以下几种情况1.甲方对项目的估算甲方想做某个系统会根据自己对系统的估计以及自己的预算估计出一个价钱。甲方往往不能准确对项目进行估算项目的价钱往往是来自预算而所有甲方都是想在有限的预算内办更多的事情。很多项目需要招标其实重要目的就是希望找出性价比最高的软件公司。2.乙方在投标阶段对项目的估算作为软件公司要判断该项目需要多少的成本然后稍微“放大”成本作为投标价这样公司才能有利可图。然则现实情况很残酷1需求大多数是不明确的甚至甲方对项目的期望都没有想清楚这样软件公司无从估算。2很多招标其实甲方都“隐含”一个预算价如果软件公司的报价超出这个价钱你就别想中标了。而这个预算价往往会小于软件公司对项目的估算让你难以决定这项目做还是不做好这个阶段的估算是最难做的除了考虑项目实际工作量还要考虑项目是否要赚钱、客户关系等因素。在我们公司对于已经产品化的项目估价比较容易这其实是一个积累的过程。而对于全新的以前没有多少经验的项目估价其实也是很难做得很好的我们往往是由项目经验与技术经验都实力雄厚的总经理来“拍脑袋”拍出来的。所谓“拍脑袋”其实不代表乱猜是以雄厚的经验和强大的知识为前提的。3.项目组开展项目时对项目的估算当我们要真刀真枪开干时项目组需要对项目的实际工作量有充分的认识并以此为基础来做好项目工作。我们常常所说的项目估算问题就是指这第三种情况后文我们将重点讲述这种情况。项目估算到底要估什么呢项目的成本包括人工费、差旅费、业务费用、招待费用、采购费用。人工费包括项目组各人的薪金以及公司运作分摊到项目组各人头上的运作成本。公司运作成本包括非项目组人员的人工、场地设备费用、水电通讯费用、人员培训招聘费用、人员闲适成本、研究失败时的成本、商务活动的成本等。一般来说项目组只需要估算出实际的项目工时就可以了工时再乘以一个折合的人工成本单价就是项目的人工成本了。差旅费项目组成员因项目出差的交通费、住宿费、通讯费、差旅补贴等。业务费用公司领导、销售人员与客户进行商务谈判、联络所花费的费用例如送礼、回扣等的费用。这笔费用往往还很大呢不过项目组一般不需要估算这部分费用。招待费用项目组成员因工作需要和客户相关人员吃饭、娱乐的相关费用。例如需求调研期间和客户吃饭项目实施阶段因推动验收和客户一起加班加班后请客户吃饭。这笔费用一般不会很大一顿饭一般就是几十到一百多元一个项目也不会请很多次吃饭。采购费用采购项目所需的软硬费用如数据库平台、服务器等如果项目部分内容要外包出去那还要包括外包的费用。有时候这笔费用会比较巨大但这些费用都很容易估计。以上费用最难估计的就是人工费人工费我们以工作量来考虑下文开始我们重点讲解项目工作量的估算。如何估计项目的工作量呢简单地说我们需要将项目的所有工作进行分解直到每个分解后的工作都能估计出具体的所需时间来。那项目的“所有工作”包含什么呢回答这个问题其实就是回答“估算要估啥”这个问题了。一般情况下项目工作包括以下内容1.项目前期工作。包括商务谈判、技术方案准备、投标准备、前期需求调研、前期技术研究等工作。当你接手项目的时候这些工作往往已经做了你估算项目工作量时不要忘记这些已经花费的工作量。2.商务方面的工作。从客户开始有意向做这个项目一直到项目验收、维护整个过程中都会贯穿商务活动。前期的商务活动有商务谈判、投标准备、合同签署等而签订合同后的商务活动有项目请款和催款、促进验收等。某些商务活动属于灰色地带如请客、送礼等这些往往是花费巨大的。一般来说我们不需要估算灰色地带的商务活动灰色地带的商务活动公司的高层会考虑的了但我们需要对正常的商务活动进行估算。3.需求调研方面的工作。需求调研是一个“反复”的过程一般来说能在前期确定80%已经是很了不起的成绩。需求调研的工作量一般由三部分组成前期调研的工作量后期需求细化的工作量后期需求变更的工作量。前期调研的工作包括项目组内部讨论、确认与客户讨论、确认需求编写需求规格说明书及组织评审等工作。需求细化是指对之前已确定需求的进一步具体化、优化或轻微调整如界面细节的确认、各业务概念的具体化等。需求细化一般是可预见可估计的。需求变更是指对之前已确认需求的“否定”变更的原因主要有两种情况一是之前需求调研工作没有能做好理解错客户的真正意图或者是遗漏重要的需求二是客户业务情况发生变化与之前情况已经不同。第一种情况应该尽量避免而第二种情况一般是难以估计的。需求变更时需重新估算和客户签订需求变更协议。我们一般会充分估计前期需求调研工作量以及需求细化工作量对于需求变更则暂不考虑因为一旦变更我们会和客户确认需求变更的费用。但有些项目有很特殊项目报价中预留了少量的需求变更费用这时估算中就需要适当考虑需求变更了。4.软件设计方面的工作。不少项目为了“赶”进度设计文档很少然则项目真的很简单、不需要仔细考虑设计的情况是非常少的软件设计工作包括1系统架构设计。2技术方案选择。3关键模块设计。4数据库设计。5用户体验设计。以上内容具体项目可以有所取舍但不可能全部都不用考虑。另外不要忘记了以下两方面的工作1各类设计工作产品的讨论、确认、评审工作。2设计细化与优化工作。设计是需要持续改进的不要忘记这些工作。5.编码方面的工作。要注意不要遗漏代码返工、代码评审、代码调试、修复缺陷的工作量。需求、设计没有做好编码质量不过关这些会严重增加代码返工、代码调试、修复缺陷的工作量。代码首次完成的时间如果是100小时那么后面代码调试、修复缺陷等所需要的时间可能是200小时以上往往我们估算时只考虑了前面的100小时。6.测试方面的工作。测试工作包括测试计划、测试用例、测试文档评审、测试环境准备、测试数据准备、执行测试、回归测试等内容。软件测试一般要经历多轮我们估算往往只考虑了第一轮就好象软件只需要测试一回就不用再测试了。而测试环境准备、测试数据准备这些工作也很容易在估算时“忘记”了。7.实施方面的工作。实施工作包括实施计划、实施方案的准备编写管理员手册、用户手册熟悉系统搭建实施环境并进行演练在客户现场安装、部署、调试系统培训客户协助系统上线推动验收等工作。我们公司通常的做法是1系统在客户处部署后会推动客户进行初步验收初验标准是系统的所有功能跑就可以了。初验成功客户需要支付相应的项目款项。2初验后要协助客户让系统正式上线让客户真正用上这套系统推动最终验收。影响终验主要有两个因素一个是客户在使用系统过程中会提出各式各样的问题如果在需求范围内应该都予以满足而另外一个影响因素是客户会因为各种各样的原因推迟使用系统或者是使用不充分让项目终验遥遥无期。估算时需要充分考虑这两个影响因素。8.维护方面的工作。项目终验后一般都要提供半年到一年的维护服务维护器后项目还会有最后一笔款项。维护期比较长事情繁杂一个不小心就很容易估算不足。维护的工作一般有1用户培训2协助客户录入资料3修复被破坏的数据以及数据库4修改客户或内部发现的软件缺陷5代码重构提高部分程序的性能与可靠性6修改一些界面文字或显示风格7回答客户反馈的一些安装与操作疑难问题8提供合同中所要求的其它特殊软件维护服务。在维护期往往还需要发布数个小版本来解决客户的问题。9.项目管理方面的工作。项目管理工作主要有编制项目计划、持续更新项目计划、跟踪计划执行、各种工作协调、指导项目组成员完成工作等等。项目管理工作量一般占整个项目工作量的10-20%项目不明确的东西越多、项目组成员水平越不足、项目组成员之间工作磨合度越不好管理工作量就越大。项目管理在项目进行整个过程都需要持续进行一般来说前期工作量会比较大版本发布前后阶段工作量也会比较大。项目管理前期工作抓得紧抓得好会大大减轻后期的工作量。