运筹学视角下资源冲突需求变更的工程化解决方案:以需求排期为例

0 评论 464 浏览 4 收藏 43 分钟

需求排期是产品经理的核心工作,但实际执行中常因资源冲突、依赖复杂而陷入困境。本文从运筹学视角出发,系统拆解排期难题,提出一套可落地的策略调度框架,涵盖信息同步、依赖管理、资源负载等关键维度,助你从被动救火转向主动掌控。

需求排期是每个产品经理的核心工作之一。大家肯定会说,这个不是很简单吗:先判断需求价值确定优先级,然后按优先级排期就行了。但实际工作中,这件事远没有这么简单。

由于组织内权责失衡加上考核导向等因素,需求排期本质上也退化成了一个运筹学中的资源受限项目调度问题(RCPSP)。拆开来看,两边的约束都极其复杂:

需求侧:

  • 数量与协同。 需求数量多,涉及多系统改造,单个系统改造又涉及多域协同-客户订单中心操作服务质量基础数据,环环相扣,任何一环卡住,整个需求就动不了。
  • 时间与节奏。 需求在时间维度上分布不均匀,经常集中下发、集中上线。很多需求上线日期已经定死,只能倒排。过程中还伴随着需求变更和紧急需求插入,计划永远赶不上变化。需求之间还存在先后上线的依赖关系,A 不上线 B 就没法测,牵一发而动全身。
  • 价值判断。 由于跨多国、多域,需求价值判断没有统一标准,最后往往沦为”谁嗓门大听谁”的游戏。优先级不取决于需求本身,而取决于谁喊得最响。资源侧:
  • 总量有限。 研发团队总人数固定,涉及多个岗位,且研发资源多项目共享——同一个人同时在三个项目里打转,每个项目的排期都假设他有 100% 的时间。
  • 可用性波动。 人员经常因为请假、出差、临时支援等原因出现不可用,但排期时往往默认”人人都在、天天都来”,等执行时才发现撞车。在需求上线时间紧急的情况下,这种情况简直要命。
  • 工时不准。 工时全靠研发凭经验上报,安全冗余要么过多(估 5 天实际 2 天,浪费了排期空间),要么过少(估 2 天实际 5 天,拖垮整条依赖链),偏差很难控制。

于是我开始持续 vibe coding 一个需求排期的工具,期望能解决这个问题(暂时无法解决统一的价值判断问题,因为这个取决于组织内的价值判断机制,而这个机制中定性分析多于定量分析)。在这个过程中,我同时逐渐意识到:这不仅仅是我自己遇到的麻烦,而是 B 端系统中普遍存在的场景,思路是共通的,值得深入思考一番。

项目演示地址:

https://schedule-d9gwumlxp26e60447-1443061996.tcloudbaseapp.com/

本文从运筹学视角出发,系统性地拆解资源冲突与紧急需求插入的底层逻辑,梳理这类问题的解决方案设计思路,并给出可落地的策略调度框架。文章后半部分可能比较专业,因为涉及到一些运筹学的知识点,我复制了研究生学习过程中部分课程设计的内容。大家可以自行决定看不看。

一、需求排期工具的设计要点

排期工具的核心价值不是”替人做决策”,而是把冲突摆到桌面上,让 PM 做决策时有据可依。基于这个定位,下面从以下维度聊聊产品设计思路。

1、保证信息的及时性

1.1 排期变更主动触达

排期调整后,相关人应该第一时间知道,而不是等他们自己发现。这个逻辑听起来简单,但很多工具只做到了”排期结果可查看”,没做到”排期变更可感知”。

变更通知至少要包含三件事:谁的需求变了、从哪天变成哪天、为什么要变。形式可以多样化——最简单的是一封邮件或一条飞书消息,进阶的是在甘特图上标出变更对比(旧日期划掉,新日期高亮)。

1.2 进度的及时同步

