排期表改到第 11 版的时候,我才承认问题不在任务本身。那是一个 120 人规模的私有化部署版本,研发、测试、实施、运维四条线并行,我在项目管理平台里画了 340 多条任务、将近 500 条依赖关系,其中九成是 FS。上线时间一推再推,可每条任务的估时都没错,每个负责人都按时交付了自己那份活。真正出问题的是任务之间那些没人看的连线。这篇任务依赖 FS 教程,我想讲的不是"完成才能开始"这句谁都会背的定义,而是一套用交付物、资源和可逆性反复验证依赖关系的判断方法,以及我在中大型项目里踩过的坑。
一、先说结论:FS 依赖管的是"交付物移交",不是"时间先后"
如果把 FS 理解成"任务 A 做完,任务 B 才能开始",你大概率会把顺序关系和时间关系混为一谈。这两件事在小型项目里碰巧重合,在百人以上的项目里几乎必然分叉。
1. FS 依赖真正的四个判定要素
我在内部培训里一直强调,一条合法的 FS 依赖必须同时满足四个条件:前序任务有明确的交付物、后序任务确实消费这个交付物、中间没有替代路径、且这条约束不是人为强加的。四个条件缺一个,这条 FS 就不该存在。
举个最常见的反例。"需求评审完成 → 开发开始",听起来天经地义,但如果后端可以按接口文档先动、前端可以按原型先做,真正阻塞开发的只是接口契约而不是整场评审,那么正确的依赖应该是"接口契约冻结 FS 开发启动",而不是整场评审。前者把阻塞面从 20 人缩到 3 人,后者让 20 个人排队。
2. 我用来判断一条 FS 是否设对的三个信号
做过十几个中大型项目之后,我形成了三个快速自检信号,比看甘特图快得多。
- 信号一:这条依赖的"上游"是不是一个会议或一份文档? 如果是会议,八成设错了,因为会议本身不产出可交付物。
- 信号二:如果把这条依赖删掉,后序任务会在多久之后暴露问题? 如果答案是"三天以后才知道",说明这条 FS 挡不住真正的风险,只是挡了人。
- 信号三:这条依赖链上有没有任何一条是被"大家都这么设"带进来的? 有的话它大概率是冗余依赖。
这三个信号不解决全部问题,但能在五分钟内筛掉排期表里三成左右的伪依赖。
3. 为什么我说大部分排期问题不在任务本身
我复盘过自己带过的 6 个中大型项目,把延期原因归成四类:任务估时偏差、依赖关系设置错误、资源冲突、需求中途变更。结果让我意外的是,依赖设置错误贡献的延期天数排在第二位,仅次于需求变更,但它是四类里唯一"改起来几乎零成本"的一类。
估时偏差要靠经验积累,需求变更要靠流程治理,资源冲突要靠组织调整,只有依赖错误是你今天下午就能动手改的。这也是我坚持把 FS 依赖治理当成项目启动前必做动作的原因。

二、真实场景复盘:一条 FS 线怎么把两周迭代拖成五周
讲方法之前,先讲一次让我记忆深刻的事故。它足够典型,几乎包含了 FS 依赖误用的所有元素:交付物模糊、跨团队、不可逆、且被当成沟通工具使用。
1. 案例背景:一个 120 人团队的私有化部署版本
项目是给一家制造业客户交付私有化部署版本,涉及数据库 Schema 调整、权限模型重构、数据迁移工具、以及现场实施方的部署验证。团队规模 120 人出头,研发、测试、实施三方协作,客户现场有交付时间窗,错过就要等下一个季度。
我在项目管理平台里为这个版本建了 340 多条任务,依赖关系接近 500 条。事后统计,其中 87% 是 FS,SS 和 FF 加起来不到 13%,SF 一条都没有。这个比例本身就是一个危险信号。
2. 时间线还原:第 3 天到第 27 天
我把关键链路还原成了一条时间线,你们可以感受一下一条错误的 FS 是怎么发酵的。
- 第 3 天:数据库 Schema 冻结任务的负责人请假,任务状态仍是"进行中",没有人调整依赖。
- 第 5 天:下游"建表脚本产出"因为 FS 依赖没解除,处于"未开始",负责人手上没有别的活,空闲两天。
- 第 8 天:建表脚本终于开始,但 Schema 冻结其实在第 6 天就已经实际完成,只是状态没更新。这两天纯属白等。
- 第 14 天:数据迁移工具的开发被"权限模型重构 FS 迁移工具开发"挡住,而权限模型重构的实际必要交付物只有角色映射表,早在第 11 天就交付了。
- 第 21 天:测试环境搭建被"For 迁移工具联通 FS 测试环境验收"挡住,但测试同学其实可以并行准备测试数据。
- 第 27 天:版本交付,比原计划晚了两周多。三条关键 FS 链上,没有任何一条是因为技术难度延期,全部是因为依赖边界划得太粗。
最讽刺的一点是:那个版本的技术风险全部按时清零了,延期全部来自"等待"。如果说这次事故给了我什么教训,就是"等待"在排期表上是不显示成本的,它藏在状态字段和依赖连线之间。
3. 真正的成本不在那条线上,而在它下游
我事后算过这笔账。三条错误 FS 链本身造成的纯等待时间是 6 天。但它们的下游,一共有 11 个任务被连带推迟,涉及测试窗口压缩、实施方排班调整、客户现场验证时间重排,最终折算成 43 人天的额外成本。
换句话说,一条错误 FS 的直接成本是等待天数,间接成本是等待天数乘以链路上的任务扇出系数。这也是为什么在依赖密度高的项目里,改一条线能省掉一整周。

