项目管理中的快速跟进、赶工与工作量分布

完工日期已经确定,计划却比它晚了三周。有三种方法可以让计划重回正轨:快速跟进(fast tracking)压缩顺序,工作量分布(contouring)调整负荷,赶工(crashing)用预算换时间。本文说明这三种方法的区别、适用场景,以及在 Merlin Project 中的具体做法。

任何进度计划最终都会承受压力。供应商延期、审批拖延、展会提前。最常见的反应是压缩工期,直到结果看起来合适为止。这不是计划,而是纸面上的一厢情愿。

针对这种情况,项目管理有三种清晰的方法,各自的切入点不同。快速跟进 改变顺序:活动并行推进,而不是依次进行。赶工 通过追加资源缩短单个活动的工期。工作量分布 改变活动内部的工作分配,让负荷落在真正发生的位置。快速跟进以风险为代价,赶工以资金为代价,工作量分布只需要您更认真地审视自己的计划。

什么是快速跟进

快速跟进让原本依次安排的活动并行推进,从而缩短项目工期。后续活动在前置活动完成之前就开始。工作量保持不变,只是计划排布得更紧凑。

以产品开发为例:概念设计 4 周,实施 6 周,测试 4 周。依次安排共 14 周。如果核心需求确定后即开始实施,并在第一批模块完成后开始测试,两处衔接各重叠 2 周。14 周就变成 10 周。

快速跟进:同样的工作,排布更紧凑

包含三个活动的产品发布,原计划 14 周

依次安排 14 周

概念设计
实施
测试

采用快速跟进 10 周

并行 2 周
并行 2 周
提前 4 周完成
概念设计
实施
测试
02468101214

项目周次

活动 带返工风险的重叠 节省的时间
快速跟进改变的不是工作量,而是顺序。时间收益正是产生于重叠区间,风险也集中在同一区间:后续活动基于尚未完成的前置成果所做的部分,可能变成返工。

快速跟进何时有效,何时无效

能否重叠,取决于活动之间 依赖项 的类型。

强制性依赖源于事物本身。混凝土必须养护后才能进行下一层。合同必须签署后才能下单。这种顺序无法并行,强行重叠只会带来废品或责任问题。

选择性依赖来自习惯、谨慎或内部约定,例如「概念方案批准后才开始」。从专业角度看,开始时间往往可以大幅提前。快速跟进正是作用于此。

实务判断标准是:前置活动的哪一部分必须稳定下来,后续活动才能有意义地开始?把这部分提前,其余部分重叠。如果无法回答这个问题,该依赖多半属于强制性依赖,快速跟进就不是合适的工具。

同样重要的是:只在 关键路径 上重叠。带有 浮动时间 的活动无论怎样提前,项目完工日期都不会改变。此外,每次重叠之后关键路径都可能转移到另一条链上,这决定了下一步该做什么。

什么是赶工

第二个手段作用于同一位置,但方式不同:赶工 通过追加资源缩短单个活动的工期,例如增加人手、加班、周末作业或外包。顺序保持不变,成本上升。快速跟进以风险支付,赶工以预算支付。

先加速哪个活动,由成本斜率(cost slope)给出答案。它把增加的成本与节省的时间对应起来:

(赶工成本 - 正常成本)÷(正常工期 - 赶工工期)

如果把一个活动缩短两周需要 30,000 元,另一个活动缩短一周需要 12,000 元,那么后者以每周 12,000 元成为更划算的起点,尽管它在绝对值上节省的时间更少。按这个顺序加速,始终只在关键路径上进行,并在每一步之后重新计算。

不过赶工也有限度,而且不在财务层面:新增人员需要熟悉工作,并带来沟通协调的成本。对于本已延期的项目,增加人手甚至可能让完工进一步推后,这就是布鲁克斯定律。可拆分且协调需求低的工作适合赶工,概念性工作则几乎不适合。

阿姆达尔定律:并行化的上限

追加资源究竟能带来多少加速,取决于其中必须串行完成的部分占多大比例。吉恩·阿姆达尔(Gene Amdahl)在 1967 年针对处理器提出了这一定律,用在人身上,结构完全相同:

S(n) = 1 / (s + p / n)

其中 s 是串行部分的比例,p 是可并行部分的比例,且 s + p = 1n 是资源数量,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 天。只有平均分配显示为恒定的 50% 利用率。另外三种则显示出产能真正被占用的位置,以及哪里还留有承接其他项目的余量。

平均分配为什么代价高

「40 小时分到 10 天」这个算法看似无害,却同时掩盖了两个问题。

第一,过载被隐藏。同一个人的两个活动各占每天 4 小时,合计为 100% 利用率,计划上看不出异常。但如果两个活动的实际高峰落在同一周,那一周每天需要 16 小时,而其他几周几乎空闲。平均值看起来整齐,冲突要到执行阶段才暴露。

