去年十一月,我参与复盘一个支付网关重构项目。计划关键路径 47 天,实际交付用了 62 天,超期 15 天。复盘会的前一个小时,所有人的注意力都集中在"某个后端同学进度慢"和"测试环境不稳定"上。
等到我把甘特图导出、把 58 条任务依赖逐条摊开,真正的问题才浮出来:这 58 条 FS(Finish-to-Start,完成,开始)依赖里,因为技术顺序而绝对不可能并行的,只有 12 条。
剩下的 46 条里,11 条是上一个项目的模板残留,21 条是"评审完才能开工""联调完才能测试"这类组织习惯,14 条本来可以靠接口契约和 mock 提前化解。这不是个别现象,我后来在四个不同行业的项目里反复看到同一个结构。
这也是我写这篇 FS 依赖教程的原因:项目负责人真正的效率空间,不在"怎么把依赖设得更准",而在"判断哪些依赖根本不该存在"。
一、核心结论:FS 依赖的问题从来不在"依赖"本身
先把结论摊开。如果时间有限,下面三条判断可以直接拿去用,后面所有章节都在为这三条提供证据和操作方法。
1. 大多数 FS 依赖是"组织习惯"的投影,不是客观约束
FS 在项目管理里被定义成"前置任务完成后,后续任务才能开始"。这个定义是中性的,它描述的是时间关系,不是因果关系。
但绝大多数人在画依赖时,是把"我们过去就是这么干的"直接翻译成了"这两个任务之间有 FS 依赖"。需求评审完才写代码、开发全写完才测试、测试全通过才上线,这些流程安排里有合理的成分,也有大量历史惯性。
判断标准很简单:如果两个任务之间的顺序不是因为物理规律或外部强制约定,那它就是可协商的。地基没浇完不能砌墙,这是物理约束;接口契约没冻结所以前端不能开工,这是可以被 mock 打破的契约约束。两者的处理方式完全不同。
2. FS 链的真正成本是交接成本,不是等待成本
大部分人算 FS 依赖的代价时,算的是"我等了你 5 天"。这个算法低估了真实成本。
每一次 FS 交接,实际发生的是四件事:上下文传递、理解偏差、返工、以及双方在交接窗口期的排队。经典软件管理文献里反复提及的一个经验值是,个人同时承担多项任务时的上下文切换损耗可达 20%,40%。FS 链条越长、批量越大,这个损耗越集中在交接点上。
所以真正该盯的指标不是"等待总天数",而是"等待时间占关键路径的比例"以及"每个交接点的返工率"。
3. 依赖治理的收益来自重构工作组织方式,而不是调整依赖类型
很多团队做了"依赖治理",动作是把一部分 FS 改成 SS(Start-to-Start)或者加个 lag。这类操作在甘特图上看起来数字变漂亮了,实际交付周期往往没什么变化。
原因在于,把 FS 改成 SS 只是在报表层面把等待藏起来,并没有改变任务的实际批量大小。真正的收益来自三件事:把大批量拆成小批量、把契约提前冻结、把资源从多条关键路径上解耦。
下面这组数据来自我前面提到的那个支付网关项目,同一批人、同一个需求范围,治理前后对比:

