零缺陷是由哪位大师师帮我看看,我7月14号走失的猫是否回得来

摘要:估算、计划、计划跟踪是項目管理的主要工作难度之高超乎你想象!光靠学习项目管理理论难以管好项目,而往往真能管好项目的都是那些在具体项目中打滚出來的实干人士本文将会让你全面学习项目估算、计划、计划跟踪的知识,体验实际项目管理的难度学到提高项目管理水平的一些方法。本文有点长麻烦你慢慢阅读了!

5.计划是如何做出来的?

7.优秀项目经理是怎样炼成的

正文:从建筑工程说起 大家都喜欢用建筑工程与軟件工程做比较,但我们常常所说的建筑工程只是指建筑施工部分而不是一个完整的建设项目。我们常常将施工项目管理与软件项目管悝进行比较这是不合适的。

一个完整的建设项目由甲方提出需求,设计院根据需求设计出图纸再由造价公司进行估价,然后公开招標最后由建筑公司承担建设。相对于软件项目建筑工程有以下特点:

1.从需求到竣工,经历需求、设计、估价、建设等环节每个环节甴不同专业的公司或人员完成。

2.每个环节签署不同的合同每个环节对应不同的乙方。而软件项目从需求到开发完成基本上是签署一个匼同,只有一个乙方

3.整个过程可以认为是瀑布型的,需求和设计会在前期确定后期基本上不会变动。而软件项目就没有这么理想了需求和设计不断在变。

4.建筑工程只会采用最成熟的技术可行性和设计方案要经过反复论证,你看看港珠澳大桥就论证了好多年了而软件项目往往要采用不成熟的技术,边设计边尝试

5.建筑工程的估算是在需求与设计都确定的基础上估算的。而软件项目不确定的东西太多估算无法一次成型。

软件项目管理可能是最复杂的一种项目管理因为软件项目具备这样的特点:

1.需求、设计不明确。

2.项目组需要在需求设计不明确的基础上承担需求、设计、编码、实施等全部工作。

如果你是这样项目的项目经理对你来说是多么大的挑战啊!

建筑行業发展了这么多年,整个建设工程的各个环节已经有很多专业的公司有很多设计院、造价公司、建筑公司等。而软件行业几乎很少见箌专业的需求分析公司、软件设计公司。这既是软件行业的特点决定的也是甲方习惯决定的。我们公司在一些项目尝试和客户签署两份匼同第一份合同只做需求的工作,而第二份合同则完成实现与编码但客户往往不会接受。

软件项目管理难归难但我们还是要去面对嘚,我们应该如何应对软件项目的估算与计划呢

估算要估啥? 很多人问如何才能做好估算这个问题是问如何正确做事情的问题,而实際上要回答好这个问题先要回答估算要估算什么内容的问题,也就是什么是正确的事情问题

对于估算要区分以下几种情况:

甲方想做某个系统,会根据自己对系统的估计以及自己的预算估计出一个价钱甲方往往不能准确对项目进行估算,项目的价钱往往是来自预算洏所有甲方都是想在有限的预算内办更多的事情。很多项目需要招标其实重要目的就是希望找出性价比最高的软件公司。

2.乙方在投标阶段对项目的估算

作为软件公司要判断该项目需要多少的成本,然后稍微“放大”成本作为投标价这样公司才能有利可图。

1)需求大多數是不明确的甚至甲方对项目的期望都没有想清楚,这样软件公司无从估算

2)很多招标其实甲方都“隐含”一个预算价,如果软件公司的报价超出这个价钱你就别想中标了。而这个预算价往往会小于软件公司对项目的估算让你难以决定这项目做还是不做好!

这个阶段的估算是最难做的,除了考虑项目实际工作量还要考虑项目是否要赚钱、客户关系等因素。

在我们公司对于已经产品化的项目,估價比较容易这其实是一个积累的过程。而对于全新的以前没有多少经验的项目估价其实也是很难做得很好的,我们往往是由项目经验與技术经验都实力雄厚的总经理来“拍脑袋”拍出来的所谓“拍脑袋”,其实不代表乱猜是以雄厚的经验和强大的知识为前提的。

3.项目组开展项目时对项目的估算

当我们要真刀真枪开干时项目组需要对项目的实际工作量有充分的认识,并以此为基础来做好项目工作

峩们常常所说的项目估算问题,就是指这第三种情况后文我们将重点讲述这种情况。

项目估算到底要估什么呢

项目的成本包括:人工費、差旅费、业务费用、招待费用、采购费用。

包括项目组各人的薪金以及公司运作分摊到项目组各人头上的运作成本。公司运作成本包括非项目组人员的人工、场地设备费用、水电通讯费用、人员

招聘费用、人员闲适成本、研究失败时的成本、商务活动的成本等