第二,空闲产能消失。某个资源在第二周每天只占用 1 小时,在平均分配下仍被算作半负荷。这部分实际存在的余量无法用于并行项目。工作量分布把它重新纳入计划。

正因如此,工作量分布是有意义的快速跟进的前提。在不了解实际投入高峰的情况下重叠活动,等于让两个都需要同一个人 100% 投入的活动同时进行。计划看起来更短,团队仍然只能依次工作。

三种方法对比

三种方法,一个目标,代价却完全不同。下表说明各自的适用场景与代价。

快速跟进 赶工 工作量分布
其他名称 并行化、活动重叠 追加资源压缩工期 工作分布曲线、负荷曲线
切入点 活动的顺序 单个活动的工期 工作的分配
效果 缩短项目工期 缩短项目工期 贴近实际的利用率
成本 无直接成本 人工与物料成本上升
风险 返工、质量下降 协调损耗、熟悉成本 高峰估计失误
前提 属于选择性依赖 工作可拆分、可加速 了解工作的推进节奏
优先考虑的场景 完工日期固定、时间紧张 有可用预算 任何产能计划

实务中的顺序是:先做工作量分布,因为它不产生费用,而且是后续一切判断的基础。其次是快速跟进,因为它不需要预算。赶工放在最后,因为它是唯一直接花钱的方法。

在 Merlin Project 中怎么做

顺序决定结果:先并行、后检查利用率的做法,只是把问题从时间轴移到了资源上。下面的步骤遵循正确顺序,并说明每一步在 Merlin Project 中如何操作。便利之处在于,顺序逻辑与利用率位于同一个文件中:您在甘特图中拖出一个重叠,切换一个视图就能看到它对团队意味着什么。

1. 确定关键路径

缩短只在 关键路径 上才有效果。投入在带 浮动时间 活动上的每一小时,都只是消耗精力,完工日期不会移动。而且关键路径会随每次压缩而转移,因此这一步不是一次性的准备工作,而是此后每一步之后的复核。

在 Merlin Project 中,工具栏上的闪电图标用于打开和关闭关键路径显示。甘特图会立即呈现哪条链决定完工日期、哪些活动还有余量。要查看单条依赖项的细节,可使用「预计的关键」和「计划的关键」两列。

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 周就只是纸面数字。属于哪一种情况,下一步就能看出来。

Merlin Project 的依赖项检查器,显示前置活动、后续活动、依赖类型和「超前 / 滞后」字段

快速跟进产生于「超前 / 滞后」字段

快速跟进通过已有依赖项的「超前 / 滞后」来实现。在其中输入负值,例如 -2 天,在「结束到开始」依赖项中后续活动就会提前 2 天,在前置活动完成之前开始。正值则相反,会作为等待时间把它往后推。依赖项的创建与调整,可参见 添加上下文与逻辑 课程。

4. 重新核算并平衡利用率

如果重叠之后计划出现过载,那么节省的时间并不真实,只是从时间轴转移到了资源上。团队仍然依次工作,只是计划上的呈现变了。

检验的方法是工作分布视图:红色的日期表示过载。从哪个数值开始标红,可在设置的利用率部分通过过载与低载阈值来设定。若过载仍未消除,可使用 资源平衡,既可用于整个项目,也可只用于选定范围。请同时启用把平衡限制在浮动时间之内的选项,否则平衡会通过把您刚刚提前的完工日期再次后移来消除过载。

Merlin Project 的分派视图与工作分布,过载的日期以红色标记

分派视图与工作分布

「分派」视图中的「工作分布」显示每个资源在每一天承担多少工作。绿色表示在合理范围内,红色表示过载;示例中可以一眼看出哪些角色在哪些日期被安排超出了产能。每次重叠之后,这是最快的检验方式,用来判断节省的时间是真实的,还是只在甘特图上好看。资源的创建与分派,可参见 设置资源 课程。

5. 如果仍然不够:追加资源

如果时间依然不够,就只剩赶工。在 Merlin Project 中,这是三步里最简单的一步:从资源来源把第二个资源拖到活动上,两者分担工作,工期相应缩短。一个人需要 5 天完成的 40 小时工作,两个人只需 2.5 天。

有一个前提:该活动必须按工作量计划,也就是工期字段保持为空。如果那里填了固定工期,横道长度不变,只有每人的利用率下降,与目标恰好相反。多个分派是分担工作还是各自承担全部工作量,可在设置中通过分担工作的选项控制。

不要只相信算式:工期减半的前提是工作确实可以拆分。协调与熟悉工作的时间建议另行预留,而不是直接采信减半后的横道。

6. 明确剩余风险并保全结果