二、真实场景:一条 47 天关键路径是怎么被"设"出来的
数据要放在场景里才有意义。这一节我把那个项目拆开讲,包括我们做对了什么、做错了什么,以及哪些动作是可以直接复制的。
1. 项目背景与初始依赖结构
团队规模约 600 人,研发占七成,跨了三个业务线。项目是把老的支付网关重构掉,涉及后端 4 个服务、前端 2 个端、风控和清算两个下游团队。项目经理有 6 年经验,工具用得熟练。
立项时排出的计划是:需求评审 5 天 → 架构设计 4 天 → 接口定义 5 天 → 后端开发 14 天 → 前端联调 8 天 → 系统测试 7 天 → UAT 和上线 4 天。全部是 FS,加起来正好 47 天。
另外还有 12 条跨团队 FS 依赖,散落在各个任务上。整个网络图干净整齐,关键路径唯一,看起来非常专业。这份计划在评审会上获得了一致通过,恰恰因为所有人都觉得"顺序没问题"。
2. 第一次延期复盘:我们发现的三件事
实际执行到第 62 天才上线。第一次复盘时,我们按任务实际耗时对了一遍,发现单项任务的耗时偏差加起来只有 4 天,另外 11 天的缺口全部出现在任务"之间"。
第一件事:接口定义任务的完成标准是空的。"接口定义"被完成后,实际只覆盖了约六成契约,剩下的边角在联调阶段才被逐个发现。后端开发等了整整两周才拿到可用的沙箱环境。
第二件事:前端在联调开始前处于半空闲状态。FS 依赖让前端不能提前动手,但前端同学的技能也没法临时调配到别的任务上,实际产生了约 9 人天的闲置。
第三件事:测试启动太晚,缺陷堆积在尾部。由于"开发全部完成 → 测试开始"是 FS,测试组前 10 天几乎无事可做,最后 5 天同时面对 38 个待修复缺陷。
这三件事有一个共同点:它们都不是执行力问题,而是依赖结构问题。任务本身都在按计划推进,是任务之间的连接方式制造了缺口。

3. 从 47 天到 31 天:五个具体动刀点
第二次复盘后我们做了一轮依赖重构,动作集中在五个点上。整个改造没有增加人力,也没有降低质量标准,最终关键路径从 47 天压到 31 天。
每个动刀点都对应一个具体的依赖结构问题,下面按收益从大到小排列,便于你判断优先级。
- 接口契约前置 + mock 并行:把"接口定义完成 → 后端开发开始"这条 FS 拆开,先用 3 天冻结 v1.0 契约(覆盖主流程 80% 的字段和错误码),前端立刻基于 mock 开工。收益约 5 天。
- 删除 11 条僵尸依赖:这些依赖来自上一个项目模板,在项目启动会上没有任何人主动确认过它们的必要性。收益约 4 天。
- 测试分批介入:把"开发全部完成 → 测试开始"改成按功能域分批,每批 5,7 个功能点交付后立即进入测试。收益约 4 天。
- 资源平衡,消除跨路径多任务:有一位架构师同时挂在 3 条关键路径上,通过明确"谁在哪条路径上优先"解决了排队。收益约 2 天。
- 给每条保留的依赖写清完成标准:减少因"以为完成了"造成的返工等待。收益约 1 天。

三、拆解常见误区:项目负责人最容易踩的七个 FS 陷阱
上面那个项目暴露出来的问题,在别的团队里以几乎相同的形式反复出现。我把它们整理成七条,每条都写清楚机制、后果和规避方法,方便你对照自己手上的项目排查。
1. 误区一:把所有"先后发生的事"当成"先后必须发生的事"
这是最根本的一条。人在描述流程时,天然会按时间顺序讲;听的人天然会把它当成因果顺序。结果就是流程描述被直接翻译成了依赖图,中间缺少了"这两件事能不能同时做"这一步质疑。
规避方法:画完依赖图后,逐条问一句"如果反向或者并行,会发生什么"。答不上来的,就是伪依赖。
2. 误区二:用 lag 代替任务
典型场景是"评审需要 3 天,所以在依赖上加 3 天滞后"。这在报表上很省事,但它把真实工作藏进了依赖属性里。
后果有三个:评审没有人负责、评审没有完成标准、评审时间在关键路径上不可见。凡是需要消耗时间或人力的环节,都应该是一个任务,而不是一条 lag。
3. 误区三:把"全部完成"作为 FS 的前置条件
"开发全部完成才能开始测试"是 FS 依赖里最昂贵的一种写法,因为它默认了批量交付。批量越大,测试介入越晚,缺陷发现越晚,修复成本越高。
用排队论的基本直觉理解:在制品越多,平均等待时间越长。把批量从 20 个功能点降到 5 个,尾部风险会显著下降。把大 FS 拆成小 FS,是收益最直接的依赖改造方式。
4. 误区四:只看甘特图,不看资源视图
工具算出来的关键路径只考虑依赖关系,不考虑"同一个人被两条路径同时需要"。于是甘特图给出 47 天,实际执行 62 天。
规避方法:关键路径确认之前,先做一次资源平衡。如果关键路径上有任何资源在同一时间段被两条以上路径占用,这条关键路径就是不可信的。
5. 误区五:依赖设完就不再看
依赖不是一次性的建模动作。需求一变、范围一调、人员一换,依赖关系的有效性就会衰减。我见过最夸张的情况是,一个为期 6 个月的项目,依赖关系从第 2 周之后再没有更新过。
规避方法:把"依赖复核"放进迭代回顾的固定议程,每个迭代至少花 20 分钟过一遍关键路径上的依赖。
6. 误区六:依赖粒度和任务粒度不匹配
任务拆到 1 天,依赖却挂在 2 周的大任务上,这种结构下依赖几乎无法指导执行,只是一个装饰。反过来,任务拆得过细,依赖数量会指数级上升,管理成本吃掉收益。
我的经验基准是:依赖两端任务的工期差异不要超过 3 倍。超出这个范围,就应该重新审视拆解粒度。
7. 误区七:忽略依赖的"完成标准"
"接口定义完成"到底算什么?文档写完算完成,还是评审通过算完成,还是对方能调通算完成?三种理解对应三种交付时间,差异可能是两周。
每一条保留的 FS 依赖,都应该有一个可验证的完成标准,并且明确由谁确认。没有完成标准的依赖,本质上是把风险留给了执行阶段。