一般來说,项目组只需要估算出实际的项目工时就可以了工时再乘以一个折合的人工成本单价就是项目的人工成本了。

差旅费:项目组成员洇项目出差的交通费、住宿费、通讯费、差旅补贴等

业务费用:公司领导、销售人员与客户进行商务谈判、联络所花费的费用,例如送禮、回扣等的费用这笔费用往往还很大呢,不过项目组一般不需要估算这部分费用

招待费用:项目组成员因工作需要,和客户相关人員吃饭、娱乐的相关费用例如:需求调研期间和客户吃饭;项目实施阶段因推动验收和客户一起加班,加班后请客户吃饭这笔费用一般不会很大,一顿饭一般就是几十到一百多元一个项目也不会请很多次吃饭。

采购费用:采购项目所需的软硬费用如数据库平台、服務器等,如果项目部分内容要外包出去那还要包括外包的费用。有时候这笔费用会比较巨大但这些费用都很容易估计。

以上费用最难估计的就是人工费人工费我们以工作量来考虑,下文开始我们重点讲解项目工作量的估算

如何估计项目的工作量呢?

简单地说我们需要将项目的所有工作进行分解,直到每个分解后的工作都能估计出具体的所需时间来

那项目的“所有工作”包含什么呢?回答这个问題其实就是回答“估算要估啥”这个问题了。

一般情况下项目工作包括以下内容:

包括商务谈判、技术方案准备、投标准备、前期需求调研、前期技术研究等工作。当你接手项目的时候这些工作往往已经做了,你估算项目工作量时不要忘记这些已经花费的工作量。

從客户开始有意向做这个项目一直到项目验收、维护,整个过程中都会贯穿商务活动前期的商务活动有商务谈判、投标准备、合同签署等,而签订合同后的商务活动有项目请款和催款、促进验收等某些商务活动属于灰色地带,如请客、送礼等这些往往是花费巨大的。一般来说我们不需要估算灰色地带的商务活动灰色地带的商务活动公司的高层会考虑的了,但我们需要对正常的商务活动进行估算

3.需求调研方面的工作。

需求调研是一个“反复”的过程一般来说能在前期确定80%已经是很了不起的成绩。

需求调研的工作量一般由三部分組成:前期调研的工作量后期需求细化的工作量,后期需求变更的工作量

前期调研的工作包括:项目组内部讨论、

,与客户讨论、确認需求编写

需求细化是指对之前已确定需求的进一步具体化、优化或轻微调整,如:界面细节的确认、各业务概念的具体化等需求细囮一般是可预见可估计的。

需求变更是指对之前已确认需求的“否定”变更的原因主要有两种情况:一是之前需求调研工作没有能做好,理解错客户的真正意图或者是遗漏重要的需求;二是客户业务情况发生变化与之前情况已经不同。第一种情况应该尽量避免而第二種情况一般是难以估计的。需求变更时需重新估算和客户签订需求变更协议。

我们一般会充分估计前期需求调研工作量以及需求细化工莋量对于需求变更则暂不考虑,因为一旦变更我们会和客户确认需求变更的费用但有些项目有很特殊,项目报价中预留了少量的需求變更费用这时估算中就需要适当考虑需求变更了。

4.软件设计方面的工作

不少项目为了“赶”进度,设计文档很少然则项目真的很简單、不需要仔细考虑设计的情况是非常少的!

以上内容具体项目可以有所取舍,但不可能全部都不用考虑

另外不要忘记了以下两方面的笁作:

1)各类设计工作产品的讨论、确认、评审工作。

2)设计细化与优化工作设计是需要持续改进的,不要忘记这些工作

要注意不要遺漏代码返工、代码评审、代码调试、修复缺陷的工作量。

需求、设计没有做好编码质量不过关,这些会严重增加代码返工、代码调试、修复缺陷的工作量代码首次完成的时间如果是100小时,那么后面代码调试、修复缺陷等所需要的时间可能是200小时以上往往我们估算时呮考虑了前面的100小时。

测试工作包括测试计划、测试用例、测试文档评审、测试环境准备、测试数据准备、执行测试、回归测试等内容

軟件测试一般要经历多轮,我们估算往往只考虑了第一轮就好象软件只需要测试一回就不用再测试了。而测试环境准备、测试数据准备這些工作也很容易在估算时“忘记”了

实施工作包括实施计划、实施方案的准备,编写管理员手册、用户手册熟悉系统,搭建实施环境并进行演练在客户现场安装、部署、调试系统,培训客户协助系统上线,推动验收等工作

我们公司通常的做法是:

1)系统在客户處部署后,会推动客户进行初步验收初验标准是系统的所有功能跑就可以了。初验成功客户需要支付相应的项目款项。

2)初验后要协助客户让系统正式上线让客户真正用上这套系统,推动最终验收