当前大多数团队的状态是:排期用 Excel 或 Jira,实际进度靠每日站会,两者之间是断裂的。排期工具要做的,是让需求和排期数据成为”活数据”——需求状态变化(如从”开发中”变成”测试中”)后,自动更新排期上的进度条,同时对比实际进度和计划进度的偏差。

偏差超过一定阈值(比如实际比计划晚了 3 天),自动触发预警,提醒 PM 关注。这个”计划 vs 实际”的对比,是排期工具从”一次性计算器”升级为”持续管理工具”的分水岭。

1.3 版本化管理排期方案

排期不是一次性的,而是持续演进的。每次调整都应该留下快照——上周的排期方案、本周的排期方案、紧急插入后的排期方案——都能回溯对比。PM 需要回答”为什么这个需求从 8 月 15 号延到了 8 月 22 号”,而版本历史就是答案。

1.4 降低信息录入的门槛

“信息及时性”的前提是信息能及时录入。如果录入一次需求需要填 20 个字段,PM 大概率不会用。好的做法是:默认值覆盖大多数场景(优先级默认 P2,工时默认 8 小时/天),只要求用户填最核心的字段(需求名、各岗位工时),其他字段在需要时再展开。同时提供预置的示例数据,让用户先看到排期效果,再替换成自己的数据。嵌入当前的办公体系,如:后续迭代版本直接打通飞书的审批环节或者多维表格,数据录入可以更方便。

1.5 排期数据要形成闭环管理

一个需求上线后,要统计实际的工作情况和排期的差异,用来调整缓冲系数,让系统越用越符合团队实际,越用越好用。

2、理清依赖关系,识别关键链,留出缓冲

如果说”信息及时性”解决的是排期的”动态性”,那”依赖关系”解决的就是排期的”结构性”。

2.1 可视化需求之间的依赖关系

很多团队在 Jira 里记录了依赖关系,但没有人真正去看——因为依赖关系是以”链接”形式存在的,看不到全局链路。

排期工具应该把依赖关系画出来。不是做复杂的网络图,而是用最简单的箭头连线,标记”A 完成 → B 才能开始”。PM 看到这张图,就能直观判断:哪些需求是”卡脖子”的(多条链路的交汇点)、哪些需求是”等别人”的(没有下游依赖,排在后面不会影响任何事)。

这个视角的价值在于:当紧急需求插入时,PM 能快速判断”插在哪个位置影响最小”——插在依赖链末端,只影响自己;插在依赖链起点,整个链路都往后推。

2.2 识别关键路径,回答”哪些需求不能拖”

依赖链搞清楚后,下一个问题是:哪条链路的工期最长,决定了整个项目的交付时间?

这就是关键路径的概念。在排期图中,关键路径上的需求用红色高亮——它们的延迟会直接拖长整体工期。非关键路径上的需求用蓝色标记,显示”浮动天数”——即使晚两天完成,也不会影响最终交付。

这个信息对 PM 的决策价值极大。当有人问”能不能临时加个需求”,PM 可以明确回答:”可以,只要不碰关键路径上的四个需求,其他需求晚两天问题不大。”反过来,如果关键路径上的需求进度落后,PM 需要第一时间介入——不是所有延期都值得慌张,但关键路径上的延期一定值得。

2.3 缓冲要集中到关键位置

识别出关键路径后,缓冲的预留策略就清晰了。

常见做法是每个需求都加 20% 缓冲(5 天变 6 天),这种做法简单但有两个问题:一是容易让每个需求都”自动膨胀”——帕金森定律告诉我们,工作会填满分配给它的时间;二是缓冲分散在各个需求中,无法集中应对真正的风险。

更好的做法是识别关键路径后,在关键路径末端集中设置项目缓冲(比如关键路径长度 × 15%),在非关键路径汇入关键路径的位置设置汇入缓冲。这样做的好处是:缓冲集中在能发挥最大作用的地方,同时非关键路径上的需求不会被过度的缓冲拖慢。PM 只需关注缓冲消耗的百分比——消耗 < 33% 是正常范围,超过 66% 就需要干预。

