把两类任务分开排期,核心不是给它们排先后,而是先给它们两套不同的进入规则:合同内任务按里程碑占用固定产能,临时救火任务只占用预留缓冲,并且必须有人为它挪走某项合同内工作。做不到这一点,再漂亮的排期表也会在第一次救火时失效。
混排成立的前提是:救火任务量小、可预估、且不影响关键路径。只要出现以下任一情况,就应该放弃混排:救火任务单次占用超过总产能的两成;救火任务需要同一名关键角色反复切换;合同内任务已经贴着交付截止日排满。
可以混排时,做法是在每个迭代里留出一段不承诺给合同任务的缓冲时间,救火任务先消耗缓冲,缓冲用完后才动合同任务。不能混排时,做法是把救火任务单独排进一个并行通道,由不承担关键路径的人承接,或者明确推迟部分合同内任务并同步调整交付预期。
判断依据不是任务大小,而是它是否挤占关键路径。一个两小时的修改如果卡在验收前一天,破坏力可能超过一个两天的功能开发。
多个角色对同一件事理解不同,通常是因为各自只看到自己那一部分。把分歧转成可核对的项目,需要一张同时记录两类任务的台账,字段至少包括:来源(合同条款、变更单、口头临时请求)、提出时间、要求完成时间、占用角色、预估工时、是否在关键路径上、是否已确认。
台账的作用是让“这是合同里的”和“这是临时加的”变成可以对照的记录,而不是各自记忆里的说法。每次周会只做三件事:核对台账、确认缓冲消耗、决定下一周是否要挪动合同内任务。
实施动作可以这样设计:规定所有临时请求必须先进台账,未进台账的不进入排期;每周固定时间集中评估一次,而不是随到随做。这样做的直接结果是救火任务从“随时插入”变成“批量进入”,排期的可预测性会明显提高。下一步再根据连续几周的缓冲消耗情况,决定是扩大缓冲还是收紧临时请求的准入。
如果团队里有人不承担合同内关键路径,把救火任务集中给他,合同内任务按原计划推进。此时排期表上两类任务是两条并行线,只在需要跨角色协作时才产生交集。适用条件是救火任务以排查、修改、沟通为主,不需要大量前端或后端深度开发。
如果每个人都背着合同内交付,救火任务就必须显式地替换掉某项合同内工作,而不是叠加。做法是:每接受一个救火任务,就在台账上标记被挤出的合同内任务,并同步通知相关方。被挤出的任务要么顺延,要么缩小范围。这里的关键动作是“替换”而不是“加班”,因为加班掩盖的产能缺口会在下一个里程碑集中爆发。
假设一个排期例子:某周合同内任务预估占用全部产能,此时进来一个临时救火请求,预估占用同一角色半天。若选择接受,就需要从当周合同任务中移出约半天的工作量,并告知对方交付时间相应后移。若无法移出,就应拒绝或协商由其他人处理。这个例子的数字只是说明比较方法,不代表任何真实项目。
有几类情况不能按上面的规则简单处理。第一类是合同本身就包含响应时限的维护条款,这类请求应视为合同内任务,占用预留的维护产能,而不是走救火通道。第二类是涉及线上可用性的紧急问题,此时排期让位于止损,但事后必须补记台账并复盘它挤掉了什么。
容易出错的地方是把“口头答应”当成已排期。口头答应之后没有进台账、没有确认占用谁的时间、没有说明挤出了什么,下一次对账时就会出现双方理解不一致。另一个常见错误是用“这次先特殊处理”反复绕过规则,几次之后缓冲就名存实亡。
排期是否有效,看的是缓冲消耗和任务替换是否有记录,而不是看当周是否所有人都很忙。忙不等于排期合理,能说清每个救火任务替换掉了什么,才说明这套规则真正在运转。