每一次重叠都是对前置活动稳定性的一次押注。请把「一旦变更需要重做什么、代价多少」写进计划,而不是记在脑子里。

为此,在输入第一个重叠之前,先在原计划上设置基线。之后,计划与实际对比随时都能显示压缩带来了什么、又在哪里反噬。可能出现的返工,作为风险附加到发生重叠的活动上,并注明发生概率与评估。

Merlin Project 的甘特横道,当前活动后方显示灰色的基线横道

作为灰色影子的基线

设置基线后,Merlin Project 会把计划值以灰色横道显示在当前横道之后。哪个活动被提前、哪个尽管压缩仍然后移,一目了然。基线的设置与评估,可参见 计划与实际对比 课程。返工风险可作为 风险类型的附件 直接挂在发生重叠的活动上,并附上发生概率与评估。自版本 9 起,对比也可以回溯进行:动态基线通过项目设置中的参考日期,重建任意历史时点的计划状态,即使当时没有人设置过基线。详见关于 Merlin Project 9 的文章

最佳实践

  • 只在关键路径上压缩,并在每一步之后重新计算。 缩短一条链之后,另一条链往往会变成关键路径。
  • 只重叠选择性依赖。 无视强制性依赖不会带来更快的项目,只会带来废品。
  • 定义交接点,而不是「完成」。 「接口稳定后开始后续活动」是可执行的条件,「做完之后」不是。
  • 相信时间收益之前先核对资源。 甘特图上的两条并行横道,只有在两个人能同时投入时才真正并行。
  • 兼职安排放进日历,而不是分布曲线。 每周二不在的同事属于资源日历,而不是靠手工拼出来的工作分布。
  • 把返工计入计划,而不是在讨论中抹掉。 重叠两周,就应当在计划中为一周的修正工作量留出风险。
  • 与团队沟通新的工作方式。 快速跟进会让交接变得临时,也让变更更可能发生。事先不说明,成果被重新打开时就会产生抵触。何况真正了解实际负荷曲线的,是执行该活动的人,而不是计划工具。
  • 把压缩当作例外处理。 快速跟进是针对具体交期状况的应对手段,而不是一种计划风格。若从一开始就把每份计划都重叠到极限,真正紧张时就没有余手可用。

结语

三种方法作用于不同位置:快速跟进作用于顺序,赶工作用于单个活动的工期,工作量分布作用于利用率。实务中从工作量分布开始,因为只有贴近实际的工作分布才能显示哪种重叠站得住。随后是快速跟进,最后是赶工,用于有预算但时间仍然不够的情况。

关键在于顺序逻辑与利用率处在同一份计划中。分散在两个工具里,任何压缩都只是猜测。在 Merlin Project 中,您在甘特图里拖出重叠,切换一个视图就能在工作分布中读出结果,在 Mac 和 iPad 上均可使用,没有网络也能工作。您可以免费试用 30 天。

如果还想知道新的完工日期究竟有多大把握,可以参阅 项目管理中的蒙特卡洛模拟 一文。

如果您对这篇博客文章有任何疑问或希望参与讨论,欢迎您在我们的论坛中发帖

常见问题

快速跟进与赶工有什么区别?

快速跟进让原本依次安排的活动并行推进。它不需要额外预算,但会提高返工风险。赶工是给关键路径上的活动追加资源,顺序保持不变,成本上升。

什么情况下不应使用快速跟进?

面对源于事物本身的强制性依赖时,例如养护时间、法定期限或必需的审批。对带浮动时间的活动同样没有意义,因为项目完工日期不会移动。

项目管理中的工作量分布是什么?

工作量分布描述资源的工作如何分配到活动工期之内。它不是把工作在所有日期上取平均,而是反映实际的投入节奏,例如偏向开头、偏向结尾或集中在中段。

常见的分布形态有哪些?

常见的有平均分配、投入偏前的前重型、投入偏后的后重型、中段出现峰值的钟形,以及适用于搭建与拆除类活动的双峰型。

快速跟进能节省多少时间?

取决于选择性依赖所占的比例。实务中,重叠幅度通常为活动工期的 20% 到 40%。比具体数字更重要的是,每次重叠之后都要复核关键路径,因为往往会有另一条链变成关键路径。

Merlin Project 能自动套用工作分布曲线吗?

不能。Merlin Project 目前既没有工作分布字段,也没有前重型或钟形之类的预设曲线。活动会把工作平均分配到工期内;利用率作用于整个分派,而不是单独的某一天。分布曲线需要通过拆分为多个子活动来表现,每个子活动设定各自的工作量与工期。结果可在「分派」视图的「工作分布」中按天查看。

规划项目, 让计划真正奏效。

一款管理项目计划的应用,在所有 Apple 设备上原生运行。