2.4 重视前后端研发的依赖与冲突

研发场景中,最典型的依赖是”前端完成 → 后端开始”(FS 依赖)。但实际出现的冲突往往是:前端做完后,后端在忙别的需求,导致需求空转等待。

排期工具应该自动检测这种”衔接空档”——当某个需求的前端工序完成后,后端工序因资源被占用导致无法立即开始,中间出现了 N 天的等待期。这个等待期就是浪费掉的效率。PM 看到这个信息后可以决定:要么调整后端资源分配,要么接受这个等待期但把需求优先级调低。

3、重视资源的负载管理

排期工具最容易犯的错误是:把人当成”可替换的工时容器”。但现实中,张三和李四虽然都是前端,他们的效率、当前负载、已有任务数都不一样。排期如果不考虑这些差异,做出来的方案执行时会走样。

3.1 从”需求视角”到”人员视角”的切换

大多数排期工具只有需求视角——”这个需求分配给了谁”。但缺少人员视角——”这个人未来两周在做什么”。

好用的排期工具应该支持两种视角一键切换。需求视角适合 PM 做整体规划,人员视角适合技术负责人做资源调配。人员视角下,用日历或时间线的方式展示每个人的任务排布——深色块表示已占用,浅色块表示有空闲。技术负责人看一眼就知道”谁有空接新活”、”谁已经超负荷了”。

3.2 负载均衡不能只看工时,还要看任务数

一个人每天 8 小时,被分配了 8 小时的工作——表面上看负载是 100%,似乎没问题。但如果这 8 小时分布在 5 个不同的需求上,实际效率会大打折扣。因为频繁切换任务会产生切换成本——每次切换需要重新加载上下文,碎片化越严重,有效产出越低。

好的负载均衡应该同时考虑两个维度:工时利用率(这个人被占用了多少时间)和任务碎片度(这个人同时参与了多少个需求)。当一个人的任务数超过合理上限(比如 4 个),即使工时利用率不高,也应该优先把新需求分配给任务数更少的人。

3.3 瓶颈岗位要特殊对待

每个团队都有一个”最忙的岗位”——可能是后端,可能是前端,也可能是测试。这个岗位的人员决定了整个团队的交付速度。

排期工具应该自动识别瓶颈岗位(通过计算各岗位的总负载与总容量的比值),并在排期策略上特殊处理:瓶颈岗位的任务不中断、不空转,确保瓶颈人员前面的前置任务按时完成,不给瓶颈人员制造等待。非瓶颈岗位适当控制任务启动速度,避免在瓶颈前堆积过多”做完了但下游接不住”的半成品。

3.4 人员请假和特殊日期要可见

排期结果和直觉不符,最常见的根因是”排期算法不知道这个人那天请假了”。因此,人员的工作日历必须可配置、可查看。

具体来说:每个人员应该有”工作日历”视图,标注周末、请假日期、特殊工时(如半天)。排期时算法自动跳过不可用日期。PM 在排期结果中看到某个需求比预期晚了一周,点开人员日历就能看到原因——”因为后端张三那周请假了”。

4、紧急需求插入策略设计

紧急需求插入是排期管理中最棘手的场景。没有人喜欢被打断,但现实是打断必然发生。排期工具要做的不是”阻止打断”,而是”让打断的代价可控”。

4.1 支持一键评估影响

紧急需求来了,PM 最需要知道的是三件事:插入后哪些需求会延期、延期多少天、有没有替代方案。

产品设计上,应该提供一个”紧急插入评估”功能——输入新需求的基本信息,系统自动计算并展示三种方案:

  • 方案 A:优先新需求。 插到最前面,列出所有受影响的需求及延期天数。
  • 方案 B:追加资源。 如果加一个人,哪些需求可以不被延期?需要加什么岗位?
  • 方案 C:削减范围。 如果必须保障新需求 + P0 需求,建议延后哪些 P2/P3 需求。

