2024年我接手一个B端SaaS的发版排期,需求评审过了三周,开发还在群里问“设计稿什么时候定稿”。我去看排期表,发现设计、开发、测试三条线全被串成了一条直线,设计定稿→开发→测试→上线。但实际上开发可以分模块启动,前端和后端也完全可以并行。这一条直线,把原本可以20天完成的事拖到了35天。问题不在人,在于我把90%的任务都设成了同一种依赖关系:FS(Finish-to-Start,完成-开始)。
很多产品经理对FS的理解停留在“前置做完后置才能开始”这句话上,然后在排期表里把所有任务都标注成FS,以为这样最安全。结果排期看起来严谨,实际执行时处处卡壳,一延期就全线延期。这篇文章我想讲的不是FS的定义,而是FS到底什么时候该用、什么时候不该用、用了之后怎么落地成可执行的排期。我会结合我自己踩过的坑、PingCode这类国产研发管理平台的配置逻辑、以及几种典型场景的判断标准,把FS这件事从概念讲到可落地的操作步骤。
一、先给结论:FS不是排期的默认选项,而是“强顺序约束”的专用工具
如果你时间有限,只看一段,那就看这段。FS的正确定位是“表达不可并行的强顺序依赖”,而不是“表达任务先后顺序的通用写法”。这两者的区别,直接决定了你的排期是刚性脆弱还是弹性可控。
1. FS的本质是约束,不是描述
很多人把FS理解成“任务A在任务B前面”,这是错的。任何两个任务在时间上都有先后,但这不代表它们之间存在FS依赖。FS依赖的真正含义是:任务B的启动条件里,包含“任务A已经完成”这一硬性前提。
举个例子。代码提测(A)完成后才能开始系统测试(B),这是FS,因为测试的对象就是提测的代码,没有A就没有B的输入。但“需求文档写完”和“竞品调研做完”之间就没有FS关系,它们可能时间上相邻,但调研不完成,需求文档照样能写。
判断标准只有一条:如果A没完成,B是否在物理上或逻辑上根本无法启动?如果答案是“可以启动,只是不推荐”,那这就不是FS,而是优先级或建议顺序,应该用其他方式表达。
2. 滥用FS的三个直接代价
我自己统计过一个中型项目(约60个任务节点)的排期数据,对比“全FS串联”和“识别真实FS后再排”两种方案,结果差异很大。

三个代价里,最容易被忽略的是资源空闲。全FS串联时,开发在等设计、测试在等开发,这些等待时间不会出现在甘特图上,但会真实消耗人力成本。一个10人团队,如果平均每人每天有1.5小时在等前置任务,一个月就是约300小时的隐性损耗。
3. 四种依赖里,FS只是其中一种
项目管理中标准的四种依赖关系是FS、SS、FF、SF。产品经理不需要成为PMP专家,但这四种的适用场景必须搞清楚,否则排期工具里的选项就成了摆设。
| 依赖类型 | 全称 | 含义 | 典型场景 | 产品经理使用频率 |
|---|---|---|---|---|
| FS | Finish-to-Start | 前置完成,后置才能开始 | 提测→测试;评审通过→开发 | 高,但常被滥用 |
| SS | Start-to-Start | 前置开始后,后置才能开始 | 开发开始后,联调可以开始 | 中,并行场景必用 |
| FF | Finish-to-Finish | 前置完成后,后置才能完成 | 开发完成前,测试用例必须完成 | 低,但关键 |
| SF | Start-to-Finish | 前置开始后,后置才能完成 | 交接班场景,极少用于互联网 | 极低 |
注意最后一列的措辞。FS的使用频率高,不代表它应该是默认值。真正专业的排期习惯是:先识别哪些关系是“非FS不可”的强约束,剩下的再考虑用SS或直接并行。
二、真实场景:FS该出现的地方,和它不该出现的地方
抽象讲依赖关系容易空泛。我按自己做过和见过的项目类型,把FS的适用场景分成“必须用”“可以用”“不该用”三档。这个划分不是理论推导,是我在排期评审会上被开发和测试怼出来的经验。
1. 必须用FS:没有前置就没法启动
这类场景的共同特征是存在明确的交付物传递。前一个任务的输出,就是后一个任务的输入,没有这个输入,后置任务无从下手。
- 合同签署→项目启动:没签合同就启动,法务和财务都不会同意,这是硬约束。
- 需求评审通过→进入开发:评审没过,开发写了也是白写,这是流程约束。
- 接口联调完成→端到端测试:接口不通,端到端测试跑不起来,这是技术约束。
- UAT验收签字→生产发布:验收没签字,发布就是违规操作,这是合规约束。
这四类我都归为“必须用FS”。判断它们的共同标准是:如果强行并行,产生的不是效率,而是返工。
2. 可以用FS,但更该用SS:可部分并行的场景
这是最容易被做错的一类。很多团队把“可以部分并行”的环节,简单粗暴地设成了FS,白白丢掉并行收益。
比如开发阶段(A)和测试用例编写(B)。严格的FS是:开发全部完成后,测试才开始写用例。但实际工作中,测试完全可以在开发进行到30%时就开始写用例,只要核心流程确定即可。这时候更合适的表达是SS(开发开始后,测试用例编写可启动),再加上一个“开发完成前测试用例需完成”的FF约束。
我在一个金融类项目中做过对比:把“开发→测试用例编写”从FS改成SS+FF组合后,测试环节的准备时间从原计划的5天压缩到与开发重叠的2天,整体测试周期缩短了约1.5天。对于两周迭代来说,这个收益不算小。

