完工日期已经确定,计划却比它晚了三周。有三种方法可以让计划重回正轨:快速跟进(fast tracking)压缩顺序,工作量分布(contouring)调整负荷,赶工(crashing)用预算换时间。本文说明这三种方法的区别、适用场景,以及在 Merlin Project 中的具体做法。
任何进度计划最终都会承受压力。供应商延期、审批拖延、展会提前。最常见的反应是压缩工期,直到结果看起来合适为止。这不是计划,而是纸面上的一厢情愿。
针对这种情况,项目管理有三种清晰的方法,各自的切入点不同。快速跟进 改变顺序:活动并行推进,而不是依次进行。赶工 通过追加资源缩短单个活动的工期。工作量分布 改变活动内部的工作分配,让负荷落在真正发生的位置。快速跟进以风险为代价,赶工以资金为代价,工作量分布只需要您更认真地审视自己的计划。
什么是快速跟进
快速跟进让原本依次安排的活动并行推进,从而缩短项目工期。后续活动在前置活动完成之前就开始。工作量保持不变,只是计划排布得更紧凑。
以产品开发为例:概念设计 4 周,实施 6 周,测试 4 周。依次安排共 14 周。如果核心需求确定后即开始实施,并在第一批模块完成后开始测试,两处衔接各重叠 2 周。14 周就变成 10 周。
快速跟进:同样的工作,排布更紧凑
包含三个活动的产品发布,原计划 14 周
依次安排 14 周
采用快速跟进 10 周
项目周次
快速跟进何时有效,何时无效
能否重叠,取决于活动之间 依赖项 的类型。
强制性依赖源于事物本身。混凝土必须养护后才能进行下一层。合同必须签署后才能下单。这种顺序无法并行,强行重叠只会带来废品或责任问题。
选择性依赖来自习惯、谨慎或内部约定,例如「概念方案批准后才开始」。从专业角度看,开始时间往往可以大幅提前。快速跟进正是作用于此。
实务判断标准是:前置活动的哪一部分必须稳定下来,后续活动才能有意义地开始?把这部分提前,其余部分重叠。如果无法回答这个问题,该依赖多半属于强制性依赖,快速跟进就不是合适的工具。
同样重要的是:只在 关键路径 上重叠。带有 浮动时间 的活动无论怎样提前,项目完工日期都不会改变。此外,每次重叠之后关键路径都可能转移到另一条链上,这决定了下一步该做什么。
什么是赶工
第二个手段作用于同一位置,但方式不同:赶工 通过追加资源缩短单个活动的工期,例如增加人手、加班、周末作业或外包。顺序保持不变,成本上升。快速跟进以风险支付,赶工以预算支付。
先加速哪个活动,由成本斜率(cost slope)给出答案。它把增加的成本与节省的时间对应起来:
(赶工成本 - 正常成本)÷(正常工期 - 赶工工期)
如果把一个活动缩短两周需要 30,000 元,另一个活动缩短一周需要 12,000 元,那么后者以每周 12,000 元成为更划算的起点,尽管它在绝对值上节省的时间更少。按这个顺序加速,始终只在关键路径上进行,并在每一步之后重新计算。
不过赶工也有限度,而且不在财务层面:新增人员需要熟悉工作,并带来沟通协调的成本。对于本已延期的项目,增加人手甚至可能让完工进一步推后,这就是布鲁克斯定律。可拆分且协调需求低的工作适合赶工,概念性工作则几乎不适合。
阿姆达尔定律:并行化的上限
追加资源究竟能带来多少加速,取决于其中必须串行完成的部分占多大比例。吉恩·阿姆达尔(Gene Amdahl)在 1967 年针对处理器提出了这一定律,用在人身上,结构完全相同:
S(n) = 1 / (s + p / n)
其中 s 是串行部分的比例,p 是可并行部分的比例,且 s + p = 1;n 是资源数量,S(n) 是相对于单个资源的加速比。n 越大,p/n 越小,加速比趋近于 1/s,且不会超过这个上限。
一个 12 人天的活动,其中概念、审批和验收共 3 人天必须串行,即 s = 0.25。两个人时 S = 1 / (0.25 + 0.75 / 2) = 1.6,12 天只会缩短到 7.5 天,而不是期望的 6 天。五个人时是 4.8 天,无论加多少人也不会低于 3 天。因此在赶工之前,请先确认活动中究竟哪一部分真正可以拆分。
什么是工作量分布
工作量分布描述的是资源的工作如何分配到活动工期之内。计划工具默认按平均分配计算:40 小时分到 10 天,就是每天 4 小时。但实际上几乎没有活动是这样推进的。
概念阶段开头投入密集,随后逐渐减少。验收阶段在后期才真正开始,此时要处理缺陷清单。展会搭建有两个高峰,一个在搭建,一个在拆除。分布曲线反映的正是实际的投入节奏。
四种工作分布,同样的 40 小时
一个跨 10 个工作日的活动,每天最多 8 小时
平均
没有起步与收尾差异的常规工作
峰值:每天 4 小时
前重型
分析、概念设计、环境准备
峰值:第 1 天 8 小时
后重型
测试、验收、缺陷处理
峰值:第 10 天 8 小时
钟形
施工段、需要预热的活动推广
峰值:中段 7 小时
平均分配为什么代价高
「40 小时分到 10 天」这个算法看似无害,却同时掩盖了两个问题。
第一,过载被隐藏。同一个人的两个活动各占每天 4 小时,合计为 100% 利用率,计划上看不出异常。但如果两个活动的实际高峰落在同一周,那一周每天需要 16 小时,而其他几周几乎空闲。平均值看起来整齐,冲突要到执行阶段才暴露。
第二,空闲产能消失。某个资源在第二周每天只占用 1 小时,在平均分配下仍被算作半负荷。这部分实际存在的余量无法用于并行项目。工作量分布把它重新纳入计划。
正因如此,工作量分布是有意义的快速跟进的前提。在不了解实际投入高峰的情况下重叠活动,等于让两个都需要同一个人 100% 投入的活动同时进行。计划看起来更短,团队仍然只能依次工作。
三种方法对比
三种方法,一个目标,代价却完全不同。下表说明各自的适用场景与代价。
| 快速跟进 | 赶工 | 工作量分布 | |
|---|---|---|---|
| 其他名称 | 并行化、活动重叠 | 追加资源压缩工期 | 工作分布曲线、负荷曲线 |
| 切入点 | 活动的顺序 | 单个活动的工期 | 工作的分配 |
| 效果 | 缩短项目工期 | 缩短项目工期 | 贴近实际的利用率 |
| 成本 | 无直接成本 | 人工与物料成本上升 | 无 |
| 风险 | 返工、质量下降 | 协调损耗、熟悉成本 | 高峰估计失误 |
| 前提 | 属于选择性依赖 | 工作可拆分、可加速 | 了解工作的推进节奏 |
| 优先考虑的场景 | 完工日期固定、时间紧张 | 有可用预算 | 任何产能计划 |
实务中的顺序是:先做工作量分布,因为它不产生费用,而且是后续一切判断的基础。其次是快速跟进,因为它不需要预算。赶工放在最后,因为它是唯一直接花钱的方法。
在 Merlin Project 中怎么做
顺序决定结果:先并行、后检查利用率的做法,只是把问题从时间轴移到了资源上。下面的步骤遵循正确顺序,并说明每一步在 Merlin Project 中如何操作。便利之处在于,顺序逻辑与利用率位于同一个文件中:您在甘特图中拖出一个重叠,切换一个视图就能看到它对团队意味着什么。
1. 确定关键路径
缩短只在 关键路径 上才有效果。投入在带 浮动时间 活动上的每一小时,都只是消耗精力,完工日期不会移动。而且关键路径会随每次压缩而转移,因此这一步不是一次性的准备工作,而是此后每一步之后的复核。
在 Merlin Project 中,工具栏上的闪电图标用于打开和关闭关键路径显示。甘特图会立即呈现哪条链决定完工日期、哪些活动还有余量。要查看单条依赖项的细节,可使用「预计的关键」和「计划的关键」两列。
点击闪电图标即可
工具栏中的闪电图标用于开关关键路径显示。启用后,Merlin Project 会把决定完工日期的活动与依赖项标为红色:示例中这条链从手绘草图经方案设计、详细设计一直延伸到主体施工。保持蓝色的部分带有浮动时间,在那里压缩只会消耗精力,完工日期不会改变。横道、依赖项与浮动时间之间的关系,可参见 甘特图指南。
2. 如实反映工作分布
在重叠任何内容之前,需要知道相关活动的投入实际发生在什么时候。这正是工作量分布的作用。如果按平均值计划,之后就无法判断某个重叠是否站得住,还是两个高峰会撞在一起。
Merlin Project 没有为此提供独立字段。活动始终把工作平均分配到工期内,调整利用率也不会改变这一点,因为利用率作用于整个分派,而不是单独的某一天。真正的抓手是「计划的工作」和「计划工期」这两个值:工作量是投入,工期是完成它的时间窗口。工作量 40 小时、工期 10 天,就是每天 4 小时。
不均匀的分布由此产生:把活动拆分为若干区段,为每个区段设定各自的数值。同一个「概念设计」活动(40 小时、10 个工作日)在四种形态下如下所示:
| 分布形态 | 按工作量与工期拆分的子活动 | 每天的结果 |
|---|---|---|
| 平均 | 一个活动:工作量 40 小时、工期 10 天 | 每天 4 小时 |
| 前重型 | 24 小时 / 3 天,然后 10 小时 / 3 天,然后 6 小时 / 4 天 | 8 小时、3.3 小时、1.5 小时 |
| 后重型 | 6 小时 / 4 天,然后 10 小时 / 3 天,然后 24 小时 / 3 天 | 1.5 小时、3.3 小时、8 小时 |
| 钟形 | 6 小时 / 3 天,然后 28 小时 / 4 天,然后 6 小时 / 3 天 | 2 小时、7 小时、2 小时 |
把各区段以「结束到开始」相连并归入一个群组,计划仍然易读,群组会把工作量与工期重新汇总为原始活动的数值。这项工作并非处处值得:它适用于关键路径上的长活动和资源紧张的位置,也就是您接下来要重叠的位置。至于周期性的缺勤,则不属于分布曲线,而应在 资源日历 中处理。
3. 在高峰错开的位置重叠
到这一步才开始重叠,而且要有针对性:前重型的前置活动与后重型的后续活动可以大幅重叠,因为一方平缓的收尾正对另一方平缓的开头。反过来,高峰会正好在重叠区间相撞,时间收益随即变成过载。
在 Merlin Project 中,快速跟进不是独立功能,而是依赖项的一个属性。点击两个活动之间的连接线,会打开依赖项检查器,其中的「超前 / 滞后」字段也接受负值。符号决定方向:在「结束到开始」依赖项中,「超前 / 滞后」2 天会把后续活动往后推,「超前 / 滞后」-2 天则把它往前拉。后续活动于是在前置活动结束前 2 天开始,这 2 天就是重叠。如果两个活动原则上应同时开始,则把类型从「结束到开始」改为「开始到开始」。
重要的是把重叠记录为「超前 / 滞后」,而不是固定的开始日期。固定日期会切断依赖关系:前置活动一旦移动,Merlin Project 就不再重新计算后续活动。
回到开头的例子:实施与测试重叠 2 周。如果这段时间测试本来也只是在搭建测试环境,那么重叠几乎没有代价。但如果测试的起步高峰撞上实施的收尾高峰,而两者又依赖同一个人,那么节省的 4 周就只是纸面数字。属于哪一种情况,下一步就能看出来。
快速跟进产生于「超前 / 滞后」字段
快速跟进通过已有依赖项的「超前 / 滞后」来实现。在其中输入负值,例如 -2 天,在「结束到开始」依赖项中后续活动就会提前 2 天,在前置活动完成之前开始。正值则相反,会作为等待时间把它往后推。依赖项的创建与调整,可参见 添加上下文与逻辑 课程。
4. 重新核算并平衡利用率
如果重叠之后计划出现过载,那么节省的时间并不真实,只是从时间轴转移到了资源上。团队仍然依次工作,只是计划上的呈现变了。
检验的方法是工作分布视图:红色的日期表示过载。从哪个数值开始标红,可在设置的利用率部分通过过载与低载阈值来设定。若过载仍未消除,可使用 资源平衡,既可用于整个项目,也可只用于选定范围。请同时启用把平衡限制在浮动时间之内的选项,否则平衡会通过把您刚刚提前的完工日期再次后移来消除过载。
分派视图与工作分布
「分派」视图中的「工作分布」显示每个资源在每一天承担多少工作。绿色表示在合理范围内,红色表示过载;示例中可以一眼看出哪些角色在哪些日期被安排超出了产能。每次重叠之后,这是最快的检验方式,用来判断节省的时间是真实的,还是只在甘特图上好看。资源的创建与分派,可参见 设置资源 课程。
5. 如果仍然不够:追加资源
如果时间依然不够,就只剩赶工。在 Merlin Project 中,这是三步里最简单的一步:从资源来源把第二个资源拖到活动上,两者分担工作,工期相应缩短。一个人需要 5 天完成的 40 小时工作,两个人只需 2.5 天。
有一个前提:该活动必须按工作量计划,也就是工期字段保持为空。如果那里填了固定工期,横道长度不变,只有每人的利用率下降,与目标恰好相反。多个分派是分担工作还是各自承担全部工作量,可在设置中通过分担工作的选项控制。
不要只相信算式:工期减半的前提是工作确实可以拆分。协调与熟悉工作的时间建议另行预留,而不是直接采信减半后的横道。
6. 明确剩余风险并保全结果
每一次重叠都是对前置活动稳定性的一次押注。请把「一旦变更需要重做什么、代价多少」写进计划,而不是记在脑子里。
为此,在输入第一个重叠之前,先在原计划上设置基线。之后,计划与实际对比随时都能显示压缩带来了什么、又在哪里反噬。可能出现的返工,作为风险附加到发生重叠的活动上,并注明发生概率与评估。
作为灰色影子的基线
设置基线后,Merlin Project 会把计划值以灰色横道显示在当前横道之后。哪个活动被提前、哪个尽管压缩仍然后移,一目了然。基线的设置与评估,可参见 计划与实际对比 课程。返工风险可作为 风险类型的附件 直接挂在发生重叠的活动上,并附上发生概率与评估。自版本 9 起,对比也可以回溯进行:动态基线通过项目设置中的参考日期,重建任意历史时点的计划状态,即使当时没有人设置过基线。详见关于 Merlin Project 9 的文章。
最佳实践
- 只在关键路径上压缩,并在每一步之后重新计算。 缩短一条链之后,另一条链往往会变成关键路径。
- 只重叠选择性依赖。 无视强制性依赖不会带来更快的项目,只会带来废品。
- 定义交接点,而不是「完成」。 「接口稳定后开始后续活动」是可执行的条件,「做完之后」不是。
- 相信时间收益之前先核对资源。 甘特图上的两条并行横道,只有在两个人能同时投入时才真正并行。
- 兼职安排放进日历,而不是分布曲线。 每周二不在的同事属于资源日历,而不是靠手工拼出来的工作分布。
- 把返工计入计划,而不是在讨论中抹掉。 重叠两周,就应当在计划中为一周的修正工作量留出风险。
- 与团队沟通新的工作方式。 快速跟进会让交接变得临时,也让变更更可能发生。事先不说明,成果被重新打开时就会产生抵触。何况真正了解实际负荷曲线的,是执行该活动的人,而不是计划工具。
- 把压缩当作例外处理。 快速跟进是针对具体交期状况的应对手段,而不是一种计划风格。若从一开始就把每份计划都重叠到极限,真正紧张时就没有余手可用。
结语
三种方法作用于不同位置:快速跟进作用于顺序,赶工作用于单个活动的工期,工作量分布作用于利用率。实务中从工作量分布开始,因为只有贴近实际的工作分布才能显示哪种重叠站得住。随后是快速跟进,最后是赶工,用于有预算但时间仍然不够的情况。
关键在于顺序逻辑与利用率处在同一份计划中。分散在两个工具里,任何压缩都只是猜测。在 Merlin Project 中,您在甘特图里拖出重叠,切换一个视图就能在工作分布中读出结果,在 Mac 和 iPad 上均可使用,没有网络也能工作。您可以免费试用 30 天。
如果还想知道新的完工日期究竟有多大把握,可以参阅 项目管理中的蒙特卡洛模拟 一文。
如果您对这篇博客文章有任何疑问或希望参与讨论,欢迎您在我们的论坛中发帖。
常见问题
快速跟进与赶工有什么区别?
快速跟进让原本依次安排的活动并行推进。它不需要额外预算,但会提高返工风险。赶工是给关键路径上的活动追加资源,顺序保持不变,成本上升。
什么情况下不应使用快速跟进?
面对源于事物本身的强制性依赖时,例如养护时间、法定期限或必需的审批。对带浮动时间的活动同样没有意义,因为项目完工日期不会移动。
项目管理中的工作量分布是什么?
工作量分布描述资源的工作如何分配到活动工期之内。它不是把工作在所有日期上取平均,而是反映实际的投入节奏,例如偏向开头、偏向结尾或集中在中段。
常见的分布形态有哪些?
常见的有平均分配、投入偏前的前重型、投入偏后的后重型、中段出现峰值的钟形,以及适用于搭建与拆除类活动的双峰型。
快速跟进能节省多少时间?
取决于选择性依赖所占的比例。实务中,重叠幅度通常为活动工期的 20% 到 40%。比具体数字更重要的是,每次重叠之后都要复核关键路径,因为往往会有另一条链变成关键路径。
Merlin Project 能自动套用工作分布曲线吗?
不能。Merlin Project 目前既没有工作分布字段,也没有前重型或钟形之类的预设曲线。活动会把工作平均分配到工期内;利用率作用于整个分派,而不是单独的某一天。分布曲线需要通过拆分为多个子活动来表现,每个子活动设定各自的工作量与工期。结果可在「分派」视图的「工作分布」中按天查看。