4. 依赖链长度和延期天数之间存在明显的非线性关系
我把这 6 个项目的依赖链长度和实际延期天数做了个对照,发现一个规律:当关键路径上的依赖链超过 9 环之后,延期天数的增长速度明显加快。
原因不复杂。每一环依赖都有概率因为状态更新不及时、交付物定义模糊、负责人交接失误而产生 0.5 到 1 天的"摩擦损耗"。链越长,摩擦损耗是累加的,而管理注意力是衰减的,两头一叠加,就出现了非线性。

三、七个常见误区:项目经理最容易踩的坑
下面这七个误区,我按"踩到频率 × 危害程度"排了序。前三个几乎每个新项目经理都会踩,后四个属于进阶陷阱,但破坏力更大。
1. 误区一:把"先后顺序"一律当成 FS
这是最普遍的一个。"先写文档再开发""先测试再上线""先评审再排期",这些说法里确实有先后,但先后不等于 FS。FS 的严格含义是前序交付物是后序任务的必要输入,而不是前序动作在时间上发生得更早。
判断方法很简单:把前序任务的交付物写出来,问后序任务的负责人"没有这个东西你能开工吗"。如果他说"能,只是不太顺",那这就不是 FS,最多是个建议顺序。
2. 误区二:以为 FS 只能"紧挨着",不知道 lag 和 lead
很多人不知道 FS 可以带滞后量(lag)和提前量(lead)。灌注混凝土之后要养护 7 天才能进入下一道工序,这是典型的 FS + 7 天 lag;而设计文档完成 80% 就可以启动开发环境准备,这是 FS – 2 天 lead。
滥用 lag 和 lead 会让计划失真,但完全不用它们,会逼着你把任务切得无比细碎。我的经验是:lag 只用于物理约束和法规约束,lead 只用于已验证过的并行区间,其他情况宁可拆任务也不要加 lag。
3. 误区三:用 FS 依赖替代沟通
这是我见过最隐蔽的坑。有些项目经理发现两个团队沟通不畅,就在系统里加一条 FS 依赖,以为系统会自动协调。实际上依赖只解决"谁等谁"的编排问题,不解决"为什么不沟通"的协作问题。
依赖加得越多,团队之间的直接对话反而越少,因为大家开始习惯"看板状态就是我的信号源"。等到状态更新不及时,整条链路就一起瘫掉。
4. 误区四:跨团队依赖不落系统
同一团队内部的依赖,靠站会和口头同步还能兜住。跨团队依赖一旦不落到系统里,基本上等于不存在。我见过太多"我以为你们那边知道"的事故。
我现在的要求是:凡是跨越汇报线的依赖,必须在系统里落成显式 FS,并且双方负责人都要确认。不接受"群里说过了"作为唯一凭据。
5. 误区五:FS 链过长,关键路径失真
第一节的折线图已经说明了这个问题的严重性。链路过长不只是慢,更麻烦的是它让关键路径变得不可信。当一条链有 15 环,任何一环的微小波动都会传导,甘特图上算出来的关键路径和实际瓶颈往往不是同一条。
6. 误区六:只看依赖不看资源
FS 只描述逻辑关系,不描述资源可用性。任务 A 完成、任务 B 可以开始,但如果 B 的负责人正在被另一个项目占用,这条 FS 就是纸面上的成立。
我习惯把依赖检查和资源负载检查放在一起做,先看逻辑链,再看这条链上每个节点的负责人在目标时段是否有超过 100% 的负载。后者经常推翻前者的结论。
7. 误区七:设置完就不复查
依赖关系不是一次性配置,它是随着项目推进需要持续校准的活体结构。我给自己定的规矩是每周做一次依赖链抽查,重点看状态停留超过 3 天的任务上游,因为那里最可能藏着已经实际完成但状态未更新的"假阻塞"。