3. 不该用FS:被误设为依赖的伪依赖
下面这些场景,我见过太多团队误设成FS,导致排期虚假延长。
- UI设计与后端接口开发:这两者之间没有输入输出关系,只要接口文档评审通过,就可以并行。设成FS会让后端干等UI,浪费大量时间。
- 市场物料准备与产品功能开发:物料是独立的,不需要等功能做完才能准备,最多在最终发布前做一次对齐。
- 内部培训和系统上线:培训材料可以在上线前就准备好,两者互通但不必串行。
伪依赖最大的危害不是拖慢进度,而是让团队形成“等待是合理的”这种心理预期。一旦这种预期形成,即使实际可以并行,团队也会习惯性地等。
三、拆解常见误区:产品经理踩得最多的五个坑
这一节我按“症状→原因→解法”的结构,把我自己和身边产品经理踩过的坑整理出来。每个坑都配了可操作的检查方法。
1. 误区一:把所有任务都设成FS,以为最保险
症状:甘特图上一条直线走到底,项目周期比团队直觉预期长30%以上;一旦某个任务延期,后续全部顺延。
原因:把“有先后”等同于“有依赖”。很多任务只是习惯上的先后,不是逻辑上的依赖。
解法:对每个FS连线问三个问题:后置任务需要前置任务的什么输出?这个输出是否不可替代?如果并行会有什么具体损失?三个问题里有任何一个答不上来,这个FS就该重新审视。
2. 误区二:忽略Lag和Lead,导致排期过于精确
症状:排期表算得很精确,实际执行总有偏差,尤其是存在等待期的环节。
原因:忽略了滞后量(Lag)和提前量(Lead)。比如代码合并后需要等CI构建完成才能测试,这段等待时间是Lag;又比如某些测试可以在开发完成前2天就开始准备环境,这是Lead。
解法:在FS连线上标注Lag。常见的Lag包括:构建等待(小时级)、审批流转(1-2天)、第三方接口对接等待(3-5天)、法务审核(3-7天)。把这些显性化,排期精度会明显提升。