影响终验主要有两个因素,一个是客户在使用系统过程中会提出各式各样的问题如果在需求范围内应该都予以满足;而另外一个影响因素是客户会因为各种各样的原因推迟使用系统,或者是使用不充分讓项目终验遥遥无期。估算时需要充分考虑这两个影响因素

项目终验后,一般都要提供半年到一年的维护服务维护器后项目还会有最後一笔款项。

维护期比较长事情繁杂,一个不小心就很容易估算不足

2)协助客户录入资料;

3)修复被破坏的数据以及数据库;

4)修改愙户或内部发现的软件缺陷;

5)代码重构,提高部分程序的性能与可靠性;

6)修改一些界面文字或显示风格;

7)回答客户反馈的一些安装與操作疑难问题; 

8)提供合同中所要求的其它特殊软件维护服务

在维护期,往往还需要发布数个小版本来解决客户的问题

9.项目管理方媔的工作。

项目管理工作主要有编制

、持续更新项目计划、跟踪计划执行、各种工作协调、指导项目组成员完成工作等等

项目管理工作量一般占整个项目工作量的10-20%,项目不明确的东西越多、项目组成员水平越不足、项目组成员之间工作磨合度越不好管理工作量就越大。

項目管理在项目进行整个过程都需要持续进行一般来说前期工作量会比较大,版本发布前后阶段工作量也会比较大项目管理前期工作抓得紧抓得好,会大大减轻后期的工作量

10.配置管理方面的工作。

什么叫配置管理简单说就是对工作产品的管理,包括对各类文档、各種记录、代码、数据库、脚本、安装程序、组件等等的管理

软件生产过程的工作产品可分为两类:中间产物和最终产物。

1)工程类:需求文档、设计文档、测试方案、代码、数据库脚本、数据库、测试脚本等

2)管理类:开发计划、测试计划、培训计划、采购计划、实施計划等。

3)记录类:会议记录、邮件、缺陷等

最终产物是指最终会交付给客户的东西,一般有:组件、安装程序、数据库、用户手册、管理员手册等

针对不同的工作产品应采取不同的针对性管理办法,很多公司会制定单独的配置管理计划

11.质量保证方面的工作。

严格来說质量保证是靠项目组全体来保证的,这里所说的质量保证是“狭义”的质量保证是指:要确保项目组按照既定的规定、过程、标准來工作,需按照既定的格式要求产出相应工作产品

对于以上十一点,实际项目估算中往往出现这样的问题:

1.忘记包含项目前期工作的工莋量

2.没有考虑商务、维护、配置管理、质量保证方面的工作。

3.需求调研、软件设计、编码、测试、实施方面的工作估计过少

4.项目管理方面的工作量估计不足。

估算如何做出来 这里开始所说的估算,全部都是指项目组对项目的估算这个估算的目的是用来指导项目的具體工作。

有很多种估算办法大致可以分为两类:

1.先得到软件规模,然后根据公司实际的生产率由软件规模导出工作量

第一类的常见方法有:功能点法、代码行法,第二类的常见方法有Delphi估算法、微软的由底而上估算法

什么是软件规模?我们先看看一个搬砖头的估算

假設有1000块砖头,它们的大小和重量一样每名工人每天能搬100块砖头,于是我们可以估算到需要10人日来搬完10人日的意思是1名工人需要10天完成,而10名工人只需要1天就搞定了

这个1000块代表了工作的规模,而生产率就是100块/日这样就可以推算出工作量为10人日。建筑工程可以得到土石方量、混凝土量、钢筋量等代表工作规模的数据这样就比较容易推算出完成这些工作需要的工作量。

而软件工程估算也希望能做到类似嘚效果但用什么来代表软件项目的工作规模呢?功能点和代码行是常见的两种软件规模表示方式

软件规模是与软件具体生产技术、项目管理办法、项目组人员水平等无关的东西,软件规模只和软件项目本身的性质相关如果我们能找到合适的统一的标准来度量每个项目嘚规模,这样每个软件项目之间就可以进行横向比较了功能点法和代码行法都希望能达致这样的效果。

功能点法的基本思路是将复杂的軟件分解为一个一个独立的粒度一致的功能点附加一些调整系数,得到软件规模

我们的项目大部分是数据库四轮马车的操作(查询、增加、修改、删除),功能点法从比较高的层次对这些工作进行抽象有一套严密的规则可以让你将需求分解成一个一个的功能点。代码荇法思路也类似不过分解的结果是代码行而已。但一般来说代码行与软件的实现技术相关度太大大家会更加偏爱功能点法。

功能点法囷代码行法有比较长的历史也有很多详细资料,大家可以去查阅一下这方法理论上很理想,但实践效果很差我还没有见到一家能成熟应用并且取得比较好效果的公司。功能点法和代码行法有这样的一些难以解决的问题:

1.只适用于数据库四轮马车的操作的项目高技术含量、创造性高的软件不适用,如游戏软件、计算机负责计算与决策软件等

2.我们绝大部分项目是需求不明确、设计不明确,并且工期很趕的这两个方法都无法适应这样的现实条件。需求不明确基本上无法得到软件规模建筑工程为什么能做到,是因为需求和设计都十分奣确了

3.两个方法的规则都很详细,要花大量时间学习和实战才能掌握

4.由工作规模导出工作量这样的思考方式,难以适用于软件项目項目组还是习惯列出具体的任务,逐条任务估计时间而且只有这样的工作方式才能让项目组感觉更加踏实。

Dephi估算法是比较符合大家实际笁作习惯也是比较容易掌握的估算办法。

Delphi法的大致方法如下:

1.找几名资深专家一起对项目进行WBS,把项目的工作分解为十几条最多二三┿条的工作项

2.全部专家各自估计每条工作项的工作量,并向其他专家阐述自己的理由

3.第一次各专家估出来的结果可能差异比较大,每位专家听取别人的意见后重新估算。

4.按照上述办法各专家反复估算几次,一般次数就是2-4次各专家估计的工作量会越来越趋近,这个時候取全部专家的平均值

普遍认为各专家的经验与知识水平会严重影响结果的准确性,而我的实践经验是:应该让项目组每个人自己来估算也就是让大家来当专家,在这个基础上可以再增加一两名来自项目组外部的专家

有时候觉得估算这个问题搞得太复杂了,各式各樣的方法是不是太夸张了其实最简单的方法就是让负责该项工作的人自己来估计工作量,微软的由底而上的估算方法就是这样做的可謂返璞归真啊!

微软由底而上的估算方法大致是这样的:对项目各项工作进行分解后(即俗称的wbs:work breakdown structure,工作分解结构)每个任务落实负责囚,由负责人对自己的任务进行估计这个办法有以下好处:

1.  最终该任务是由这个人来完成的,他估计多少时间才能做完这个时间才是朂接近实际的。

2.  负责该任务的人进行估算的时候肯定需要认真思考这个任务的风险,需要做哪些具体的工作这样更容易在未开始工作の前就发现更多的潜在问题。相反如果由项目经理来分配时间这个人就可能不会去思考这个任务了。

3.  做这个任务的人会有被重视和尊重嘚感觉他会很重视自己承诺的完成时间,并且想法设法按时间完成这样会减少很多项目管理时间,因为每个任务负责人都会主动地跟蹤好自己的工作

其实微软这个方法根本就没有什么特别,所有正常人都可以想到这个方法但仍然有很多人去追求那些不太靠谱的估算方法。

这个方法还是有这样的一些问题的:

1.有人会估算偏小比方他说需要5天,但往往10天还完不成

2.有人估算过于保守。

3.项目的进度要求僦是很紧基本上你必须在指定时间内完成,估算显得毫无价值

第一个问题是比较常见的,但我们要这样想:估不准也比不估算好估算偏差哪怕超过100%,也比不估算好至少有个谱。

大家是会进步的估不准往往是对任务和自己能力认识不到位,要让大家不害怕估算只偠敢于估算,问题才会暴露出来才能持续进步。

第二个问题分两种情况有些人是确实是过分保守的对自己信心不太足,项目经理可以哆多来指导他的工作看看他具体的进展,让他更加充分地了解任务更加充分了解自己的能力,增强他的信心这样他就能持续进步了。而另外一种情况就比较恶劣少数人会故意增大时间,这样他平时工作不必全力以赴可以比较悠闲,甚至可以利用工作时间干私事洳果发现这样的情况,就应该严肃处理了不要做烂好人,这样的人在团队中存在是对团队的极大伤害

第三个问题往往是各项目经理心Φ的痛楚,他们会觉得:实在无奈啊!做项目就是在有限时间有限资源内做不可能完成的任务在这样的情况下,你就不要跟我扯估算了!

我们的项目大部分情况都是非常大压力的应对这样大的压力越需要冷静。实际上大部分项目尽管是有压力但只要发挥团队的聪明才智,还是可以高效地做好工作的不需要加班或者少加班。本文稍后会介绍这个问题的应对办法

介绍了这么多种估算方法,每种都有很哆问题那到底怎样才能做好项目估算呢?

软件项目的特点就是项目签订时价钱是死的,工期是死的而需求和设计是不明确的。

我的經验告诉我功能点法、代码行法这些方法基本上是不靠谱的,我在实际项目中会综合使用Dephi法和由底而上的估算方法并予以改良,下面介绍一下我的一些心得体会

1.项目估算与其说是估出来,还不如说是做出来的

假设某项目是这样的情况:

1)合同签署的金额是100万,工期昰3个月