三种方案不需要 PM 手动计算,一键生成,PM 做决策后选择执行。

4.2 方案对比要可视化

文本描述(”需求 A 延期 3 天,需求 B 延期 2 天”)不如一张对比图直观。并排展示原方案和新方案的甘特图,把变化的部分用不同颜色标出来——延期的需求用红色,提前的需求用绿色,不变的需求用灰色。PM 一眼就能看到”代价是什么”。

4.3 保留手动微调入口

再好的算法也不可能覆盖所有场景。紧急插入评估给出的方案是”建议”,PM 可能需要在此基础上微调——把某个需求往后挪两天、把某个需求换个人做。排期工具应该支持甘特图上的拖拽调整和人员手动更换,调整后自动重新计算影响范围。

5、支持团队协作

排期方案最终是要给团队执行的。如果团队看不到排期、不理解排期、不信任排期,方案再好也推不下去。

5.1 排期要可分享

排期结果应该支持导出和分享——导出甘特图截图用于周报、导出排期明细表用于邮件、生成分享链接发给干系人。不是每个人都会打开排期工具,但每个人都需要知道排期。

5.2 排期要可追溯

团队成员收到排期变更通知后,应该能点开查看”变更了什么”——新旧日期对比、变更原因、是否影响自己的任务。不是”你的需求延期了”就完了,而是”你的需求从 8 月 15 号延到 8 月 22 号,因为紧急需求 X 插入了,预计影响你的下游需求 Y”。

5.3 排期要可参与

团队内应尽可能的将所有的需求工作录入系统进行管理,否则系统无法考虑到所有因素,自然就会出现状态漂移的问题。

PM 制定排期方案后,技术负责人应该能对关键路径上的需求进行确认——”这个需求的工期估算合理吗?这个人够不够?”确认后的需求锁定排期,锁定的排期不会被自动重排覆盖。这样既保证了 PM 的全局优化能力,又保留了对技术判断的尊重。

二、运筹学视角下的排期逻辑解释

研发排期问题在运筹学中有一个精确的数学对应:资源受限项目调度问题(RCPSP, Resource-Constrained Project Scheduling Problem)。形式化表述如下:

给定:

  • J = {J₁, J₂, …, Jₙ}:n 个需求(任务)
  • R = {R₁, R₂, …, Rₘ}:m 种可更新资源类型(前端、后端、测试等岗位)
  • Kₖ(t):资源 k 在时段 t 的可用容量(每人每日 8 小时)
  • dⱼₖ:需求 j 对资源 k 的需求量(工时)
  • E = {(i, j) | i 必须在 j 之前}:优先关系(依赖)

求解:每个需求 j 的开始时间 Sⱼ,满足:

1.依赖约束:Sⱼ ≥ Sᵢ + pᵢ,∀(i, j) ∈ E

2.资源约束:Σ rⱼₖ ≤ Kₖ(t),∀k, ∀t

3.非负约束:Sⱼ ≥ 0

目标:最小化 makespan = max(Sⱼ + pⱼ),即总工期最短。

RCPSP 是经典的 NP-hard 问题。这意味着不存在多项式时间的精确算法——当需求数超过一定规模(通常 > 50),精确求解的时间可能从秒级膨胀到小时级甚至不可解。这也是为什么学术界和工业界都对这一问题投入了大量研究:它足够难,又足够普遍。

研发排期相比经典 RCPSP 还有三个额外的复杂性维度:

第一,多目标冲突。最短工期不是唯一目标。项目经理还关心负载均衡(不能把 80% 的活堆给一个人)、碎片化最小(一个人同时做 5 个需求不如专注做 2 个)、高优先级保障(P0 零延期是硬约束)。这些目标之间天然存在矛盾——追求全局工期最短可能需要让高负载的人继续扛,而追求负载均衡则可能延长工期。