3. 误区三:把外部依赖当成内部任务
症状:排期时假设第三方接口会在第5天就绪,结果对方第12天才给,整个计划崩盘。
原因:把不受控的外部环节和自己可控的内部任务混在一起排,且没有留缓冲。
解法:把外部依赖单独列出,标注责任方和确认时间。外部依赖的FS关系要额外加20%-50%的缓冲,并且要有一个“如果对方延期,我们的Plan B是什么”的预案。
4. 误区四:依赖循环,A等B、B等A
症状:排期工具报错“检测到循环依赖”,或者任务状态互相阻塞,谁也无法推进。
原因:任务拆分粒度过粗,把一个本该迭代推进的整体,拆成了需要互相等待的两块。
解法:把大任务拆细,找到可以先行启动的最小单元。比如“前端开发”和“后端开发”互相依赖接口定义,正确做法是先拆分出“接口契约评审”作为共同前置,评审通过后两端各自启动。这在敏捷里叫“契约先行”,是破解循环依赖的标准手法。
5. 误区五:依赖关系建完就不维护
症状:排期表是第一周的版本,实际执行时依赖早就变了,但没人更新。
原因:把依赖关系当成静态文档,而不是动态管理工具。
解法:把依赖关系的更新纳入每日站会或每周排期评审。我在团队里推的做法是:每个任务状态变更时,触发一次“后置任务是否受影响”的检查,把这个检查做成流程动作,而不是靠人记得。
四、专业判断逻辑:什么样的依赖结构才是健康的
讲完误区,我想说一下我现在用的判断框架。这套框架不是从教材抄的,是我在多次复盘后总结的,核心是三个维度。
1. 维度一:依赖密度
依赖密度指的是一张排期表里,有依赖关系的任务占总任务的比例。我这个概念是我自己用来做排期健康度检查的。
按我的经验,一个健康的10-20人团队迭代,依赖密度控制在30%-50%比较合适。低于30%说明分工可能过于独立,缺少必要的协同约束,容易出现集成问题;高于60%说明任务拆分过粗,或者依赖设置过于保守,排期弹性严重不足。
行业里有一组可以参考的数据:根据PMI(项目管理协会)发布的《Pulse of the Profession》系列报告,高绩效组织中因依赖管理不善导致的进度延误比例约为12%,而低绩效组织这个数字超过25%。虽然PMI没有直接给出“密度”这个指标,但依赖管理质量与交付绩效的正相关是明确的。
2. 维度二:关键路径长度
关键路径就是从项目开始到结束最长的那条依赖链。关键路径越长,项目对单点延期的敏感度越高。
我看排期表时,会先数关键路径上有多少个任务。如果关键路径占了总任务数的50%以上,说明这个计划的容错空间很小,任何一环出问题都会直接拖累交付。健康的排期,关键路径应该控制在总任务数的25%-35%。

3. 维度三:缓冲分布
缓冲不是简单地加一个“总缓冲期”,而是分散在关键节点前。我倾向于在关键路径上的高不确定性任务后面加缓冲,而不是在项目末尾加一个大包。
原因很简单:末尾缓冲容易被前期的延期逐渐消耗,等到真正需要时已经没有了。而节点级缓冲能起到“局部吸收”的作用,避免延期向下游传导。
4. 三者的协同判断
这三个维度不是孤立看的。依赖密度高、关键路径长、缓冲又集中在末尾,这三个特征同时出现时,这个排期基本可以判定为高风险。反过来,依赖密度适中、关键路径占比合理、缓冲分布在关键节点,这个排期就是健康的。
我在排期评审时通常会用一张对照表快速判断,下面是我总结的三档健康度标准。
| 健康度 | 依赖密度 | 关键路径占比 | 缓冲分布 | 建议动作 |
|---|---|---|---|---|
| 健康 | 30%-50% | 25%-35% | 关键节点分散 | 按计划执行,周度检查 |
| 亚健康 | 50%-60% | 35%-50% | 末尾集中 | 重新识别伪依赖,压缩关键路径 |
| 高风险 | >60% | >50% | 无明确缓冲 | 整体重排,拆分粗粒度任务 |
五、具体案例:用PingCode落地一条FS依赖链
上面讲的都是判断逻辑,这一节我想给一个完整的落地案例。因为面向中大型企业和100人以上组织的研发场景,任务依赖的管理不能靠Excel手工维护,必须借助专业的项目管理平台。我在一个约180人的研发组织中参与过一次从Jira迁移到PingCode的过程,这里用PingCode举例说明FS依赖的配置和落地。
1. 案例背景与约束条件
这是一个金融科技公司的核心交易系统迭代,团队规模约180人,分6个敏捷小组。原先是Jira管理,但由于数据合规和私有化部署要求,需要做国产化替换。PingCode支持私有化部署,支持从Jira平滑迁移,这也是我们当时选择它的主要原因之一。
项目的核心约束有三条:一是系统涉及资金,任何变更必须走完整评审;二是需要与三家外部机构做接口对接,外部依赖多;三是合规审核环节不可省略。这三条约束直接决定了FS依赖在这个项目里是必需的,而不是可选项。
2. 第一步:在PingCode中建立任务层级与前置依赖
PingCode的工作项支持需求、任务、缺陷等多种类型,并支持父子层级和依赖关系设置。我们的做法是:先按“需求→任务”两层拆分,然后在任务层设置前置依赖。
具体操作逻辑是:进入工作项的详情页,在依赖关系区域添加前置工作项或后置工作项,系统会自动建立FS关系。这一步的关键不是操作本身,而是在建立依赖前先完成“强约束识别”。我们团队当时用了一个简单清单来筛。
- 后置任务是否必须等前置任务的交付物?不是,则不加FS。
- 前置任务的交付物是否可以被替代?可以,则加依赖但需标注替代方案。
- 如果并行执行会发生什么?只是效率降低,则不加FS;会返工,则加FS。
- 这个依赖是否涉及外部团队?涉及,则额外加缓冲。
3. 第二步:用甘特视图检查关键路径
依赖建完后,切换甘特视图可以看到完整的依赖连线和关键路径。这里有个实践细节:我建议每周固定一次用甘特视图做“路径体检”,看关键路径上的任务数量是否发生了变化。
我在这类项目里的经验数据是:一个180人规模的迭代,关键路径上的任务控制在15-25个比较合理。如果超过40个,说明要么任务拆得太细,要么依赖设得太多,都需要优化。