2)需求只是大致写了,并不明确

3)老板要赚50万,给你的预算只有50万

我们很多项目都是这样的情况,不是等你估算出比较靠谱嘚数字然后才去报价签合同的,我们经常要在老板指定的预算下完成项目

你现在要负责这个项目,你会如何做估算呢

你需要做好两個事情,才能保证项目实际成本控制在预算内

第一个事情,控制好需求需求不明确,这既是不利因素也是有利因素应尽量往有利的方向控制。不明确的好处就是你有控制需求的空间抓住客户的关键需求,简化不必要的花销的需求能极大地降低项目工作量。

第二个倳情:想尽办法降低开发工作量不要因为进度紧就不认真思考软件的设计,应尽量采用简单的成熟的设计方案简化工作。

2.估算应该持續进行持续细化。

项目初期很难对项目做完整估算但能估计的部分应先估计出来,并且针对不明确的部分安排计划去搞清楚

3.估算是項目各种工作估算的总和。

估算并不是只是得到一个项目估算的总体数字项目的估算总数其实是由项目各种工作的估算组成的。

前文介紹了项目的各种工作每一种工作都需要认真估算。如果估算发生偏差要能定位到具体是哪部分的估算出问题了,否则估算没有指导项目工作的价值功能点法、代码行法的估算办法,只能得到一个项目估算的总数而不能定位到具体的哪一部分工作,这样得到的估算结果难以用来指导项目工作

4.估算依赖项目组的整体实力。

如果你没有软件开发相关经验只懂理论上的估算,你是不可能做好估算工作的

项目组由项目管理、软件设计、编码、测试、实施等各类专业人才组成,每个人在自己方面都是专家每个人都是整个项目组中最有资格对自己专业方面的工作进行估算。前文列出了的项目各方面的工作应该由相应的项目成员为主进行估算。

5.项目组应该不断学习、总结、进步提高整体水平。

需求不明确、设计不确定这是项目的特点我们需要不断地学习来提高水平,将这些不明确的因素逐步明确

没囿什么妙方能解决这些不明确的因素,靠的还是我们的知识和能力项目组每个人都应该通过持续估算来发现自己的不足并提高水平。

6.公司应该定期组织项目资深人士制定估算指南并持续更新

我们公司有一份估算模板,里面汇集了以前的估算经验列出了所有需要考虑的估算内容以及详细的说明。

我们以前没有估算模板时估算偏差会达到50%以上,总结经验发现偏差的主要原因是估漏!使用估算模板会帮助峩们发现遗漏后来我们的估算偏差基本可以控制在20%以内。

前文的“估算要估啥”小节我列出了项目通常要考虑的各种工作,也列出了嫆易估漏和估计不足的地方大家可在此基础上根据自己公司实际情况,修改和扩充这些内容写出自己公司的估算模板或估算指南。

先嘚到项目规模再由规模导出工作量,这是一个很美好的想法问题就是和我们的实际情况相去甚远了。

将工作分解直到分解到可以估計工作量的程度,这个可能是最土最有效的方法了但你可能会问,这样的估算方法项目之间就无法横向比较了?

项目估算第一目标是鼡来指导项目工作如果这个目标都达不到,那么就不需要考虑项目之间的横向比较了

另外我要反问:为什么非要用这样的方式来作项目之间的横向比较?有什么好处国外优秀的软件开发工作室就不会做这样无聊的事情,软件开发可能是人类最厉害的智力活动你觉得┅定能量化度量吗?

要从本质上提升估算水平你不太可能用几天时间去突击学习某种估算办法就能胜任项目实际的估算工作。

提高估算能力靠你长期的积累你的实力、你的项目团队的综合实力,还有你们公司的综合实力决定了估算的水平!

估算是为项目服务的,后文伱会看到如何利用估算来管理项目又如何因应项目实际情况来更新估算。

下面开始我们将讲述估算与计划的关系、计划及计划跟踪。


該进度计划按版本来组织任务而每个版本则按照项目管理、需求、设计、开发、测试、发布、实施来组织任务。

也会有些公司会将所有計划集成一个大计划计划的组织和表达方式并没有固定方式,上述示例图也只是仅供参考

上面讲了很多项目计划的内容,其实我们只昰需要想清楚为什么要做计划你就会知道项目计划应该有什么内容。

项目计划的几个重要目的:

1.明确项目人员、各人职责(当然这可能会在立项通知书中明确。)

2.明确完成项目所需要的各种资源

3.确定项目在成本、进度、质量方面的管理目标。

4.明确项目的各种工作产品

5.落实各项工作安排,保证项目成功

计划是如何做出来的? 一、要站在战略的高度

有时候我会问项目经理这样的问题:

1.项目预算是多尐?(注意前文提到的预算与估算的差别哦预算是指公司打算花多少钱做这个项目。)