第二,不确定性。经典 RCPSP 假设所有参数已知且不变。但现实是:工时估算从不准确(偏差 ±30% 是常态)、人员可能请假或离职、需求优先级频繁调整、紧急需求随时插入。这意味着排期不是一次性的静态优化,而是持续的动态调整。

第三,人在回路。排期结果不是给机器执行的,而是给团队看的。一个排期方案如果 PM 不理解、不信任,算法再先进也没有意义。这就要求排期策略必须具有可解释性——每一步的决策逻辑应该能被人类理解。

三、资源冲突的运筹学解法

从运筹学角度看,解决资源冲突的本质是在”优先约束 + 资源容量约束”的双重限制下,寻找一个可行的调度序列。以下是几种可行的策略,目前我的系统里仅实现了前两种。

1、贪心优先级调度(Greedy-Priority)

算法定位:基于优先规则的构造式启发算法(Priority Rule-Based Constructive Heuristic)。

核心逻辑:

1.拓扑排序(Kahn 算法)确定合法执行顺序,同时检测循环依赖

2.在拓扑约束内,按 P0 > P1 > P2 > P3 排序,紧急需求同级前置 0.5

3.对每个需求,逐岗位选最早能完成的人员(或通过多目标评分选最优人员)

4.逐日分配工时,精确到每人每天 8 小时上限

为什么有效:贪心优先级直接映射 PM 的决策逻辑——”P0 必须零延期,P3 可以适当牺牲”。每一步的分配决策透明,PM 能理解为什么某个需求排在特定日期。同一输入永远输出相同结果,不存在随机性。

局限性:贪心策略可能陷入局部最优。例如,一个 P1 需求工时很短但依赖链很长,被排在 P0 后面;而一个独立的 P0 需求在其前面长时间占用资源。如果 PM 将所有需求都设为 P0,策略退化为纯拓扑序排程,失去优化效果。此外,贪心策略只看优先级标签,不考虑业务价值——一个 P2 但价值 90 的需求,可能比一个 P0 但价值 20 的需求更值得优先投入。

适用场景:关键需求有硬性截至日期(合规、安全修复);优先级由高层决策者严格把控;团队规模较小(< 20 人),依赖关系相对简单。

2、WSJF 加权最短作业优先

算法定位:Smith 规则(Smith’s Rule)在多资源环境下的变体。

核心逻辑:

WSJF=业务价值(value,0-100)/总工时(所有岗位 estimatedDays 之和)排序:WSJF越高越优先 → 先做”投入产出比最高”的需求

为什么有效:在单机调度问题中,按 processing_time / weight 排序可最小化加权完成时间之和。WSJF 是它的倒数形式——按 weight / processing_time 排序。虽然多资源、多工序、有依赖约束的 RCPSP 中 WSJF 不再具有理论最优性保证,但它提供了极强的经济学直觉:”花最少的时间获得最大的价值”——这个逻辑对业务方非常直观。

实战验证:在 Priority/Value 错位场景(5 个需求,P0 低价值 vs P2 高价值)的测试中,WSJF 的 makespan 比贪心优先级短 2 天。因为 WSJF 优先处理高价值密度的任务,减少了后端资源等待。但在菱形依赖网场景中,两种策略的 makespan 相同——拓扑约束锁死了执行顺序,策略差异被依赖关系消解。

局限性:忽视依赖链长度——一个 WSJF 高但依赖链长的需求,可能因为前置依赖未完成而长时间等待,反而降低实际吞吐量。价值量化也高度主观,不同 PM 对同一需求的估值可能差距巨大。极端情况下,value=20 但 1 天的需求永远排在 value=100 但 30 天的需求前面——但后者可能才是战略核心。

适用场景:迭代开发中,每个迭代有统一的交付目标;Product Owner 能给出相对可靠的价值评估;团队追求”快速交付高价值功能”而非”零延期保障”。

3、TOC 瓶颈约束对齐

算法定位:约束理论(Theory of Constraints)在生产调度中的应用,属于基于瓶颈的调度策略。