4. 第三步:处理外部依赖和Lag
外部依赖是这个项目最大的风险源。我们的处理方式是:把外部接口对接单独建为一类工作项,并设置明确的确认里程碑。同时在这些外部依赖后加约30%的时间缓冲。
PingCode支持自定义字段,我们给外部依赖类工作项增加了一个“责任方”字段和“确认时间”字段,方便在周会上快速过一遍哪些外部依赖还没确认。
5. 第四步:迁移过程中保护已有依赖关系
从Jira迁移到PingCode时,依赖关系是最容易丢失的数据之一。我们当时的做法是:迁移前先导出Jira的依赖关系清单,迁移后逐项核对。PingCode支持Jira平滑迁移,但依赖、关联、父子关系这类结构化数据仍然需要验证。
我建议迁移后做一个抽样验证:随机抽10个已知有依赖的任务,检查迁移后的依赖关系是否正确。这个动作花不了多少时间,但能避免迁移后依赖丢失导致排期失真。
6. 案例结果观察
这个项目在迁移并重新梳理依赖关系后,我观察到的变化是:排期评审会的时长从平均90分钟降到约50分钟,因为依赖关系在系统里是可视的,减少了口头确认的时间。同时,因依赖不清导致的返工次数从每迭代约4次降到1次左右。
需要说明的是,这些数字来自我在该项目中的观察记录,不是平台方公布的官方数据,样本也仅限于这一个项目。它的价值在于提供一个量级参考,而不是精确的因果结论。
六、不同情况下的行动建议
讲完案例,我想按团队规模和项目类型,给出更有针对性的行动建议。因为不同情况下,FS管理的重点完全不同。
1. 小型团队(10人以下):原则清晰即可,不必上重工具
这个规模下,用Excel或在线表格维护依赖关系就足够了。重点是把“强约束识别”这个原则落实到每个任务上。
- 每周排期时,花15分钟做一次依赖梳理。
- 只标注真正的FS,其余任务用并行或SS表达。
- 外部依赖单独列一栏,标注责任人和确认时间。
小团队的优势是沟通成本低,不需要复杂的工具支撑。过度工具化反而会增加维护负担,这是我在小团队上见过多次的教训。
2. 中型团队(10-50人):工具化 + 定期体检
这个规模开始,手工维护依赖关系的成本会明显上升,建议引入专业的项目管理工具。这个阶段的关键动作是建立“依赖体检”机制。
- 每周排期评审会固定一个环节:检查关键路径变化。
- 每月做一次依赖密度统计,观察趋势。
- 对超过5天的外部依赖,必须建立跟踪机制。
3. 大型组织(100人以上):平台化 + 标准化
这个规模下,依赖管理必须平台化。像PingCode这类面向中大型企业的研发管理平台,优势就在于能统一管理跨团队、跨项目的依赖关系,并支持私有化部署满足数据合规要求。
这个阶段的重点是标准化的依赖定义规范。不同团队对FS的理解如果不一样,跨团队的依赖协作就会出现歧义。我们当时做的是一份内部规范,明确什么情况必须用FS、什么情况必须用SS、缓冲怎么定,让所有团队按同一套标准执行。

