摘要:
要考PMP(Project Management Professional ),挣值管理是必考的知识。软件项目有很大的特殊性,不少人认为挣值管理不太适用于软件项目。挣值管理相关资料也比较超多,但一般都难以读懂,本文将会以轻松、易懂、实用的角度为你讲解。

作者

张传波

软件知识大学

www.umlonline.org/school/

大纲:
1.挣值管理无用论
2.从搬石头的故事说起
3.三大基本要素:PV,AC,EV
4.成本偏差(CV),进度偏差(SV)
5.成本指标(CPI),进度指标(SPI)
6.成本预测(EAC)
7.挣值管理不是搞数字游戏,要让挣值管理实用!

正文:

挣值管理无用论

软件项目的最大特点“两不确定两大限死”,即需求、设计不确定,预算、工期限死,让挣值管理的“生存空间”很少。而精通挣值管理的老师往往又不是软件行业的,无法给各位软件项目经理给出针对性的指导。于是难免“削足适履”地在软件项目中应用挣值管理,然后挣值管理无用论就冒出来了。

我所在的公司实施挣值管理有七八年时间,挣值管理在项目中发挥了很大的作用,要发挥挣值管理的作用,你需要:
1.真正理解挣值管理的含义和意义。
挣值管理一开始很难理解,就算你使用一段时间后也不见到能理解全部的含义。而能理解挣值管理意义的人就更少了,很多人就是为了玩数字游戏,不知道为什么要挣值管理。
2.项目计划与计划跟踪工作必须做得很扎实。
无论是否使用挣值管理,项目计划与计划跟踪的工作必须要做好,这点没做好就用挣值管理,那是扯淡。

挣值管理有没有用,在于你的理解和创造性应用,请继续看下去吧。

从搬石头的故事说起

我先从一个显浅的例子,让大家体会挣值管理的最基本道理。

假设有1000块石头,它们重量大小一致,需要由A地方搬到B地方。一名工人一天工作8小时,能搬运100块石头,现在只有一名工人。请你编写进度计划,完成该搬运工作。

你写下了这样一个计划,工人每天搬8小时,每天要搬运100块石头,10天完成。

这计划超简单,我们分析一下:制定计划时,其实我们考虑了什么因素呢?
你其实规划了以下内容:
1.你计划了什么人、多少人干这个事情。
2.你计划了每天工作多长时间,如:工人每天搬8小时。
3.你计划了每天要完成任务的程度,如:每天要搬运100块石头。
4.你计划了完成所有任务的总工期,如:10天完成。

我们看看计划的实际执行情况:
第一天:工人刚好用了8小时搬运了100块石头。
第二天:工人突然小宇宙爆发,用8小时搬运了120块石头。
第三天:工人由于昨天消耗太大,效率降低,用8小时才搬运了80块石头。

你跟踪计划时,其实关注了这些内容:
1.任务负责人实际用了多长的时间,并与计划进行比较。
2.任务负责人实际完成任务的程度,并与计划进行比较。

第一天,工人实际工时和实际任务完成程度,与计划一致。
第二天,工人实际工时与计划工时一致,但任务超额完成了,完成程度是120%,把将来的任务也干了一部分。
第三天,工人实际工时与计划工时一致,但任务没有完成,完成程度只有80%。但和昨天的此消彼长,总体来看前三天总工时、总任务完成程度,和计划是一致的。

计划时,你设定了计划工时和期望的任务完成程度,执行计划时,你会用实际情况与计划进行比较。

第四天,工人状态下降,只工作了6小时,搬运了30块石头,然后就病倒了。
第五天,工人生病,无人干活。
第六天,你急了,进度严重滞后,于是你另外雇了两位工人抓紧完成。
......

作为老板来说,他其实不太关注工人是否生病、工人是否加班,他其实最关注的是:
1.有没有按时搬完石头。
2.一共花了多少钱来雇佣工人。

我们要花多少钱来雇佣工人呢?工人的薪金如何计算呢?两种方法:
1.按时间计算,每小时多少钱。
2.按件计算,每搬一块石头多少钱。