核心逻辑(五步法):

1.识别瓶颈: 计算各岗位长期负载,负载最高的岗位即为瓶颈(通常是后端或前端)

2.挖掘瓶颈: 确保瓶颈资源不闲置——其任务不间断,不因等待前置而空转

3.从属瓶颈: 非瓶颈资源以瓶颈节奏为”鼓”,控制启动时间,避免在瓶颈前堆积过多在制品

4.提升瓶颈: 若仍无法满足需求,建议增加瓶颈资源

5.重复: 瓶颈可能转移,需持续监控

Drum-Buffer-Rope(DBR)机制是 TOC 的核心操作框架:

1.鼓(Drum): 瓶颈资源的排程节奏

2.缓冲(Buffer): 在瓶颈前设置时间缓冲,确保瓶颈不因上游延迟而等待

3.绳(Rope): 限制非瓶颈资源的 WIP,避免在瓶颈前堆积过多在制品

为什么有效:TOC 不追求局部优化,而是识别并管理全局约束点。运筹学中有一个核心洞察:瓶颈资源的调度决定了整个系统的产出。优化非瓶颈资源不会提升系统整体表现。这与系统工程”整体最优 > 局部最优”的理念高度一致。通过 WIP 限制减少在制品堆积,减少多任务切换成本,提高需求流动速度。

实战验证:在资源紧张场景(如 2 前端 + 5 后端,后端负载 120%)中,TOC 的 makespan 与 OPT 全局最优解相同(均为 10 天),而 WSJF 因优先处理长前端需求导致后端大量等待,工期拉长 40%。TOC 在保持接近最优工期的同时,还提供了比 OPT 更强的可解释性——”瓶颈是前端,后端等前端,而不是前端等后端”。

局限性:在研发场景中,瓶颈可能随需求类型变化而漂移(前端重需求 vs 后端重需求),静态瓶颈假设可能失效。TOC 不区分需求的优先级/价值,在瓶颈前排队的需求按到达顺序或 WSJF 处理。严格的 WIP 控制可能导致非瓶颈资源空闲等待,使某些非关键路径需求延后。

适用场景:大型项目(> 30 需求),资源瓶颈明显;后端/前端重度不均衡的团队;追求”持续稳定交付节奏”而非”单个需求最快交付”。

4、多目标负载均衡:让贪心不再”偏心”

以上四种策略解决的是”谁先谁后”的排序问题,但还有一个更微妙的问题:同岗位多个人时,如何避免旱的旱死、涝的涝死?

当前贪心策略在同等条件下选”最早完成”的候选人,不关心负载分布。结果可能是:2 个前端 A 和 B,前 5 个需求全分给 A,A 利用率 140%,B 利用率 20%。

解决方案是引入多目标评分函数,替代单一”最早完成”指标:

score(c)=0.6× timeScore+0.3× utilScore+0.1× fragScore其中: timeScore =endDays/90 — 工期归一化(越小越好) utilScore =candidateUtil/avgUtil — 负载均衡(&amp;lt;1受鼓励) fragScore =taskCount/maxTasks — 碎片化惩罚(越小越好)

这是多目标优化的线性加权和标量化方法。权重分配 (0.6, 0.3, 0.1) 反映了”工期优先、负载均衡次之、碎片化最末”的偏好结构。三个评分项均做归一化处理(映射到 0~1 区间),确保不同量纲可比。

权重分配具有场景敏感性。在”发布倒计时”场景下,timeScore 权重应提高至 0.8;在”团队稳定性优先”场景下,utilScore 应提高至 0.5。当前固定权重适合通用场景,但建议通过配置开关允许场景适配。

四、紧急需求插入的运筹学解法

如果说资源冲突是排期的”结构性问题”,那紧急需求插入就是排期的”事件性问题”。前者可以通过策略设计来系统性地缓解,后者则需要一套动态响应机制。