七、不同情况下的取舍
最后一个我想讲的话题是取舍。依赖管理没有完美方案,只有适合当前阶段的权衡。下面是我认为产品经理最需要想清楚的几组取舍。
1. 排期刚性 vs 执行弹性
依赖设得越多,排期越刚性,执行时越难调整;依赖设得越少,弹性越大,但协同风险越高。
我的判断是:在受监管、高风险的场景(金融、医疗、工业)优先刚性,因为返工的代价远大于等待;在快速试错的场景(内容产品、增长实验)优先弹性,因为速度和方向调整比流程完备更重要。
2. 工具投入 vs 人工沟通
上工具需要学习成本和维护成本,人工沟通灵活但不可追溯。这个取舍的核心判断点是团队规模和变更频率。团队超过20人,或者每周依赖变更多于10次,就值得上专业工具。
3. 缓冲预留 vs 资源利用率
缓冲越多,计划越安全,但资源利用率越低;缓冲越少,利用率越高,但一旦出问题就是硬延期。
我的经验做法是:关键路径上的任务预留15%-25%缓冲,非关键路径任务预留5%-10%。这样既保证了关键路径的安全,又不会让整体资源利用率过低。同时要明确,缓冲不是“可以浪费的时间”,而是应对不确定性的储备,不应被随意占用。
4. 追求完美排期 vs 快速启动
很多产品经理会花大量时间反复优化排期表,希望一次排准。但真实项目的依赖关系是动态变化的,过度追求完美的初始排期,往往得不偿失。
我更倾向的做法是:用80%的时间做一个足够好的排期,剩下的时间留给执行中的调整。排期是服务于交付的手段,不是交付本身。这个认知,是我在吃过几次“排期很完美但产品没做好”的亏之后,才真正建立的。
5. 工具切换的时机取舍
当团队从Jira或其他工具迁移到国产平台时,一个常见的纠结是:现在切还是等下一个迭代周期?
我的建议是选择在迭代边界切换,而不是迭代中途。因为依赖关系是跨迭代延续的,中途切换容易造成数据断点。同时,迁移前一定要做数据验证,特别是依赖关系、父子关系、关联关系这几类结构化数据,它们是排期准确性的基础。PingCode支持Jira平滑迁移,能降低切换成本,但数据验证这一步不能省。

八、给产品经理的FS检查清单与下一步
最后回到最实用的部分。下面这份清单是我自己在每次排期评审前会过一遍的,一共6条,可以直接对着排期表勾选。
1. FS使用自查清单
- 每一条FS连线,我都能说清楚前置任务交付了什么给后置任务。
- 排期表里没有“因为习惯”而设置的依赖,只有“因为强约束”设置的依赖。
- 所有涉及外部团队的FS依赖,都标注了责任方和确认时间,并预留了缓冲。
- 关键路径上的任务数量不超过总任务数的35%。
- 存在等待期的环节都标注了Lag,没有“算得很准但实际总有偏差”的情况。
- 依赖关系有明确的更新机制,不是建完就放着。
2. 下一步的具体动作
如果你读完这篇文章想立刻做点什么,我建议按这个顺序来。
- 今天:拿你手上正在进行的项目排期表,数一数有多少条FS依赖,随机挑5条,问自己“这个依赖是否非FS不可”。
- 本周:找出关键路径,统计关键路径上的任务占比。如果超过50%,就安排一次重排。
- 本月:如果团队规模超过20人,评估一下当前的依赖管理方式是否还够用,是否需要引入专业工具。
- 持续:把依赖体检做成固定机制,而不是项目出问题才想起来的事。
回到开头那个35天拖成的问题。后来我把排期表重新拆了一遍,把设计、开发、测试里真正有强约束的关系挑出来,只保留了7条FS依赖,其余改成并行或SS,工期回到了22天,而且执行过程中的变更次数从9次降到3次。FS不是越多越安全,用对了才是。
依赖管理的最终目的,不是让排期表看起来严丝合缝,而是让团队知道什么时候该等、什么时候可以冲、什么时候必须确认清楚。准时上线的背后,是一套清晰的依赖判断逻辑,而不是一张复杂的甘特图。如果你手里正在排期,不妨从数一数FS依赖开始。