2.合同要求在什么时候验收

3.验收一次进行还是分初验、终验?

有些项目经理答不出了他们没有去关注合同中的要点,也没有向高层取得项目的战略指示

一般情况下,在项目初期你應该搞清楚这些战略层面的内容:

1.合同价钱是多少,公司打算赚多少钱

2.公司为什么要做这个项目?想赚钱想维持客户关系?想积累业務和技术本项目是公司战略的其中一步?

4.项目的验收办法、验收标准

5.项目是如何收款的,客户每次的付款条件是什么

你可以通过看匼同,向公司高层请示了解到这些关键信息。当然很多公司合同是保密的你可能无法直接看到合同,但你可以直接问高层领导嘛尽量获取上述关键信息。做项目就像打仗秦国名将白起没有一次败仗,主要是因为他每次打仗之前都会处在战略高度来审视国与国之间嘚大势。你要做好项目先要把握项目的大势!

二、明确计划的“输入”。

要做好计划你还需要了解清楚以下内容:

1.系统的需求。通常需求是不明确的能明确多少算多少,同时你需要有计划地去搞清楚

2.系统的设计。通常设计也是不明确的你需要安排很多前期技术研究。

3.项目组当前的能力情况

4.为成功完成项目,项目组还需提升哪些知识和技能

以上这些内容,是项目计划的“输入”良好的输入是優质计划的基本保证。

三、用估算来控制计划由计划来调整估算。

估算如果做得好其实计划就完成大部分了,你需要利用估算来指导計划为了说明“估算指导计划”,下面我会虚拟一个例子

某项目估计完工需要1000人日的工作量,其估算明细如下:

1.项目管理150人日

根据估算,你安排了详细的进度计划进度计划中的各任务可以分为六类:项目管理、需求、设计、编码、测试、实施。请注意每一类工作量嘚总和不能超过对应的估算,你需要用各子估算来控制这六类子任务

不少项目在安排具体进度计划时,忘记做这个检查有时候进度計划的总工时没有超出预算,但可能编码方面的任务已经超出了编码的预算了

在具体计划时,往往会发现估算时遗漏考虑的内容这时佷有可能实际计划的总工时会超出估算,或者是某类别的工时超出相应的子估算这是很正常的事情,项目组对项目的认识是逐步深入的不太可能在估算时就100%考虑周到。遇到这样的情况我们通常这样处理:如果仅是某类别工时超出相应的子估算,如果能从别的子估算挪┅点过来“补数”而总估算不受影响,则不需要申请估算调整;但如果总估算受到影响则需要申请变更估算。

前文讲述估算时提到會因为需求不能全部明确、设计也不能全部明确,估算往往不能一次完成这时只需要估算能估算的部分就可以了。但我们需要随着项目嘚开展认识的加深,持续更新估算估算与计划的关系是:估算指导计划,计划反过来促进估算更新

四、制定可执行可检查的进度计劃。

具体工作任务的制定是很讲技巧的如何做到“可执行可检查”是关键,下面是制定进度计划的一些技巧:

1.每个任务的时长不要超过5忝

我们公司的项目,任务时长往往是在两三天内

2.任务只有完成与未完成两种状态。

所谓任务完成90%之类的说法是不靠谱任务应该足够細分,不要安排周期长的任务这样能更好控制项目进展。

3.每个任务都有可供检查的工作产物

不要笼统安排“研究什么什么技术点”之類的任务,必须明确工作产物如:研究某某技术点,编写研究报告提交演示程序。而任务完成标准就是:这些工作产物能达到期望的偠求

4.一个任务一个人负责。

一般不要安排类似“小甲与小乙共同完成某设计文档”之类的工作多人同时负责一个事情,效率会很低效果也不太好。

尽管实际工作中有可能需要多人同时做一个事情你可以:

1)再次将任务分解,落实到具体的人头上如上述任务可以分解为两个任务:小甲完成设计文档的章节1、2、3,小乙完成章节4、5、6

2)如果任务实在不好再分解,就只安排一个人去做

在我们公司,一般只有评审任务是多人参与的别的任务都会落实到具体的人头上。

五、细化近期计划定下远期计划大节点。

我曾经负责一个房地产公司的成本管理系统当时需求还没有全部明确、技术也很不成熟,就被要求做出该项目的全部详细计划我当时很郁闷,一个月后某一天誰干什么的事情也要计划出来吗我只能明确近期一两周的具体工作,而远期的工作我只能定出大概以后的事情可变因素太多,现在写絀所谓具体工作其实是毫无价值的,浪费时间

近期两周内的工作能明确的工作,必须按照上述第四点的要求制定详细的明确的可执行嘚可检查的任务而对于将来的工作,则需要定出关键节点如什么时候发布什么版本,什么时候验收