紧急需求插入在运筹学中对应”重调度问题(Rescheduling Problem)”。给定一个已部分执行的排期方案,当新需求(或资源变化)出现时,需要生成一个新的排期方案。核心挑战在于:

1.当前状态不可逆: 已过去的天数中已完成的工作不能被”撤销”

2.方案稳定性: 理想的重调度应在满足新约束的前提下,最小化对已有排期的变更——因为每次变更都意味着沟通成本、上下文切换成本和团队士气损耗

3.响应实时性: 紧急需求的”紧急”意味着决策不能等太久——秒级出结果和分钟级出结果在用户体验上差异巨大

1、A/B/C 三方案评估

具体到研发排期,我设计了三种情景对应的方案:

方案 A:优先新需求(目标函数变化)在目标函数中赋予新需求极高权重,重新求解。相当于问:”如果这个新需求是最高优先级,哪些已有需求会受影响?影响多大?”计算结果会列出所有结束日期延后的需求及其延期天数。

方案 B:追加资源(约束松弛)改变约束条件的右端值——增加资源容量。相当于问:”如果加一个人,能不能不延期?需要加什么岗位?加几个人?”根据资源缺口分析,推荐增加对应岗位的人员数量。

方案 C:削减范围(变量删除)删除低优先级需求(变量)后重新求解。相当于问:”如果必须保障新需求和其他 P0 需求,哪些 P2/P3 需求可以延后或砍掉?”

这三种方案分别对应运筹学中三种不同的”What-if”分析路径——改变目标函数、松弛约束、缩小问题规模。它们不是让 PM 三选一,而是将每种选择的代价量化呈现,让 PM 在信息充分的前提下做权衡。

2、缓冲预留方案

如果每次紧急插入都导致全面重排,说明排期本身缺乏对不确定性的吸收能力。缓冲预留(Buffer)是应对不确定性的关键机制。

比例缓冲(简单方案):

adjustedDays=ceil(estimatedDays ×(1+bufferRatio))

默认 bufferRatio = 0.2(20%),即 5 天 → 6 天,10 天 → 12 天。每个需求都预留 20% 的安全时间。

关键链缓冲(严谨方案):这是关键链项目管理(CCPM, Critical Chain Project Management)的核心思想:

1.识别关键路径

2.在关键路径末端设置 Project Buffer(项目缓冲)= 关键路径长度 × 15%

3.在非关键路径汇入关键路径处设置 Feeding Buffer(汇入缓冲)

4.按缓冲消耗率(buffer consumed / buffer total)分三级预警:绿(< 33%)正常、黄(33%-66%)关注、红(> 66%)需干预

比例缓冲的优势是简单,劣势是可能造成”帕金森定律”——工作会膨胀以填满分配的时间。分散缓冲不如集中缓冲(Project Buffer)能有效吸收不确定性。但 CCPM 的实现复杂度远高于比例缓冲,建议 MVP 阶段用比例缓冲,远期升级为关键链缓冲。

五、策略的场景适配与组合使用

策略没有绝对的”最优”,场景决定选择。

1、场景适配矩阵

2、策略全景对比

3、策略组合策略

实践中,单一策略往往不够。最有前景的组合是:TOC 作为骨架(管控瓶颈流动和 WIP),WSJF 作为优先规则(决定瓶颈前排队顺序)。

具体来说:

  • TOC 识别瓶颈资源(如后端),确保瓶颈不闲置
  • 瓶颈前的需求队列按 WSJF 排序(价值/工时比最高的先进)
  • 非瓶颈资源以瓶颈节奏为”鼓”,通过 WIP 限制避免过度生产
  • 每日或事件触发时,AI-RS 做周期性重优化

这种组合既保留了 TOC 的”系统思维”(全局约束点管理),又融入了 WSJF 的”价值导向”(不让低价值需求占用瓶颈资源),还通过 AI-RS 应对动态变化。

六、总结

我们做个总结,一个”好用”的排期工具长什么样

1. 算清楚

