软件项目的最大特点“两不确定两大限死”,即需求、设计不确定;预算、工期限死。让挣值管理的“生存空间”很少。
要发挥挣值管理的作用,你需要:
1.真正理解挣值管理的含义和意义。 挣值管理一开始很难理解,就算你使用一段时间后也不见到能理解全部的含义。而能理解挣值管理意义的人就更少了,很多人就是为了玩数字游戏,不知道为什么要挣值管理。
2.项目计划与计划跟踪工作必须严格切实推行和落实。 项目计划与计划跟踪的工作必须要做好,这是进行挣值管理的前提和基础。做软件项目不同于其他工程项目,工作无法按件计算,通常只能用工时来计算人工成本。
工时具有双重特性:1.任务的成本; 2.任务的进度
这也正是软件项目管理中打通进度和成本之间关联的重要特征。
挣值管理的三大基本要素:PV(计划成本、计划进度),AC(实际投入成本),EV(实际完成进度)在实行计划与计划跟踪时,我们重点关注三个方面: 1.计划好每项的任务、任务的先后顺序,期望的任务完成程度。 2.实际投入情况,如实际投入了多少时间、花费了多少钱等。 3.任务的实际完成情况。从公司经营层面上,最关心的就是实际的成本(与前述的时间成本不大一样,这里的成本是钱)
在软件项目过程中,人员的差别,其他费用的支出,都形成项目成本,那么怎样把项目成本和时间成本统一起来呢
我自己的做法是:
使用一个综合(平均)成本价表示所有人的标准人件费(将人员成本差异,非人员成本支出等因素都平均分摊到人员成本中)。
这个综合成本价是通过将公司的公关费用、场地费用、税金、水电费、设备折旧、
支持类人员(如:行政、财务人员)的薪金、员工不忙时仍要支付的工资、研究失败时成本、员工薪金等等所有花费,
摊派到每个直接生产软件的员工(项目经理、设计人员、程序员、测试、实施、配置管理、QA等)。
一般一个员工的薪金只是占他所花费的总体成本的30-40%。
通常使用每小时100元的标准。【人月=100元/小时×(22×8)小时 = 17600元】
上述只是一个参考,只要在工时与金钱之间存在转换途径,为简单起见,可以只使用工时来表示。
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。成本偏差(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。项目最开始时,PV都计划好了,在时间轴上有很多任务,越往后,各任务的累计PV值就越大。而最开始时,各任务AC和EV均为零,但随着项目开展,AC与EV累计值也会不断增大。
1.如果项目一直都需要加班,但基本能按时完成,PV、AC、EV之间关系怎么变化?AC>PV,EV与PV趋于一致。
2.如果项目不需要加班,基本能按时完成任务,PV、AC、EV之间关系怎么变化?AC=PV=EV
3.如果项目一直不需要加班,还能提前完成任务,PV、AC、EV之间关系怎么变化?成本节约:EV/AC>1;进度超前:EV/PV>1
结论:挣值管理不是搞数字游戏,要让挣值管理实用!挣值管理将项目管理工作数字化、可视化,但在实际项目管理中用上,但往往实际效果不甚理想。下面列举一下常见的情况:
1.项目计划与项目计划跟踪工作没有做好。
很多软件项目,没有文档化的计划,没有详细的进度计划,很多工作通过开会、口头布置等方式落实。这样无法得到PV、AC、EV这三个基础数值,挣值管理自然就无从落实。
2.没有有效的、简单的实际数据收集方式。
计划与计划跟踪的工作落实是进行挣值管理的基础,但如果没有有效的、简单的实际数据收集方式,挣值管理也难以完全落实。一般大家使用Project来做进度计划,如果能将任务细化做好,就能得到PV;如果我们能将任务的完成情况及时更新,这样就能得到EV;但实际工时(AC)就不容易统计了。有些公司每周或者每月收集一次实际工时,有些公司还专门安排项目助理来负责数据收集的工作。但这些做法一开始会让项目组各成员很不适应,能坚持下来的项目就很少了。
3.软件项目自身的“两不确定两大限死”特点。
就算以上两个问题你们都能解决,但你无法解决软件项目“两不确定两大限死”的特点。这个特点让你无法在项目初期计划好项目的全部工作,而且计划还经常与实际不符,你需要经常调整。也就是说你无法定下全部的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!软件项目是人类的高级智力活动,一个很有智慧的想法就能解决很多问题。
软件项目需求不确定、设计也不特定,需要我们用更多的智慧去主动迎接这两个挑战,想办法降低工作量!
对于挣值管理PV、AC、EV,我的看法是: PV:你要想尽一切办法降低PV,这是让项目成功的最有效办法,是你最需要做的事情! AC:要让项目组水平不断提高,让大家学会高效的工作办法,让大家用正确的办法做正确的事情,这样才能降低AC。 EV:每个任务的完成标准必须明确,任务要足够细分,不要安排长周期的任务。任务只有两个状态:完成与未完成,任务完成90%之类的说法是不靠谱的,只要未完成,状态就是未完成,该任务EV为零。 我觉得挣值管理最大的精要应该在于你对PV、AC、EV的认识!PV、AC、EV其实不必量化,项目成功的关键在于项目组的整体能力水平和知识水平,在于工作的条理性和严谨性。你觉得项目管理有问题,其实问题可能不是因为没有应用挣值管理,而是项目组的水平不够,工作没有条理。