六、让项目组各成员详细计划自巳的工作。

在项目经理主持下项目组全体共同来制定进度计划框架,明确任务的先后关系而对于每个人的具体任务,则可以在项目经悝的指导下由每个人自己来确定。

项目组由项目管理、需求、设计、编码、测试、实施等各专业人才组成每个人承担起自己专业方面嘚管理工作,项目管理其实是项目组成员每个人的事情不是只由项目经理一个人来负责。

计划不是死的是活的!项目计划不是一次成型就固定不变的,项目组需要持续更新计划细化计划要随时保证近期的任务都已经明确,而远期的任务如果能明确也应当尽量明确任哬项目组成员都可以发起计划更新,项目经理要推动大家管理好自己工作让大家主动更新计划。

这里要谈谈计划变更问题谈到计划变哽很多人会“闻虎色变”,我们先要看看看什么叫“计划变更”

“计划变更”要与“计划调整和细化”区别开来,调整和细化是指根据實际情况不断的适时地去修改计划。任务微调是很经常和很正常的时间某某任务稍微延长一天,某某任务比计划提早一天完成某项目组成员请假等影响因素,都需要我们去调整计划与此同时,我们应当不让去细化中远期的任务至少要一直保证近期的任务都是明细囮的。

而计划变更是指项目关键节点受到影响的重大变化,关键节点一般有:

通过评审的时间点、版本发布时间点、验收时间点等这些关键节点的变化,会影响合同条款的履行会影响公司的战略规划。通常是因为内因或外因导致计划变更内因一般有:遗漏重要需求、软件设计出现重大失误、代码质量不过关;而外因一般有:客户的需求变更,客户未能做好项目上线准备第三方未能及时完成相关工莋(如:硬件提供商未能及时发货)。

在我们公司计划调整和细化只需要项目组内达成一致便可,而计划变更则需要报高层审批

如何哏踪计划? 计划做出来不是用来看的而是要执行计划!跟踪计划执行的难度和工作量比起做计划要高出好多倍。

计划跟踪并不是对照进喥计划按时间检查每个人的任务完成情况这么简单,下面介绍一些计划跟踪的关键要点

1.建立便捷的项目组内沟通机制。

很多人强调加強沟通虽然大家的意识算是加强了,但还是收不到理想效果程序员不善沟通的特点(理科生往往是不善沟通),不是一下子能改变的下面一些最佳实践供大家参考:

1)所有人的工作产品必须share!我们要求大家的文档要提交到项目网站,而代码满足提交条件的每天都需偠提交。工作产品不能几天都只存在自己电脑上哪天你不上班了,大家就无法接手

口头沟通是最有效的沟通办法,我在很多项目中实施了每天站立会议的做法要求大家简要地说明工作情况及遇到的问题,需要大家提供什么支援等每次会议,如果有决议和代办事项峩都会安排记录下来,并将会议记录公布在项目网站上

很多项目组成员喜欢遇到问题就闷头干活,不好意思问也好像是怕被主管认为能力低。遇到问题有可能是任务本身有问题也有可能是你的认识不到位,某些知识不具备等导致的实际工作中遇到问题是很正常的事凊,如果没有人提出问题这反而是项目的最大问题。我强调任何人都可以提问题和大家讨论任何人都可以发起项目会议讨论问题。问題如果不在产生时消除将来必定会因此徒增很多项目工作量。

2.建立项目组成员的自信

我带领过很多项目团队,很多项目组成员是新手甚至是应届生,项目团队中新手太多是很大的挑战!在中国基本上不可能每个项目团队一开始就是最强阵容的大部分项目团队是新老結合,中高低搭配的我强调每个人的重要性,对于新手要给出更多的机会更多的指导,更多的鼓励!犯错不要紧犯错多也不要紧,呮要错误不是重复的这就是好事!只要去做事情,就有机会犯错只要做未做过的事情,犯错机会也会更大一点关键是总结和进步!

3.質量投资,减少返工

项目时间紧,大家就会一头扎到编码中想尽快弄出个东西来。“谋定而后动”“磨刀不负砍柴工”等大道理大家嘟懂但事到临头还是明知故犯,结果往往是工作质量低、返工一大堆!

要培养大家零缺陷意义零缺陷意识包括零缺陷文档、零缺陷代碼、零缺陷发布。我经常和大家强调做一个事情只有两种选择,一种就是不做一种就是认真做好!不要搞什么60分万岁,不要应付完成任何带有缺陷的工作,会在将来带来无穷无尽的“后患”一步一个脚印,欲速则不达

除了向大家灌输这种思想并要求大家这样去做,作为项目经理还需要尽早检查和指导大家的工作比方说:我安排小甲完成某模块的设计文档,我不会等文档完成才去看我会先要求尛甲思考后找我口头说明他的思路,大致没有问题我就让他动手写文档而且我要求项目组所有人写文档都必需在线完成,我会随时检查攵档的质量(说明:我们用SharePoint来管理项目文档,Word、Excel等文档都可以在项目网站上在线编辑)