四、专业判断逻辑:什么时候必须用 FS,什么时候坚决不用
讲完误区,该讲判断标准了。我把它整理成一套可以现场用的三问法,以及一张依赖类型边界表。
1. 三问判断法:交付物、资源、可逆性
拿到两个任务,问自己三个问题,就能决定要不要建 FS。
- 第一问:交付物问题。 前序任务有没有一个具名的、可验收的交付物?后序任务是不是真的要消费它?两个都为是,才进入下一问。
- 第二问:资源问题。 后序任务的执行资源,在前序任务完成后是否立刻可用?如果资源本身要排队,这条依赖应该拆成"前序 FS 资源释放"和"资源释放 FS 后序"两段。
- 第三问:可逆性问题。 如果后序任务提前开始,代价是可逆的还是会锁死方案?可逆的可以考虑用 lead 制造并行,不可逆的才需要严格 FS。
这三个问题连续问下来,一条依赖是不是该建、该怎么建,基本就清楚了。绝大多数误设的 FS,都死在第一问上,因为很多人根本没写清楚交付物是什么。
2. 四种依赖类型的适用边界
FS 只是四种依赖里最常见的一种。下面这张表是我在项目里实际使用的判断依据,不是教科书定义。
| 依赖类型 | 含义 | 典型适用场景 | 我在什么情况下会刻意避免 |
|---|---|---|---|
| FS(完成到开始) | 前序完成后,后序才能开始 | 有硬交付物的串行工序、合规审查后置动作、不可逆的架构决策 | 交付物可以被拆小、或后序任务可以部分并行时 |
| SS(开始到开始) | 前序开始后,后序才能开始,通常带 lag | 文档撰写与评审并行、环境搭建与代码开发并行 | 两个任务交付物强耦合、需要严格顺序验收时 |
| FF(完成到完成) | 前序完成时,后序也必须完成 | 联调与联调验证、批量数据迁移与校验 | 后序任务本身有独立完工标准时 |
| SF(开始到完成) | 前序开始后,后序才能完成 | 交接班场景、新系统上线后旧系统才能下线 | 绝大多数知识型项目场景,我基本不用 |
从这张表能看出来,FS 适合"不可逆 + 有硬交付物"的场景。一旦这两个条件有一个不满足,就应该考虑换成 SS 或者直接取消依赖。

3. 依赖密度的经验阈值
除了类型,密度也是关键指标。我定义依赖密度为"依赖条数 ÷ 任务条数"。在我复盘的样本里,密度和排期变更次数之间的关系非常清楚。
密度低于 0.6 时,计划往往过于松散,容易出现"没人知道谁等谁"的混乱;密度在 0.8 到 1.2 之间时,排期变更最少,说明约束和灵活性的平衡点就在这里;密度超过 1.5 之后,排期变更次数急剧上升,计划开始变得僵化且难以维护。

