把合同内任务和临时救火任务放进同一张排期表,通常会在第二个月开始失控。更可执行的做法是:合同内任务用固定节奏的里程碑排期,临时救火任务用独立队列加显式置换规则排期,两者不共享优先级序号。是否保留单一队列,取决于救火任务是否真的紧急、是否在服务范围内、以及置换后合同交付是否仍能按约完成。
临时需求常被笼统称为“救火”,但排期前至少要分成三种。第一种是故障型:页面无法访问、表单提交失败、误操作导致关键页面被删。第二种是波动型:某些页面收录或流量出现异常下滑,原因尚未确认。第三种是机会型:临时活动页、热点内容、竞品动作触发的加急需求。
三类任务的排期逻辑不同。故障型适合打断合同内任务,因为不处理会持续扩大影响;波动型适合先做限时的诊断动作,确认原因后再决定是否升级为正式任务;机会型默认不打断合同内任务,除非双方明确同意用合同内任务做置换。
一个可操作的判断顺序是:先确认影响范围,再确认是否在服务范围内,最后确认置换哪一项合同内交付。三步中任何一步没有结论,救火任务就停在待确认队列,不进入执行排期。
合同内任务的特点是范围相对可预期,适合按里程碑而不是按需求到达顺序排。典型做法是把一个交付周期拆成:需求确认、执行、内部检查、交付确认四个节点,每个节点绑定明确的输出物和确认人。
这样排的好处是,当救火任务插入时,受影响的不是“某一项任务”,而是“某个里程碑的某个节点”,置换和延期都能被具体描述。反过来,如果合同内任务只是一张按到达顺序排列的清单,救火任务插进来之后,你无法说明究竟推迟了什么、推迟多久、是否影响整体交付。
适用前提是合同内任务的范围已经写清楚。如果范围本身模糊,里程碑会变成形式,救火任务仍然会挤占全部时间。这种情况下应先收敛范围,再谈排期。
救火任务单独排队,不等于它永远优先。独立队列的价值在于:它不改变合同内任务的优先级序号,而是通过置换规则占用时间。常见规则有三种,适用条件不同。
三种规则里,置换最容易失控的地方是只记录了“占用时间”,没有记录“移除了什么”。结果是合同内任务看起来还在,实际已经无法按原节点完成。因此每次置换都要落到具体条目,而不是只写一句“本周临时支持”。
假设某服务周期内,合同内任务包含十项页面优化和两项结构梳理,按里程碑排为四周。第二周出现三次救火请求,每次占用半天,合计一点五天。如果按置换规则移除一项页面优化,剩余合同内任务理论上仍可在四周内完成。
但如果三次救火请求都集中在同一周,且都需要等待外部确认才能继续,实际占用会超过一点五天,被移除的一项不足以抵消。此时延期的原因不是救火任务数量,而是救火任务的等待时间没有被计入置换。下一步应调整的是置换计量方式:把等待确认的时间也纳入占用,或者规定未确认的救火任务不进入执行队列。
这个例子的假设前提是:合同内任务工时可以拆分,救火任务的影响可以按半天粒度估算。如果实际任务无法按此粒度拆分,置换规则需要换一种计量单位,例如按交付条目而非工时。
在只有一两个项目时,靠沟通和临时判断通常能维持排期。项目数量增加后,会出现三类例外。第一类是救火任务在不同项目间争抢同一批执行资源,单个项目内的置换规则无法解决跨项目冲突。第二类是救火任务的定义被逐渐放宽,机会型需求也开始走救火队列。第三类是合同内任务的确认人缺位,里程碑无法按时关闭,积压被误判为救火任务过多。
因此,个别样本中有效的“救火优先”或“置换即可”不能直接照搬到多项目场景。规模化后需要先固定两件事:救火任务的准入标准,以及跨项目冲突时的裁决顺序。准入标准决定哪些请求可以进入救火队列,裁决顺序决定多个救火请求同时出现时先处理哪一个。这两件事没有确定之前,增加排期工具不会改善结果。
可以立即执行的一个动作是:在下一个交付周期开始前,把当前所有临时请求按故障型、波动型、机会型分类,并标注每一项是否在服务范围内。分类结果会直接决定哪些请求进入救火队列、哪些进入合同内任务、哪些需要另行约定。这一步完成后,再调整置换规则才有依据。