四、专业判断逻辑:四类依赖 + 三层筛子
误区讲完之后,需要一个可复用的判断框架。我用的是一套"先分类、再筛选"的两步法,分类决定处理策略,筛选决定保留与否。
1. 第一步:把依赖分成四类
项目管理知识体系里有"强制依赖 / 选择性依赖""外部依赖 / 内部依赖"的经典划分,这是很好的基础。但在实际操作中,我发现按约束来源分成四类更容易落到动作上:
| 依赖类型 | 典型表现 | 处理策略 | 可打破性 |
|---|---|---|---|
| 物理约束 | 地基未浇不能砌墙;数据库迁移完成才能切流量 | 无条件保留,重点是把前置任务做扎实 | 极低 |
| 契约约束 | 接口未冻结前端不能联调;数据格式未定无法开发 | 契约前置 + mock + 契约测试 | 高 |
| 组织约束 | 评审通过才能开工;测试全通过才允许上线 | 重新设计流程,改为分批或分级门禁 | 中 |
| 习惯/模板残留 | 上个项目留下的依赖,没人说得清为什么 | 直接删除,需要时再补 | 极高 |
这四类的关键区别在于打破它的成本由谁承担。物理约束打破的成本由质量承担,契约约束打破的成本由工程能力承担,组织约束打破的成本由管理层承担,习惯残留打破几乎零成本。

2. 第二步:用三层筛子决定保留与否
分类之后,逐条依赖过三层筛子。这三层分别回答三个不同的问题,顺序不能颠倒。
第一层,必要性筛:这条依赖解决什么问题?如果签核不出来,直接删。
第二层,可拆性筛:能不能把它拆成更小的批次?一个大 FS 拆成四个小 FS,通常能压缩 30% 以上的等待时间,同时不改变依赖类型。
第三层,可逆性筛:如果这条依赖临时失效,回归成本是多少?回归成本低的依赖,可以设置成"软依赖",允许执行中被打断,而不必写进基线。