4. 一个可复用的依赖描述写法
我在团队里推行过一套依赖描述规范,用配置文件的形式把依赖写清楚,而不是只在工具里拉一条线。这样做的最大好处是强迫你写出 reason 字段,写不出来就说明这条依赖站不住。
dependencies:
from: T-098
name: 数据库Schema冻结
owner: 后端架构组
deliverable: schema_v3.sql + 字段变更说明
to: T-101
type: FS
lag: 0d
reason: 建表脚本必须基于冻结后的字段定义生成,提前产出会导致返工
reversible: false
fallback: 无(字段定义变更会锁死迁移脚本设计)
这套写法看起来繁琐,但它解决了一个核心问题:当依赖被写成结构化的四要素时,"这条依赖到底该不该存在"就从一个主观判断变成了一个可以评审的对象。我在两个项目里推行后,依赖条数平均减少了 23%,而延期天数没有增加。
五、案例与数据观察:一次 FS 依赖治理的完整过程
上面讲的是方法论,这一节讲一次真实的治理过程。我选择 100 人以上、私有化部署、多项目并行的团队作为观察对象,因为这类团队的依赖问题最复杂,治理收益也最明显。
1. 为什么这类团队最适合做依赖治理
三个原因。第一,团队规模超过 100 人之后,跨团队依赖数量呈指数增长,口头协同彻底失效,依赖必须落到系统里。第二,私有化部署场景下交付物硬、不可逆点多,FS 依赖是刚需,误设的代价直接体现在客户交付时间上。第三,多项目并行意味着同一个人可能同时被三条依赖链占用,资源冲突和依赖冲突叠加,问题被放大。
我用的工具是 PingCode。选择它的原因很实际:它主要服务中大型企业及 100 人以上组织,依赖关系在需求、迭代、测试三个层级都能落;支持私有化部署,符合这类客户的数据合规要求;同时支持从 Jira 平滑迁移,团队不需要为了治理依赖而重建全部工作习惯。
2. 治理前的依赖基线
治理开始前,我先跑了一遍基线数据,包括依赖条数、类型分布、关键路径链长、以及近三个月的延期情况。
| 基线指标 | 治理前数值 | 问题判断 |
|---|---|---|
| 任务总数 | 1,247 条 | 规模属于典型中大型项目群 |
| 依赖总数 | 1,683 条 | 依赖密度 1.35,已超过健康区间上沿 |
| FS 占比 | 91% | 严重偏高,其他三种依赖几乎未使用 |
| 最长关键路径链长 | 17 环 | 远超 9 环阈值,关键路径基本不可信 |
| 无交付物描述的依赖 | 占比 64% | 大部分依赖没有说明"在等什么" |
| 近三月平均延期 | 每周迭代平均延期 2.8 天 | 延期成为常态而非异常 |
这组数据里最扎眼的是两行:无交付物描述的依赖占 64%,最长关键路径 17 环。前者说明大部分依赖是"习惯性添加",后者说明关键路径已经失去预测功能。
3. 三步治理动作
我没有做大爆炸式的重构,而是拆成三步,用六周时间滚动推进。
- 第一步:识别(第 1-2 周)。 导出全部依赖清单,逐条检查是否填写了交付物和 reason。凡是无法用一句话说清"在等什么"的依赖,统一标记为待确认,由双方负责人复核。这一步删除了 187 条纯冗余依赖,占总数的 11%。
- 第二步:收敛(第 3-4 周)。 对关键路径做链路拆分,超过 9 环的链路一律重新设计:能并行的改成 SS,能拆小的拆成子任务,能找到替代路径的直接删除。这一步把最长链从 17 环压到 8 环。
- 第三步:固化(第 5-6 周)。 把依赖描述规范写进团队的迭代启动检查项,新建立依赖必须填交付物和 reason,同时把依赖密度纳入每两周一次的健康度巡检。
这三步里,第一步的收益最大也最快。很多团队以为治理依赖是技术活,其实第一步就是"把说不清理由的依赖删掉",纯粹是纪律问题。
4. 治理后的数据变化
六周治理结束后,我又跑了一遍同样的指标。变化比我预期的更明显,尤其是排期变更次数,几乎是断崖式下降。

