S 曲线与挣值:判断项目是不是真的落后了
单看一个完成百分比,几乎说明不了任何问题。第二周完成六成很出色,第九周完成六成是灾难。S 曲线把累计计划工作量画在时间轴上,于是"我们进展到哪了"变成了"按计划这时候应该进展到哪", , 两条线之间的差距就是答案。
曲线为什么呈 S 形
项目消耗工作量的速度并不均匀。开头几周很慢, , 动员、确认范围、等待审批;中段随着大量工作并行而加速;尾段又慢下来,最后几项都在等签字和收尾整改。
把累计工作量对时间作图,形状自然就是一个被压扁的 S:平缓、陡峭、再平缓。这不是谁画出来的目标,而是工作实际到来的方式决定的。
这恰恰是它可以当尺子用的原因。一条直线意味着时间过去两成、项目就该完成两成,那么历史上每一个项目在第一个月都会显得"落后"。
怎么读计划值与实际值
两条曲线。计划曲线来自基准:把每项任务的权重摊到它的计划日期上再累加。实际曲线来自上报的进度。
在今天这条线上,竖着读:
- 实际低于计划, , 落后。竖直距离就是欠下的工作量。
- 实际高于计划, , 提前,或者进度上报偏乐观。两种情况都常见。
- 两条曲线在张开, , 问题在恶化,而不是稳定下来。这是最要紧的形态,也是单一百分比永远显示不出来的。
换成横着读,会得到在例会上更直观的说法:从今天的实际点向左移,直到与计划曲线相交,那个日期就是计划中"达到这个进度"的时点。这段距离就是落后了多少周, , 正是大家实际争论时使用的单位。
挣值管理,去掉术语外壳
挣值管理给这个差距一个数字。三个量,缩写比概念本身更吓人:
- PV(计划价值), , 按计划到现在应当完成的工作,按预算计价。
- EV(挣值), , 实际已完成的工作,按同一套预算计价。一项预算 10 万元、完成 40% 的任务,挣值就是 4 万元。它花了多少钱在这里是刻意不计的。
- AC(实际成本), , 真正花出去的钱。
由这三个量得到:
- SV = EV − PV, , 进度偏差。为负表示落后。
- CV = EV − AC, , 成本偏差。为负表示超支。
- SPI = EV ÷ PV, , 进度绩效指数,小于 1.0 表示落后。SPI 为 0.85 意味着每一元的计划只换来八毛五的进展。
- CPI = EV ÷ AC, , 成本绩效指数,小于 1.0 表示超支。
把这两件事分开,正是全部意义所在。一个项目完全可能预算无虞却严重延期,也可能按期推进却在大量烧钱,而一个混在一起的"完成百分比"会同时掩盖这两点。当成两个坐标轴来看,一共有四个可能待的位置。
一个算到底的例子
上海某科技公司 1800 平方米办公室装修改造,工期十周,完工预算(BAC)200 万元,支出节奏是装修工程典型的样子:开头慢,中段主要工种一起进场时很重,收尾在调试和整改中逐渐收窄。
每周计划支出,累加成计划价值:
| 周 | 本周计划 | 累计 PV |
|---|---|---|
| 1 | 8 万元 | 8 万元 |
| 2 | 12 万元 | 20 万元 |
| 3 | 20 万元 | 40 万元 |
| 4 | 28 万元 | 68 万元 |
| 5 | 32 万元 | 100 万元 |
| 6 | 32 万元 | 132 万元 |
| 7 | 26 万元 | 158 万元 |
| 8 | 18 万元 | 176 万元 |
| 9 | 14 万元 | 190 万元 |
| 10 | 10 万元 | 200 万元 |
五周的实际数。EV 是已完成部分按预算计的价值,AC 是它实际花掉的钱。
| 周 | 累计 PV | 累计 EV | 累计 AC |
|---|---|---|---|
| 1 | 8 万元 | 6 万元 | 7 万元 |
| 2 | 20 万元 | 17 万元 | 20 万元 |
| 3 | 40 万元 | 33 万元 | 38 万元 |
| 4 | 68 万元 | 55 万元 | 62 万元 |
| 5 | 100 万元 | 82 万元 | 94 万元 |
在第 5 周末读数:PV = 100 万元,EV = 82 万元,AC = 94 万元。
- SV = EV − PV = 82 − 100 = −18 万元,即按预算计价、本该完成而没有完成的那部分工作。
- SPI = EV ÷ PV = 82 ÷ 100 = 0.82。计划正在以假定速度的 82% 转化为实际进展。
- CV = EV − AC = 82 − 94 = −12 万元。这些活儿比它本身的价值多花了十二万。
- CPI = EV ÷ AC = 82 ÷ 94 = 0.87。每花出去一元,只买到八毛七的预算价值。
- 完成百分比 = EV ÷ BAC = 82 ÷ 200 = 41%,而计划应完成 50%。41% 听起来没什么问题,直到你知道这时候该有 50%。
- EAC = BAC ÷ CPI = 200 ÷ 0.8723 = 229.3 万元。若成本绩效保持不变,这个 200 万的工程会超出约 29.3 万元(VAC),还要再花 135.3 万元(ETC = EAC − AC)。
把横着读的那个数带到会上去。计划曲线是在什么时候达到 82 万元的?在第 4 周(68 万元)和第 5 周(100 万元)之间:82 比 68 多了 14 万,而第 5 周这一段增量是 32 万,14 ÷ 32 = 0.44。也就是说计划在第 4.4 周越过 82 万元, , 你落后 0.56 周,不到三个工作日。
"落后三天"和"SPI 0.82"说的是同一件事。比值看着吓人,是因为这里正是曲线最陡的一段,几天时间对应很大的价值量。两个数一起报,会议才不会跑偏:只听见 0.82 的人会反应过度,只听见"三天"的人则什么也不会做。
七个数字,以及每个数字被误读的固定方式
每一个都有一种标准的误读方式,而误读造成的破坏比不度量还大。
| 指标 | 算法 | 它回答什么 | 它怎样被读错 |
|---|---|---|---|
| PV | 计划工作的预算成本 | 到现在为止应该完成多少? | 取自当前日期而不是基准。当前日期吸收了每一次延误,于是 PV 跟着你一起走,偏差永远读作零。 |
| EV | BAC × 完成百分比 | 已完成的部分,按预算值多少? | 它只能和背后的进度上报一样诚实, , 也就是"完成 90% 挂了三周"那个老问题。 |
| AC | 已发生的实际成本 | 到现在花了多少? | 在结算单还没到之前读它。AC 天然滞后,早期让 CPI 好看,后期再加倍惩罚。 |
| SV | EV − PV | 我们欠下了多少工作量? | 被当成超支听。它以金额计量,说的却是进度。 |
| CV | EV − AC | 我们付出的是不是超过了工作本身的价值? | 被拿去和"已用预算"比较。脱离 EV,"我们用掉了 47% 的预算"什么也没说明。 |
| SPI | EV ÷ PV | 把计划转化为进展的速率 | 无论发生什么,临近收尾时它都会漂回 1.0, , 每个项目最终都会挣满它的 BAC。 |
| CPI | EV ÷ AC | 每花一元买到多少价值 | 在那些用进度反推 AC 的工具里,它恒等于 1.00。一个从没问过你花了多少钱的计算器给出的 CPI,是算术,不是数据。 |
还有一条,因为它让不少项目丢掉了完工日期:挣值按预算给一切加权,而关键路径完全不看预算。一项落在驱动链上、只要两天、几乎不花钱的审批,对 SPI 的影响微乎其微。你完全可能读到 1.05,同时确凿无疑地要延期。所以 S 曲线要和关键路径一起看,不能替代它。
为什么我们有时不显示 CPI
这一点值得挑明,因为多数免费的挣值计算器做法恰好相反。
实际成本是唯一无法从进度计划推导出来的输入,它必须来自你的账目。一个诱人的捷径是:假设完成 40% 的任务就消耗了 40% 的预算, , 一旦这么做,AC 在构造上就等于 EV,于是任何项目算出来的 CPI 都恰好是 1.00。这个数字看着很权威,实则对任何变化都没有反应,还会告诉一个预算早已失控的人一切正常。
所以在 gantts.app 里,只要你没有为任务填入真实的"已花费"金额,成本类指标就留空。进度类指标, , SV 和 SPI, , 照常可用,因为它们只需要日期和进度。缺一个数字是诚实的,给一个笃定的错数字不是。
出于同样的理由,今天之前的挣值曲线是重建出来的,而不是记录下来的:工具保存的是你当前的进度,而不是历次上报的历史。它在今天这一点上是精确的, , 数字正是在这里读取的, , 往前则是近似值。这一点写在面板上,而不是藏在脚注里。
没有预算也能画出曲线
多数计划根本不带成本数据,而一条非要有成本才能画的 S 曲线,就是一条没人会去画的 S 曲线。
如果所有任务都没有成本,gantts.app 就改用工作日工期作为权重, , 注意是工作日,不是自然日,也不是百分比,所以工作日历里排除的周末、清明、五一、国庆等法定节假日不会计入权重,而调休上班的那个周六会。形状完全一样,只是纵轴读作进度而不是金额, , 一条纯进度的 S 曲线。以后补上成本,同一个面板就变成价值曲线,别的什么都不用改。
有两个细节会改变数字。第一,只有叶子任务计入:摘要任务的成本本来就是下属任务的汇总,两边都算会让 BAC 按你大纲的层数被放大。第二,里程碑工期为零,因此对权重没有任何贡献, , 它们标记时点,不承载工作量。
不过有一件事比上面这些都重要:设置基准。没有基准,"计划"就只能指你当前的日期,而当前日期里早已包含了发生过的每一次延误。这样进度偏差会永远显示为零, , 一个非常令人安心、也完全没有用的答案。计划获批时执行一次"基准 ▸ 设置基准"即可。
面板会明说它用的是哪一个来源,所以你能分辨出真正的偏差,和"拿你自己的日期跟你自己的日期比"。
在这里怎么做出一条
- 建立或导入进度计划,把日期大致排对。可以先用✨ 粘贴生成甘特图把任务大纲贴进来,再点自动排程。
- 计划获批后打开基准,以当前计划设置基准。提示"基准已设置, , 之后的延误将以此计划为准进行跟踪"意味着"计划"的含义被冻结了。
- 可选:双击任务,在预算里填金额,让曲线以人民币而不是天数来读。
- 随着工作推进更新进度, , 挣值曲线正是由它构成的。请按做完的工作量填,不要按已过去的天数填。
- 可选:逐项填入已花费,以解锁 CPI、成本偏差、完工估算和完工尚需估算。
- 点击工具栏的 S 曲线(面板标题是"S 曲线, , 计划 vs 实际")。
- 看一眼面板底部的口径说明:它会告诉你权重是"按任务成本加权"还是"任务未设置成本,因此按工作日时长加权",以及计划价值是依据已保存的基准,还是只依据当前日期。计算方式里写着其余的算法。
- 最后勾上关键路径再看一遍图。SPI 说明整体价值挣得快不快,关键路径说明完工日期会不会动,两者要一起读。
全部在你的浏览器里运行。无需注册,无需上传,也不用手工维护一个电子表格模板。
常见问题
项目管理中的 S 曲线是什么?
把累计计划工作量对时间作出的曲线图。之所以呈 S 形,是因为项目开头慢、中段快、结尾又放缓。与实际进度对照后,两条曲线之间的竖直距离就是提前或落后的程度。
S 曲线和挣值管理有什么区别?
S 曲线是图,挣值管理是图背后的算术。挣值管理用 SV、SPI、CV、CPI 给差距一个数字,曲线则展示这个差距的形态和走向。
SPI 为 0.9 是什么意思?
你只挣到了计划中此时应有价值的 90%,也就是大约落后一成。小于 1.0 是落后,大于 1.0 是提前。
一定要有成本数据才能用 S 曲线吗?
不需要。没有成本时,任务按工作日工期加权,得到的是进度曲线, , 形状一样,以百分比来读。填入成本后它才变成价值曲线,并解锁成本类指标。
为什么 CPI 不显示?
因为没有填入实际成本。CPI 需要真实支出;用完成百分比去推导,会让所有项目的 CPI 都恰好等于 1.00。给任务填上"已花费",它就会出现。
可以用 Excel 画 S 曲线吗?
可以,多数人也确实这么做, , 代价是手工维护一列累计值和一张图表,日期一变就得重做一遍。直接从进度计划生成,就省掉了这一步。
相关模板
延伸阅读
本文也提供英文版本。