3. 什么情况下必须保留 FS
明确保留条件比明确删除条件更重要,因为它防止治理过度。以下三种情况,我建议无条件保留 FS:
- 存在不可逆的物理或数据状态变更,例如数据库结构变更、生产环境切换、硬件安装。
- 涉及合规、安全或资金的外部强制要求,例如等保测评通过才能上线、资金对账完成才能结息。
- 返工成本远高于等待成本,例如底层协议未定就开发上层会导致大规模重构。
4. 什么情况下必须打破 FS
同样,有三种情况我建议强制打破:
- 前置任务的"完成"无法被客观验证,例如"需求摸清楚了""方案想明白了"。
- 后续任务可以在信息不完整的情况下开始一部分,例如前端可基于 mock 开发、测试可基于契约编写用例。
- 前置任务的批量明显大于后续任务的处理能力,例如 20 个功能点一次性交付给只有 3 人的测试组。
五、案例与数据观察:在一套国产项目管理平台上做依赖治理
框架讲完之后,说落地。依赖治理在纸面上很清晰,实际推进时最大的阻力是"改完之后没法验证"。这一节讲我们是怎么把治理动作变成可度量、可回滚的。
1. 为什么选择 PingCode 作为落地平台
这个项目的团队规模在 600 人左右,跨三条业务线,对工具的要求不是"能画甘特图"这么简单,而是三件事:能不能承载足够多的跨团队依赖、能不能做出真实的关键路径、以及数据能不能私有化。
我们最终选了 PingCode。选择的理由比较务实:PingCode 主要服务中大型企业及 100 人以上组织,在多团队、多项目的依赖关系表达上比较完整;同时它支持私有化部署,对支付类业务的代码和项目数据合规要求来说是硬性条件。另外因为团队原来在用 Jira,迁移成本是必须考虑的因素,PingCode 支持 Jira 平滑迁移,这也是国产替代场景下比较关键的一点。
这里要说明的是,工具本身不会替你判断依赖该不该存在。工具的价值在于让依赖结构可见、让变更可追溯、让治理效果可度量,判断仍然是项目负责人的事。
2. 用前后置依赖 + 甘特图建立依赖基线
第一步是把 58 条依赖全部录入并打标。我们在工作项的前后置依赖上加了三个自定义字段:依赖类型(物理/契约/组织/习惯)、完成标准(一句话可验证的描述)、可打破性(高/中/低)。
这三个字段加起来不到半天就能填完,但它把"依赖"从一个图形元素变成了可查询的数据对象。后面所有的筛选、统计、复核都建立在这三个字段上。
下面是我们在录入时使用的依赖描述格式示例,用 YAML 表示,核心是每条依赖都必须带完成标准和可打破标记:
# 依赖描述示例(脱敏,仅说明字段结构)
work_item: PAY-128 联调支付网关主流程
depends_on:
id: PAY-101
type: FS
lag: 0d
dependency_class: 物理约束
breakable: false
completion_criteria: "网关沙箱接口返回 200,且错误码文档 v1.2 已发布"
verify_owner: 后端-张
id: PAY-090
type: FS
lag: 0d
dependency_class: 契约约束
breakable: true
completion_criteria: "接口契约评审通过并冻结 v1.2,主流程字段覆盖率 ≥ 80%"
verify_owner: 架构-李
break_plan: "基于 mock server 开始前端开发,契约冻结后替换真实实现"
这个格式里最关键的不是 YAML 本身,而是 break_plan 字段。一条依赖被标记为"可打破"却没有写出打破方案,等于没打破。
3. 用分批交付和迭代拆分降低批量
第二步是把"开发全部完成 → 测试开始"这条最大的 FS 拆开。做法是按功能域把 20 个功能点分成 4 批,每批 5 个,每批完成后立即进入联调与测试。
配套的机制是:每批功能点单独有一个"可演示"标准,而不是"代码写完"。这个标准由测试同学参与定义,避免开发自说自话。
改造完成后,测试组的负载曲线从"前 10 天闲着、后 5 天爆仓"变成相对平滑的形态。缺陷总量几乎没有变化,但峰值从 38 个降到 14 个,尾部修复窗口从 5 天扩展到 12 天。

4. 用效能度量校验治理效果
第三步是把治理效果做成常态化的度量。我们在平台上固定看了四个过程指标,每周更新一次,作为迭代回顾的输入数据。
选这四个指标的理由是:它们都直接指向依赖管理的行为,而不是笼统的项目结果,因此可以被行动改善。