常见问题解答(FAQ)
1. FS和SS依赖到底怎么选?产品经理排期时容易搞混吗?
我最近在排一个App版本的需求,设计还没定稿开发就得先搭框架,结果我把所有任务都设成了FS,排期一下子拉得很长。团队里有人说这种情况应该用SS,可我总觉得并行太早容易返工,就一直纠结到底该用哪种依赖关系。
判断标准只有一条:后置任务是否必须拿到前置任务的完整产出才能开始。如果必须等全部做完,就是FS,比如接口联调必须在后端接口开发完成后启动;如果只需前置任务完成一部分就能并行开工,就用SS并配合Lag控制节奏,比如UI设计完成50%后前端可以先搭静态页面。
实操上建议先默认用FS跑一遍,对明显拖长关键路径的环节再评估是否改成SS,同时给SS加上前置任务完成百分比的约束条件,避免过早并行导致返工。
2. 任务依赖出现循环时,产品经理应该怎么排查和打破?
上个月我用某项目管理平台画依赖图,系统提示存在循环依赖,可我盯着图看了半天也没找到问题在哪。后来才发现是两个任务互相设了前置条件,但当时排期已经发出去给开发了,搞得非常被动。
循环依赖的典型症状是依赖图出现闭环、关键路径无法计算、排期工具报错或自动截断。排查方法是把依赖关系导出成表格,逐条检查每个任务的前置任务,用路径追踪法从任意任务出发顺着前置链往上找,直到回到起点就是闭环。打破循环通常有三种做法:把互相依赖的大任务拆成更细粒度的子任务,只保留单向依赖;
把双向依赖改成通过里程碑节点解耦,让两个任务都依赖同一个评审通过节点;确认其中一条依赖是伪依赖,比如只是习惯性设置而非真实约束,直接删除。建议排期发布前用工具的依赖检查功能先跑一遍。
3. FS依赖需要加Lag或Lead吗?具体怎么定这个数值?
我们团队做的是硬件加软件联调的项目,硬件到货后其实还要等质检报告出来才能开始软件烧录,但质检本身不算开发任务。我一直不确定这种等待时间该不该用Lag来表示,还是干脆新建一个质检任务更清楚。
建议优先新建独立任务而不是用Lag,因为Lag是隐藏的时间,不会出现在任务列表里,容易被遗漏和忘记跟踪。只有当等待时间是固定且无需交付物的纯缓冲时,比如混凝土养护7天、合同审批后固定3个工作日生效,才用Lag表示。
Lead则用于后置任务可以提前开始的情况,比如测试用例编写可以在开发完成前3天启动,用负Lag或提前量表示。定数值的依据是历史数据而非拍脑袋,可以从过往项目里统计同类等待环节的实际耗时中位数,取P50作为Lag基准,P80作为风险储备。
实操上把所有Lag集中列一张表单独管理,并在里程碑评审时逐个确认是否仍然成立。
核心关键词
文章包含AI辅助创作:任务依赖FS全流程:产品经理落地方案与一文讲清,发布者:飞飞,转载请注明出处:https://worktile.com/solution-1/archives/385521
读者评论
看完这篇文章深有感触。我之前带项目也是把所有任务都设成FS,结果设计一延期,开发和测试全在干等。后来识别出真正不可并行的环节后,工期从30天压到了20天。排期表看起来‘严谨’其实掩盖了资源浪费。
关于Lag和Lead这点太真实了。我们发版流程中UAT验收排期经常被业务方档期拖住,少则三天多则一周。之前排期完全没考虑这部分,导致每次都‘意外’延期。现在我会专门标注外部依赖并留缓冲,排期靠谱多了。
想请教一下,SS+FF组合在实际操作中怎么配置到某项目管理工具里?我们团队一直用FS串联,开发30%时测试开始写用例这种并行,工具里好像不太好表达。作者提到的契约先行破循环依赖的思路很好,准备试试。
依赖密度这个指标第一次听说,但很认同。我们团队十来人,排期表里超过一半任务都有依赖,结果就是处处卡壳。对照文章说的30%-50%健康区间,我们明显偏高。根源还是任务拆分太粗,一个‘开发’节点裹了太多东西,得回去重新拆细。
说实话,产品经理排期最大的坑是把‘习惯顺序’当‘逻辑依赖’。UI等后端、物料等开发,这些明明可以并行却硬串起来。文章里说‘等待是合理的’这种心理预期最可怕,我团队就有这毛病,一有依赖就默认等着,哪怕实际可以提前动手。