聪明的老板都不会按方法1来计算了,按时间计算工人岂不是天天偷懒,慢慢搬!按件计算,我管你是天天加班,反正我就只出这么多钱。但对于我们软件项目就不这么理想了,我们的工作无法按件计算,我们通常只能用工时来计算人工成本,这为难以应用挣值管理埋下伏笔。

三大基本要素:PV,AC,EV

总结一下搬石头的故事,计划与计划跟踪我们要关注的三大方面:
1.计划好每项的任务、任务的先后顺序,期望的任务完成程度。
2.实际投入情况,如实际投入了多少时间、花费了多少钱等。
3.任务的实际完成情况。

上述三方面表示的方法有很多,而从老板的角度,他其实最关注的就是钱,挣值管理的三个指标 PV、AC、EV ,就是以钱为单位,分别以量化的方式表示上述三个方面。下面我们以软件项目来说明这三个指标。

先用一个最简单的例子,只有一个任务:小甲负责完成某技术点研究报告,该任务的时间是21小时,每天7小时,3天完成。我们需要将该任务表示成与钱相关,我们假设每小时的综合人工成本为100元,这样该任务的PV(Planed Value,计划的价值)为 21X100 = 2,100元。

3天后,小甲实际投入了25小时完成了该工作,那么该任务的AC(Actual Cost,实际成本)为 25X100 = 2,500元。

EV(Earned Value,挣得的价值)即所谓的挣值,挣值表示的是任务的实际完成程度,小甲成功完成该任务,故挣值就是2,100元,和任务的PV一样。但如果该任务只完成了一半,挣值就是1,050,该任务的PV的一半。也就是通过该任务的EV与PV比较,我们可以知道任务的完成情况。

这三大基本要素,分别反应了任务的计划情况、实际投入、实际完成程度。

用钱来衡量任务的三个方面,你可能会觉得不太合适。你可能会有困惑,不同人员他们的薪资水平是不一样的,而且薪资是保密的,如何处理?有两个处理办法可供你参考:

我们公司的做法:使用一个综合成本价来计算,不管是什么人标准一样,每小时80-120元,我们通常使用每小时100元的标准。这个综合成本价每个公司自己都可以算一下,将公司的公关费用、场地费用、税金、水电费、设备折旧、支持类人员(如:行政、财务人员)的薪金、员工不忙时仍要支付的工资、研究失败时成本、员工薪金等等所有花费,摊派到每个直接生产软件的员工(项目经理、设计人员、程序员、测试、实施、配置管理、QA等)。计算后你会发现,某员工的薪金只是占他所花费的总体成本的30-40%。如果这个数字不方便算出来,可以直接拍脑袋估个大概就可以了,甚至直接使用每小时100元就可以了。

而另外一个办法更简单,直接用工时来表示这三个值就可以了,不换算成成本。

一个项目有很多任务,每个任务都有它的PV、AC、EV。项目最开始时,PV都计划好了,在时间轴上有很多任务,越往后,各任务的累计PV值就越大。而最开始时,各任务AC和EV均为零,但随着项目开展,AC与EV累计值也会不断增大。如下图:

attachimg.gif

2010060721300533.png

上图反应了项目的怎样的情况呢?
该项目情况不太理想,实际投入的工时一直超出计划的,而任务又不能按时完成!
请仔细体会本图反应出项目的情况,你将会对这三个值的认识更深。
下面有几个问题,你可以尝试一下回答:
1.如果项目一直都需要加班,但基本能按时完成,这个图会怎样呢?
2.如果项目不需要加班,基本能按时完成任务,这个图会怎样呢?
3.如果项目一直不需要加班,还能提前完成任务,这个图会怎样呢?

PV、AC、EV以前的名字不是这样的,以前分别叫:BCWS、ACWP、BCWP。
BCWS:Budgeted Cost for Work Scheduled,即现在的PV。
ACWP:Actual Cost for Work Performed,即现在的AC。
BCWP:Budgeted Cost for Work Performed,即现在的EV。

如果你之前没有学习过挣值管理,了解有这个事情就可以了;如果你以前学习时的提法是BCWS、ACWP、BCWP,那么现在就需要转换一下了。

成本偏差(CV),进度偏差(SV)