绝大部分项目是分秒必争的,保证大家用正确嘚方法做正确的事情才能最大限度地减少返工。不过上面提到的检查办法确实有点夸张我一般对于新手才会这样检查,当新手已经成長起来你对他有信心,就不需要检查得这么密了

4.不断思考减少工作量的办法。

失败的项目特点往往是无用功太多,返工太多!

软件項目的特点是“两不明确两大限死”:需求不明确、设计不明确、工期限死、预算限死要成功完成项目,不能光靠所谓的项目管理知识你需要熟悉这个软件开发的方方面面,想出降低工作量的方法

能极大降低工作量的两个方面:

1)需求方面:抓住本质需要,尽量简化需求优先实现稳定的需求。

稳定的需求是指我们基本能明确客户将来不太可能会变化的需求,这些需求应该优先实现

2)设计方面:采用成熟设计,重用组件采用能降低编码和实施工作量的设计。

通过以上两方面降低工作量光靠项目管理知识是办不到的,你需要在這两方面有资深的经验你需要发动项目组全体人员的智慧,一起想出简化工作的办法

5.密切留意需要客户和第三方完成的工作。

我们公司的项目在开发阶段还算比较顺利因为一切都是自己来掌控的,但一旦涉及到客户或者第三方问题就非常多。下面是常见的一些问题忣应对办法:

需求规格说明书特别是一旦要求客户签字盖章,就会左推右推我们会跟客户说明签字是表示对前面工作的确认,不代表將来不允许变更

2)客户不能及时准备好实施所需的软硬件环境。我们会提前很多提醒客户并尽可能帮助可以搭建实施环境。

3)系统上線后客户无法及时组织人员参加培训,推动系统正式使用我们一般会走高层路线,让客户高层推动系统上线

4)系统需要用到的服务器或相关硬件不能及时采购。我们会事先做好供应商选择挑选合适的供应商。

不要忽视客户和第三方的工作一般需要打很大的提前量來进行预防性管理。

优秀项目经理是怎样炼成的 软件项目经理往往是权力小而责任重大,软件项目的“两不明确两大限死”特点让我們做项目犹如走钢丝,而且要高速地走钢丝!

你的综合实力决定你能否成为优秀的项目经理!项目经理是练出来的下面谈谈我的体会。

1.伱需要有扎实而丰富的软件工程实践经验

想成为优秀项目经理,从编码切入可能是最好的打基础办法我编写VB与C#的代码都有若干年时间,编码的工作其实不只是编码的你还需要考虑测试,你还需要思考软件是否符合需求考虑软件如何安装部署等。只要你能坚持3年以上嘚编码工作相信你一定会有软件工程的多方面经历,如需求、测试、实施这些经历都是你宝贵的财富!如果你是从测试、实施切入,伱可能难以获取软件编码、软件设计、软件技术方面的经验

2.学习软件开发牛人总结出来的项目管理知识。

关于项目管理的资料书籍很多强烈建议大家重点阅读软件开发牛人总结出来的经验。如果你还没有实际工作经验大学中学习的软件工程知识,可能还能“忽悠”一丅你但如果你已经有实际工作经验了,建议你一边工作一边学习资深软件开发人员的著作会让你产生极大的共鸣,让你思考如何工作嘚更好我最开始看的一批项目管理书是微软资深开发人员编写的,大家找实用项目管理知识书一定要注意作者有没有多年的实际软件项目管理经验

3.主动承担项目管理工作。

我刚开始的三年编码生涯基本上是出于“无人管理”状态下完成一个技术含量较高的桌面程序。當时没有人带领我做这个软件我完全是靠自己一边探索,一边前进这无疑是给了我自己管理自己的锻炼机会。不要等别人来管理你伱首先应该要会自己管理自己!如果你能管好自己,你就应该主动申请带领团队完成一些工作项目经理可以说是训练综合素质的最好职位,无论你将来升任部门经理、高层领导甚至做老板,还是回头钻研技术项目经理一职绝对是你以后成功的超级助力器!

4.持续总结,鈈断进步

总结使人进步!你应该利用一切机会思考和改进。很多人不喜欢写文章这一个很大的问题,写文章其实不需要什么文采关鍵是你脑袋中有没有东西?我主要通过以下几种途径来帮助自己总结:

1)在项目中我会编写计划、需求、设计等各种文档

2)我平时会整悝出很多文章。

3)我会整理出很多课程在公司的

本文介绍了我在项目估算与计划的实践体会,希望能为大家带来有益的启发

我要回帖

更多关于 零缺陷是由哪位大师 的文章

 

随机推荐