把需求、人员、依赖、工时的复杂度算清楚,别让 PM 靠心算。实现层面,可解释性 > 算法先进性这是排期工具的第一原则。PM 不会信任一个”不知道为什么这样排”的方案。一个 PM 能理解并信任的贪心算法,远比一个精确但不可解释的全局优化求解器更有产品价值。具体做法:默认策略选择确定性的贪心构造,而非黑箱求解器;排期结果展示冲突原因——不仅告知”有冲突”,还解释”需求 A 与需求 B 在后端岗位存在资源竞争”;紧急插入输出 A/B/C 三方案并附影响分析,帮助 PM 理解每种选择的权衡代价。

2. 看得见

把冲突、瓶颈、关键路径、负载情况可视化,别让 PM 靠猜。排期失败或部分失败时,信息的组织方式直接决定产品价值。不同角色的信息需求深度不同:

  • 层次 1(冲突摘要): 面向所有用户——”排期完成,发现 3 个冲突:2 个 Deadline 超期,1 个资源不足”
  • 层次 2(冲突详情): 面向 PM——”‘支付漏洞修复’前端缺少 1 人(7月5日-7月12日)”
  • 层次 3(竞争关系分析): 面向技术负责人——”‘支付模块’与’BI看板’在后端岗位存在资源竞争”
  • 层次 4(解决建议): 面向决策者——”建议增加 1 名后端开发,或延后 P3 需求’帮助中心'”

3. 调得动:紧急需求插入后有方案可选、有微调入口、有影响评估,别让 PM 被动接受

4. 跟得上:排期方案能同步到团队、变更能通知到个人、进度能反馈到排期,别让排期变成一次性的静止快照

5. 能进化:要统计实际的工作情况和排期的差异,用来调整缓冲系数,让系统越用越符合团队实际,越用越好用。”垃圾进,垃圾出”在排期系统中尤为致命。如果工时估算不准确,再好的算法也产出无用的排期。这就要求系统具备反馈闭环:记录实际完成时间 vs 排期预估时间,用历史数据校准缓冲系数和工时估算模型。当系统积累了一个季度的数据后,可以自动建议”你的团队后端需求的平均偏差是 +35%,建议缓冲系数从 20% 调整到 30%”。

6、学得会:

排期问题本身极其复杂,但产品体验不能复杂。默认配置即可用(贪心优先级 + 20% 缓冲),新手无需理解任何参数即可一键排期。用户的第一印象应该是”点一下就能排期”,而非”我要先学习 RCPSP 是什么”。

最后多说几句

整篇文章非常复杂,项目vibe coding的过程中也很痛苦,我也反复写了很久spec。

当然,为了解决这个问题,不是只有做系统这一条路,我们最好的选择仍然是进行需求管理的改革,将产品管理层面权责统一,比如:

方案1:产品经理负责进行产品规划,制定产品路线图并进行版本管理;

方案2:设立专门的项目管理人员,统一执行强矩阵式的项目管理;

方案3:执行业务运营-研发运维-产品经理铁三角的产品管理模式,集体对需求生产负责;

但是就像我上一篇文章写到的,由于种种原因,生产组织工作呈现出了外包执行的特征,且组织内的领导者对此现象缺乏改进动力。产品经理进行问题上升后,组织内部永远给出的解决方案是:再去找相关人沟通一下以及加加班。如果你也面临这些问题,那这篇文章对你来说就是有益的。

项目还在探索阶段,目前主要的卡点在于验证各个排期策略的有效性,以及嵌入飞书工作体系中,大家可以关注督促我一下,哈哈。

演示地址如下:

https://schedule-d9gwumlxp26e60447-1443061996.tcloudbaseapp.com/

本文由人人都是产品经理作者【ka】,微信公众号:【一只飘过的产品狗】,原创/授权 发布于人人都是产品经理,未经许可,禁止转载。

题图来自Unsplash,基于 CC0 协议。

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 目前还没评论,等你发挥!