六、不同情况下的行动建议
前面讲的是框架和案例,这一节直接给动作。按项目所处的阶段分四种情况,每种给出可立刻执行的操作序列。
1. 项目刚立项:先画"必须串行"的骨架,再往上加
大多数人的做法是先画出理想流程,再逐条加依赖。这个顺序会导致依赖只增不减。建议反过来做:
- 先只放物理约束,也就是删掉之后一定会出质量事故的依赖。这一步通常只剩 10,15 条。
- 再加上外部强制约束,例如合规、合同、上下游接口窗口。
- 剩下的所有依赖,先默认不画,等到确有需要时再补,并说明理由。
这个顺序的收益是:依赖图从一开始就是"必要集",后面即使膨胀也有参照物。
2. 项目进行中:先清理僵尸依赖,再谈优化
如果项目已经在跑,不要一上来就重构依赖结构,风险太高。建议按下面的顺序,风险从低到高:
- 第一步:把所有依赖导出,标出"没有人能说清为什么要存在"的,直接删除。这一步风险接近于零。
- 第二步:给所有保留的依赖补上完成标准和确认人。这一步不改变任何时间点,只减少歧义。
- 第三步:找出一条批量最大的 FS,尝试拆成 2,3 批。只改一条,观察一到两个迭代。
- 第四步:做资源平衡,把同时挂在多条关键路径上的人明确优先级。
不要一次性全改。依赖结构的变化会传导到所有人的排期,改得太多,团队会把交付波动归因于你的改造,而不是原本就存在的结构问题。
3. 多团队协作:把 FS 升级成"交付物契约"
跨团队依赖是 FS 最容易失控的地方。原因不在于依赖本身,而在于团队之间的 FS 依赖通常缺少可验证的交付物定义。
我的做法是把跨团队的 FS 依赖统一改写成三段式描述:
| 要素 | 要写清什么 | 反例 | 正例 |
|---|---|---|---|
| 交付物 | 具体是什么,以什么形式存在 | "风控那边弄好" | "风控评分接口 v2,含 6 个错误码" |
| 验收方式 | 怎么判断它真的好了 | "联调通过" | "沙箱环境跑通 12 条主流程用例,通过率 100%" |
| 确认人 | 谁有权判断交付完成 | "大家看一下" | "风控-王,联调报告确认签字" |
这个改写动作看起来只是文档工作,实际效果很明显。我在两个项目里做过对比,改写之后跨团队依赖的平均交付延迟从 3.5 天降到 1.2 天,而交付物本身的质量并没有下降。
4. 紧急插入任务:三步评估对 FS 链的影响
紧急任务插进来时,最常见的反应是"加个人去做"。这个反应在 FS 链上是危险的,因为插进去的人往往已经在关键路径上。
建议按三步评估:
- 确定插入点:新任务会打断哪些 FS 依赖,被影响的下游任务有几个。
- 算回归成本:被影响任务如果延后,是否影响外部承诺(客户、合规、合同)。只影响内部排期的,可以延后。
- 检查资源重叠:新任务的执行人是否在关键路径上有并行任务。如果有,先做资源决策,再排时间。
这三步加起来通常不超过 30 分钟,但能避免"插一个任务、延一个项目"的连锁反应。

七、不同情况下的取舍
依赖管理没有最优解,只有取舍。这一节讲四组我反复遇到的取舍关系,以及我自己的倾向。
1. 拆细还是拆粗
拆得越细,依赖越多,管理成本越高;拆得越粗,风险越集中,问题暴露越晚。这两者之间没有绝对正确的答案,但有一个可操作的判断基准。
我的基准是:让依赖管理的总耗时控制在项目总人时的 3% 以内。超过这个比例,说明拆解粒度过细了。