跟踪计划进展情况,我们会关注成本和进度的情况,可以用以下的指标:
CV,Cost Variance ,成本偏差,CV = EV - AC。
SV,Schedule Variance,进度偏差,SV = EV - PV。

如果CV、SV等于零,则表示成本与进度情况与计划的完全一致。
如果为负数,则表示成本超支,进度落后。
如果为正数,则表示节省成本,进度超前。

你可以这样记忆:这两个数字越大越好!CV越大表示成本约节省,SV越大表示进度越超前,CV、SV为零时就表示和计划一致,为负数时,就表示成本超支,进度落后。

成本指标(CPI),进度指标(SPI)

CPI,Cost Performance Indicator,成本指标,CPI = EV / AC 。
SPI,Schedule Performance Indicator,进度指标,SPI = EV / PV 。

CV是EV和AC做减法运算,而CPI则是这两者做除法运算;类似SV是EV和PV做减法运算,而SPI是这两者做除法运算。

CPI、SPI如果等于1,则表示成本与进度情况与计划的一致。
如果大于1,则表示成本节省,进度超前。
如果小于1,则表示成本超支,进度滞后。

你同样可以这样记忆:这两个数字越大越好!这两个数字越大,说明项目情况越理想,成本节省,进度超前。

CPI、SPI是项目的性能指标,这两个指标其实反应了项目的成本、进度的当前性能,数字越大表示越理想。

成本预测(EAC)

EAC,是Estimate at Completion的简称,意思就是项目完成时的成本估计。项目管理者和项目的老板,一定是很关注该项目的最终成本,那如何在项目进行过程中就能预测到最终的可能成本呢?

有这样的一个预测公式:EAC = AC + (BAC - EV)/CPI
BAC,是Budget at Completion的简称,则预算。

上面这个公式可以拆解为:
项目的最终成本预测(EAC) = 已经花费的成本(AC)+ 将来可能花费的成本
将来可能花费的成本 = 项目未完成的工作 / 项目当前的成本性能(CPI)
项目未完成的工作 = 预算(BAC)- 已经完成的工作(EV)

假设项目当前的CPI值能一致保持下去,那么项目的最终成本就一定是这个预测公式所预测到的数字。
如果在将来的时间能持续提高CPI,那么项目的最终成本将会越少,反之如果CPI在将来降低,则项目最终成本会更大。
也就是说你作为项目经理,为降低项目最终成本,你需要随时控制好CPI,让CPI的数值大于等于1,越大越好。

PV、AC、EV这三个概念是理解挣值管理的最基本概念,而CV、SV、CPI、SPI、EAC这些都是最开始那三个概念的衍生。一开始你会被这些衍生概念搞晕的,你需要先回头将最基础的三个概念理解好,特别是理解好前文的那个图以及那几个问题。

挣值管理不是搞数字游戏,要让挣值管理实用!

挣值管理将项目管理工作数字化、可视化,很多第一次学习挣值管理的项目经理会兴奋不已,想马上在实际项目管理中用上,但往往实际效果不甚理想。下面我列举一下常见的情况:

项目计划与项目计划跟踪工作没有做好,就没有做挣值管理的基础,这可能是最常见的情况了。很多软件项目,没有文档化的计划,没有详细的进度计划,很多工作通过开会、口头布置等方式落实。这样无法得到PV、AC、EV这三个基础数值,挣值管理自然就无从落实。

如果计划与计划跟踪的工作能落实,这已经是前进了一大步,但如果没有有效的、简单的实际数据收集方式,挣值管理也难以完全落实。一般我们会使用Project来做进度计划,如果我们能将任务细化做好,就能得到PV,如果我们能将任务的完成情况及时更新,这样就能得到EV,但实际工时(AC)就不容易统计了。有些公司每周或者每月收集一次实际工时,有些公司还专门安排项目助理来负责数据收集的工作。但这些做法一开始会让项目组各成员很不适应,能坚持下来的项目就很少了。