5. 迁移视角:从 Jira 迁过来的团队要额外注意两点
这个案例里有一部分团队是从 Jira 迁过来的。PingCode 支持 Jira 平滑迁移,历史任务和关系可以带过来,但迁移过程中有两个坑必须提前处理。
第一个坑是依赖类型映射。Jira 原生的 issue link 类型(blocks、is blocked by、relates to)和 FS/SS/FF/SF 不是一一对应关系,如果直接把 blocks 全部映射成 FS,会把大量"软关联"变成"硬约束",依赖密度瞬间飙升。我的做法是迁移后先跑一次依赖审计,把 blocks 类型里没有交付物描述的挑出来人工复核。
第二个坑是历史依赖不要全带。已关闭迭代的历史依赖几乎没有治理价值,带上只会增加噪音,建议只迁移当前进行中和未来规划中的依赖关系。
六、不同情况下的行动建议
方法论和案例讲完了,接下来是落地建议。不同规模、不同节奏的团队,动作应该完全不同,照搬百人团队的做法只会把小团队的灵活性压死。
1. 30 人以下的敏捷团队
这个规模不建议建立复杂的依赖体系,口头协同的效率仍然高于系统协同。我的建议是三条:只对跨职能的硬依赖建 FS,比如设计交付物冻结到前端开发启动;不建同团队内部的依赖;每周迭代规划会上花十分钟口头确认依赖,不要求全部落系统。
关键判断标准是:如果一条依赖的信息传递靠站会就能解决,就不要建。这个阶段建立过多依赖的唯一后果是让工具变成负担。
2. 100 人以上的中大型组织
这个规模必须做系统化依赖治理,而且要设专人负责。建议按这个顺序推进:先做依赖基线盘点,算出依赖密度和最长链长;然后做识别轮,删除无交付物描述的依赖;最后把依赖描述规范写入迭代启动检查项。
工具层面,这个规模的团队需要能同时覆盖需求、迭代、测试三个层级的依赖管理。PingCode 在这方面的适配度比较高,尤其是私有化部署和多项目并行的场景。需要注意的是,工具能力再强也替代不了规范,没有 reason 字段的约束,再好的工具也会被用成"拉线工具"。
3. 多项目 / 跨部门并行场景
这类场景的核心矛盾是同一个人的时间被多条依赖链共同占用。建议做两件事:一是建立跨部门的依赖登记机制,所有跨部门依赖必须有双方负责人确认;二是把资源负载视图和依赖视图放在一起看,每个依赖节点都检查负责人在目标时段的负载。
我的经验是,跨部门项目的延期有相当一部分不是逻辑排期错误,而是资源被重复分配。依赖没问题,人不够,一样延。
4. 从 Jira 迁移或需要国产替代的场景
这类场景的优先级很清楚:先保数据完整性,再谈依赖治理。迁移前先做依赖类型映射方案,明确哪些 link 类型转成 FS、哪些转成 SS、哪些直接丢弃。迁移后立刻跑一次依赖审计,把密度和链长摸清楚,再决定治理力度。
PingCode 支持 Jira 平滑迁移,对于有国产替代需求的团队来说,迁移过程的工作量主要集中在数据清洗而不是工具切换上。我的建议是把迁移和依赖治理合并成一次动作,避免做两遍。

七、不同情况下的取舍
做依赖治理这几年,我最深的体会是:所有决策都是取舍,没有哪个方案是全面占优的。下面四组取舍,是我在实际项目里反复面对的。
1. 依赖密度 vs 计划灵活性
密度高,约束强,计划可预测性高,但响应变化的能力弱;密度低,灵活,但协调成本转移到沟通和返工上。前文的经验值 0.8 到 1.2 是一个参考区间,具体取多少取决于你的变更频率。变更频繁的项目应该往 0.8 靠,交付物硬、变更少的项目可以往 1.2 靠。
2. 强管控 vs 自组织
强管控意味着依赖必须落系统、必须双方确认、必须每周巡检,好处是可追溯,坏处是行政成本高。自组织意味着团队自己协调依赖,好处是灵活,坏处是跨团队场景下容易出现"谁都不认账"。
我的判断标准是看协作边界:同一汇报线内可以自组织,跨汇报线必须强管控。这条线划清楚之后,大部分争论都能解决。
3. 工具能力 vs 团队成熟度
工具能提供的功能远比团队用得上的多。依赖关系、关键路径、基线对比、资源负载,功能都在那里,但团队如果连交付物都写不清楚,这些功能只会变成噪音。
所以我的建议是分阶段启用:先只用任务和依赖关系,把交付物描述规范跑通;等规范稳定了,再启用关键路径和基线对比;最后再引入资源负载和跨项目视图。工具能力不应该超前于团队成熟度两个阶段。
4. 治理投入 vs 交付确定性
治理依赖需要投入时间,而且是前置投入,回报在后面才显现。这正是很多团队不愿意做的原因。但从前面的数据看,六周治理换来的是每周迭代延期从 2.8 天降到 0.7 天,这笔账在百人规模的项目里是明显划算的。
我的经验阈值是:如果你的团队每周迭代平均延期超过 1.5 天,且依赖密度超过 1.2,那就该做治理了;低于这个阈值,维护性巡检就够了,不必大动干戈。