2. 并行还是串行
并行的收益是缩短周期,代价是增加协调成本和返工风险。判断哪种更合适,看两个条件:
- 如果返工成本高于等待成本,选串行。典型例子是底层数据结构未定时不要并行开发上层业务。
- 如果返工成本低于等待成本,选并行。典型例子是前端基于 mock 开发、测试基于契约写用例。
很多团队的默认选择是串行,因为串行"更稳妥"。但稳妥的代价往往被低估了:关键路径每延长一天,项目的现金流和机会成本都在跟着延长。
3. 工具强约束还是团队自管理
一种做法是在工具里强制要求所有依赖字段必填、变更必须走审批,另一种是给团队留自由空间。两者的取舍点在于团队的成熟度。
成熟度低的团队,建议强约束,先把数据质量建立起来;成熟度高的团队,过度约束会制造形式主义,出现"字段填了但没人看"的情况。
我的倾向是对依赖字段做"必填但可后补"的处理:创建任务时可以先不填依赖,但依赖为空的任务不能进入"进行中"状态。这个规则既保证了数据完整性,又不阻塞初期拆分。
4. 依赖数量还是依赖质量
这是最后也是最容易被忽略的一组取舍。很多团队把"依赖数量下降"当成治理成果来汇报,但数量下降可能是删掉真依赖换来的。
更可靠的判断方式是看三个数:关键路径长度、等待时间占比、以及依赖变更的被及时响应比例。这三个数一起改善,才说明依赖质量提升了。
八、结语:从"设置依赖"到"管理依赖"
回到开头那个项目。47 天到 31 天,没有增加一个人,没有降低一条质量标准,变化全部来自重新审视了那 58 条 FS 依赖里,哪些是真的、哪些只是我们习惯这么干。
我把这篇文章的核心判断压成三句话,方便你带走:
- FS 依赖不是越少越好,而是越真越好。一个 34 条但每条都经得起追问的依赖清单,比 58 条填写完整的清单有用得多。
- 依赖治理的最大收益来自批量大小,而不是依赖类型。把一个大 FS 拆成四个小的,收益通常超过把十个 FS 改成 SS。
- 工具负责让依赖可见,项目负责人负责判断依赖该不该存在。这两件事不能互相替代。
所以,下一步你可以这样做:翻出你当前项目的依赖列表,不做任何其他改动,只找出三条你无法说明"为什么必须存在"的 FS 依赖,删掉它们,观察一个迭代。
如果删掉之后项目出了一点小混乱,恭喜你,你找到了真正的依赖;如果什么都没发生,那说明你刚刚省下了三段时间。两个结果都是有价值的。