就算以上两个问题你们都能解决,但你无法解决软件项目“两不确定两大限死”的特点。这个特点让你无法在项目初期计划好项目的全部工作,而且计划还经常与实际不符,你需要经常调整。也就是说你无法定下全部的PV,而且PV会经常调整。PV无法全部确定而且会经常调整,这意味着项目计划的基准经常在变化,你会发现不止是PV,AC、EV的数值变化会非常频繁,CV、SV、CPI、SPI这些指标变化幅度会很大。你会觉得花了这么多的心思和工作来做挣值管理,收益却不是很大。

项目计划包括开发计划、测试计划、采购计划、培训计划、配置管理计划等等的各种计划,一般会由不同的人员负责这些计划,这些计划一般是各自编写的,不在同一份文档里面,而且它们的表现形式也不太一样。要系统地跟踪这些计划的PV、AC、EV,就需要解决这些计划的统一性问题,而且不能因为要度量PV、AC、EV,而让这些计划的负责人承担很多额外的工作。

回到最根本的问题,我们为什么要用挣值管理?难道就是为了追求量化吗?

如果某项目的CPI、SPI数值很理想,一直在100%附近,你会觉得这个项目情况很理想吗?
数字不能说明全部问题,数字往往还会欺骗我们呢!CPI、SPI 数值为100%,项目仍然有可能有严重问题。如果项目计划本身有问题,漏掉了关键工作没有安排,这样PV其实是有问题,执行这样的计划,得到的AC和EV,计算出来CPI、SPI,其实没有什么意义。挣值管理说到底其实还是计划与计划执行情况的比较,需保证计划没有问题,这样的比较才有意义。

某项目CPI、SPI都偏低,说明项目超支、进度落后,你会想到怎样改进措施呢?在建筑工程中出现这样的情况,一般就是通过加班来搞定进度落后的问题,而项目超支一般就只能尽量节省一点,没有更好的解决办法。在软件项目中,你会想到怎样的办法呢?
一般我们想到的办法往往是想办法让AC更少,让EV更多,而很少去想办法降低PV!软件项目是人类的高级智力活动,一个很有智慧的想法就能解决很多问题。软件项目需求不确定、设计也不特定,需要我们用更多的智慧去主动迎接这两个挑战,想办法降低工作量!

我们公司采用挣值管理来管理项目,已经有6年以上时间,最开始需要解决的就是落实计划及计划跟踪工作,无论贵公司是否想采用挣值管理,这个工作都应该先做好,否则别的东西都是空谈。在此基础上,我们逐步落实各种度量措施,能让我们方便地得到PV、AC、EV。到后期我们更加是更进一步,将按项目性质和工作类型,细分CPI、SPI,将需求分析、软件设计、编码、测试四个子过程细化,加强控制力度并提高,使之达到CMMI4级及5级水平。

看上去我们公司似乎挣值管理做到了比较高的层次,其实我自己本人是不太想去计算这些CPI、SPI指标的。2009年我做了几个公司之前没有做过全新的项目,需求与技术不明确的特点充分展示出来,而且我带领的团队成员全部都是新人,大部分还是应届生。项目每天都在打仗,而工作重点是想办法去降低工作量!这几个项目,全部都是预算限死、工期限死的!

对于挣值管理PV、AC、EV,我的看法是:
PV:你要想尽一切办法降低PV,这是让项目成功的最有效办法,是你最需要做的事情!
AC:要让项目组水平不断提高,让大家学会高效的工作办法,让大家用正确的办法做正确的事情,这样才能降低AC。
EV:每个任务的完成标准必须明确,任务要足够细分,不要安排长周期的任务。任务只有两个状态:完成与未完成,任务完成90%之类的说法是不靠谱的,只要未完成,状态就是未完成,该任务EV为零。

我觉得挣值管理最大的精要应该在于你对PV、AC、EV的认识!PV、AC、EV其实不必量化,项目成功的关键在于项目组的整体能力水平和知识水平,在于工作的条理性和严谨性。你觉得项目管理有问题,其实问题可能不是因为没有应用挣值管理,而是项目组的水平不够,工作没有条理。

挣值管理不是玩数字游戏,所有数字的背后必须有大量的客观事实支撑,否则要数字不如无数字。本文介绍了挣值管理基础知识以及在实际应用中的经验体会,希望大家能在实际工作中体会并灵活应用。

如果觉得本文对你有帮助,麻烦点击一下“推荐”,十分感谢!