八、FS 依赖避坑检查清单
最后给一份可以直接保存的清单。我把它分成三段:设置前、设置中、设置后。每条都是一句话可判断的标准,不需要额外解释。
1. 设置前:判断这条依赖该不该存在
- 前序任务有具名交付物吗? 没有就说明这不是 FS,是建议顺序。
- 后序任务真的消费这个交付物吗? 只是"顺便知道"的不算。
- 中间有替代路径吗? 有的话优先考虑替代路径而不是加依赖。
- 这条约束是物理或合规强制的,还是人为强加的? 人为强加的要重新论证。
- 如果删掉这条依赖,最坏后果是什么? 答不上来就删掉。
2. 设置中:保证依赖被正确表达
- 依赖类型选对了吗? 需要并行就用 SS,别一律用 FS。
- lag 和 lead 有依据吗? lag 只用于物理和法规约束,lead 只用于已验证的并行区间。
- 交付物写进描述了吗? 没写就等于没设。
- 双方负责人都确认了吗? 跨团队依赖必须双向确认。
- 负责人在目标时段的负载查过了吗? 逻辑成立不代表资源可用。
3. 设置后:持续校准
- 关键路径链长超过 9 环了吗? 超过就拆分或并行化。
- 依赖密度在 0.8 到 1.2 之间吗? 超出区间就要复核。
- 有没有状态停留超过 3 天的任务? 检查它的上游是不是"假阻塞"。
- 本周新增依赖有交付物描述吗? 抽查 5 条,缺失率超过 20% 就要重新培训规范。
- 跨团队依赖确认率是多少? 低于 90% 说明流程有漏洞。
这份清单我建议在迭代规划会上过一遍,不要一次性全查,按"设置前 5 条在规划时查、设置中 5 条在录入时查、设置后 5 条在每两周巡检时查"的节奏,成本可以摊薄到几乎无感。