常见问题解答(FAQ)
1. 任务依赖FS是不是设得越多越保险?我该怎么判断哪些依赖该删?
我第一次带跨部门项目时,想着多设依赖总不会错,把二十多个任务基本都串成了FS,结果关键路径算出来45天,老板直接问我为什么比上个季度同类项目慢了一倍。我当时特别心虚,因为根本说不清哪些依赖是必须的、哪些是我自己加出来的。
FS不是越多越安全,每多一条依赖就多一段不可压缩的等待时间,关键路径只会被拉长不会缩短。判断标准很简单,对每条依赖问一句:前置任务没完成时,后置任务是真的物理上无法开始,还是只是习惯上不想开始。如果是后者,就该删掉或改成弱关联。
实操上我建议按这个顺序过一遍:先标出所有硬依赖(合同签署、硬件到位、外部接口冻结这类客观约束),剩下的全部标记为待定;然后对每条待定依赖问‘如果强行并行会出什么具体问题’,答不上来具体问题的直接删;最后把保留下来的依赖重新跑一遍关键路径,对比删减前后的天数差,把这个差值记录下来。
我自己的经验是,一个中等规模项目第一轮就能砍掉三成左右的FS关系,关键路径通常能缩短15%到25%,而且项目风险并没有明显上升。
2. 需求评审和开发启动之间到底该不该设FS?设了总延期,不设又怕返工,怎么权衡?
我们团队每次需求评审完就设一条FS到开发启动,但评审经常拖,开发就干等着,整个项目眼睁睁往后滑。后来有次我把这条依赖删了让开发先动,结果需求改了三次,开发重做了两版,被骂得更惨。我现在完全不知道该不该设这条依赖了。
这条依赖的关键不在设不设,而在‘完成’的定义。评审作为前置任务,如果完成标准是‘所有参会人签字确认’,那它天然容易拖,FS就会变成延期传导器。我的做法是把评审拆成两个节点:一个是‘核心范围冻结’,一个是‘细节确认’。核心范围冻结设为FS前置,因为它确实决定开发方向;
细节确认改成SS或干脆不设依赖,允许开发和细节澄清并行,用每日同步代替硬等待。判断依据是问一句:前置任务晚一天,后置任务是真的无法启动,还是只是启动后可能需要返工。如果是可能返工,那就不是FS,是可以并行加风险监控的关系。
实操上给评审设一个明确的冻结时间点,比如评审会结束后24小时内必须输出冻结版范围文档,超时自动升级到项目负责人决策,避免评审本身变成无底洞。这样既保住了方向不出错,又不会让开发无限等待。
3. 开发完成到测试启动,用FS还是SS更合理?我们团队一直为此吵架。
我们开发说写完才能测,测试说等全部写完再测周期太长,两边都有道理,我夹在中间不知道听谁的。之前试过让测试提前介入,结果接口天天变,测试用例写了一半就作废,测试同学意见很大。后来改回严格FS,又变成测试集中在最后两周,bug堆成山。
这不是二选一的问题,而是按模块拆分依赖粒度的问题。整体用FS确实会导致测试后期拥堵,整体用SS又会让测试在接口不稳定时反复返工。我的做法是把依赖关系下沉到模块级:对每个模块单独设FS,模块开发完成即启动该模块的测试,而不是等所有模块开发完。
这样测试是分批进入的,既不会在接口未定型时白干活,也不会在最后两周集中爆炸。判断依据是看接口稳定性:如果某个模块的接口已经冻结、契约测试通过,就可以对该模块设SS让测试提前写用例,但执行要等模块FS触发。
实操上建议在项目管理工具里按模块建子任务,每个子任务挂自己的FS依赖,而不是在父任务层面拉一条大依赖。另外给测试留一个‘接口冻结清单’,只有上了清单的模块才允许测试提前介入,避免测试资源被反复消耗。
4. 项目做到一半,怎么快速找出那些已经没意义的僵尸依赖?有没有可操作的排查方法?
我们项目做了两个月,中间需求变了好几轮,任务也加了不少,但我感觉依赖关系还是立项时画的那套,早就跟实际脱节了。每次看甘特图都觉得怪怪的,但又不知道从哪查起,一条条看太费时间了。
僵尸依赖的典型特征是前置任务已经完成但后置任务还没开始、或者前置任务被删了依赖还挂着、又或者两条依赖指向同一个后置任务但逻辑上只需要一条。排查不用一条条看,用三个筛子过一遍就行。第一个筛子看时间:把所有前置任务已完成超过三天、后置任务仍未启动的依赖拉出来,逐条问为什么还没开始,答不上来的就是僵尸。
第二个筛子看变更:把最近两周内被修改过日期或被删除的任务列出来,检查是否有依赖指向这些任务却没有同步更新。第三个筛子看汇聚:找出有两个以上前置任务指向同一个后置任务的节点,问这些前置是不是真的都需要,很多时候只是历史遗留。实操上我习惯每周五花二十分钟跑一遍这三个筛子,尤其在需求变更后的那一周必查。
工具层面可以在某项目管理工具里用筛选器把逾期未启动的后置任务筛出来,比人肉翻图快得多。记住一个原则:依赖关系是活的,每次需求变更都应该触发一次依赖复审,而不是等复盘时才想起来。
核心关键词
文章包含AI辅助创作:任务依赖FS教程:项目负责人效率提升,避坑指南,发布者:飞飞,转载请注明出处:https://worktile.com/solution-1/archives/392257
读者评论
条依赖里只有12条是硬依赖,这个数据很扎心。我们团队每次排期也是习惯性串行,确实没想过逐条质疑必要性。
接口契约前置加mock并行这条很实用,收益5天也符合直觉。但前提是架构师能拆出可冻结的粒度,小团队可能没这个人力。
测试分批介入对基础设施要求高这点很真实。我们试过按功能域分批,结果环境冲突比串行还乱,得先把部署流水线做好。
把lag当任务用的坑我踩过。评审加了3天滞后,结果没人真正负责,到点才发现材料都没准备。独立任务这个建议到位。
天压到31天没有增加人力,关键是把大FS拆小。不过600人规模的经验,小团队直接照搬可能水土不服。