结语:FS 是护栏,不是枷锁
回到开头那个项目。后来我复盘时发现,那个版本所有的技术难题都按计划解决了,延期全部来自"等待"。而等待的根源,是我把任务之间的关系当成了排期表的装饰,而不是需要被反复论证的工程约束。
FS 依赖的价值不在于"告诉谁等谁",而在于强迫项目经理想清楚:我到底在等什么,这个东西由谁产出,没有它后序任务会付出什么代价。想清楚这三件事,很多依赖自然就消失了,剩下的那些才是真正需要被守护的。
我的独特判断可以浓缩成三句话。第一,大部分排期问题不在任务本身,而在任务之间那些看不见的线上,而依赖设置错误是四类延期原因里唯一"改起来几乎零成本"的一项。第二,依赖密度不是越高越安全,1.0 附近存在明确最优解,超过 1.5 之后治理收益迅速转负。第三,跨汇报线的依赖必须强管控,同一汇报线内的依赖应该自组织,这条线划清楚,大部分关于"要不要上系统"的争论都会自动消失。
如果你现在就想动手,我的建议是按这个顺序走:这周先跑一次依赖基线,算出你项目的依赖密度和最长关键路径链长;下周做一轮识别,把说不清"在等什么"的依赖挑出来复核;然后把这个动作固定成每两周一次的巡检。不需要工具升级,不需要流程重构,先做这三件事,两周后你会看到排期表上一些没那么明显的连线,其实是整条链路上最贵的那几根。
FS 用得好是护栏,用不好是枷锁。区别只在于,你有没有认真问过每一根线:"你到底在等什么。"
常见问题解答(FAQ)
1. 任务依赖FS和SS到底有什么区别,什么时候该用哪个?
我之前排期的时候一直默认所有任务都用FS,结果有次做市场活动筹备,设计物料和渠道对接明明可以同时启动,我却设成了等设计做完才能对接渠道,硬生生把三天的工作拖成了六天。后来同事说你这是依赖类型用错了,我才开始认真研究FS和SS的区别。
FS是前序任务完成后后续任务才能开始,SS是前序任务开始后后续任务就能开始。判断标准很简单:问自己一句‘后一个任务需不需要前一个任务的产出物’。需要产出物就用FS,比如开发做完才能测试;不需要产出物、只是需要同步启动或部分重叠,就用SS,比如活动预热文案和渠道排期可以同时推进。
实操建议是先把所有任务列出来,逐条标注‘是否依赖前序产出’,只对真正有交付物传递的环节设FS,其余默认不设依赖或设SS,这样排出来的计划不会假紧张。
2. FS依赖设了lag之后,为什么我的关键路径反而算错了?
有一次做版本迭代排期,开发完成到测试开始我加了2天lag,想着留点缓冲,结果整个项目的关键路径显示比实际交付晚了一周。我当时以为是工具算错了,后来才发现是自己对lag的理解有偏差,lag不是缓冲,它本身就是工期的一部分。
lag在FS依赖中表示前序完成后需要等待一段时间后续才能开始,这段时间会被计入关键路径。如果你的lag设置没有对应真实的等待原因(比如环境部署需要2天、审批需要3天),那它就是在虚增工期。正确做法是:lag只用于有明确外部约束的等待,比如‘合同签署后需法务归档2天’,而不是用来做心理缓冲。
检查方法是在工具里打开关键路径视图,逐条看带lag的FS依赖,问自己‘这个等待时间是合同规定的、客户要求的,还是我自己想留的’。如果是后者,删掉lag,改用独立的缓冲任务来管理。
3. 项目里有几十个任务,怎么快速排查哪些FS依赖设错了或者设多了?
我接手过一个别人排的排期表,打开一看密密麻麻全是FS连线,任务从周一排到下下周五,一条并行线都没有。我想改又不知道从哪里下手,生怕删错一条依赖整个计划就散了。后来我摸索出一个排查顺序,从那以后接手任何排期表都能在半小时内理出头绪。
排查分三步走。第一步,先看关键路径,如果关键路径上超过七成的任务都是单线串联的FS,那大概率存在过度依赖,正常的项目应该有多条并行路径。
第二步,逐个检查FS依赖的前后任务,问‘后一个任务是否真的需要前一个任务的全部产出’,如果只需要部分产出或者只需要知道前序开始了就行,这条FS就该改成SS或者直接去掉。第三步,把所有lag大于零的FS依赖单独列出来,逐条确认等待原因是否真实存在。
工具操作上,主流项目管理平台都支持依赖关系筛选视图,可以一键筛出所有FS类型的依赖,按项目阶段分组检查效率更高。
4. 敏捷项目里到底要不要设FS依赖,还是说FS只适合瀑布?
我们团队从瀑布转敏捷之后,领导说敏捷不需要设依赖,任务全部丢进看板自己认领就行。结果 sprint 里经常出现测试在等开发、前端在等接口的情况,站会上大家都在说‘我在等某某某’,但看板上完全看不出来谁在等谁。我就很困惑,敏捷是不是真的不需要FS依赖。
敏捷不是不需要依赖,而是不需要瀑布式的那种全量前置依赖。FS依赖在敏捷中的正确用法是:只在同一个sprint内部、有明确交付物传递的任务之间设置FS,比如‘接口联调完成’到‘前端集成测试开始’,这种必须等前一步产出才能动的关系不设FS就是给自己埋雷。
但跨sprint的依赖、或者只是信息同步性质的关系,不应该设FS,而应该通过站会同步、看板泳道或者标记阻塞状态来管理。判断标准是一句话:如果后一个任务在前一个任务没完成时根本无法开工,就设FS;如果只是‘最好等一等’或者‘需要知道进度’,就不要设。
敏捷里FS依赖的数量应该控制在每个sprint三到五条以内,超过这个数说明你的任务拆分粒度可能太粗了。
核心关键词
文章包含AI辅助创作:任务依赖FS教程:项目经理效率提升,避坑指南,发布者:飞飞,转载请注明出处:https://worktile.com/solution-1/archives/383243
读者评论
文中把FS依赖定位为交付物移交而非时间先后,这个判断标准非常实用。之前做项目也常把先后顺序误当成依赖,尤其是各种评审会,看完‘接口契约冻结’这个例子,确实能减少不少无效排队。
瀑布图展示的放大效应很有说服力,6天直接等待变成49人天总成本,以前只算表面等待时间,忽略了链路上的扇出系数。以后做排期得把下游影响一并估算,否则治理收益总是被低估。
依赖链超过9环就进入非线性增长,这个阈值很有参考价值。我们项目关键路径经常十几环,甘特图算出来的关键路径和实际瓶颈总对不上,看来拆链和并行化比单纯加人加时间更有效。