结论先说:把合同内任务放进可预期的节奏里,把临时救火任务单独走一条快通道,但快通道必须设上限,否则合同内任务会被永久挤到后面。只有当救火任务确实影响线上可用性、支付或数据安全时,这条快通道才成立;如果只是页面文案微调、颜色偏好或领导临时起意,它不应该占用同一优先级,否则排期表就失去约束力。
合同内任务的特点是范围已经确认,验收标准、页面数量、功能清单和交付节点相对清楚,排期时可以用周为单位滚动推进。临时救火任务的特点是出现时间不可预测、影响面需要判断、处理时长难以预估。如果两者混在同一列任务里,团队每天先处理“看起来更急”的事,合同内的开发、联调和验收就会被反复打断。
更实际的做法是分两条队列:合同队列按里程碑推进,救火队列按影响等级插队。判断影响等级时看三个信号:是否影响用户完成关键动作,是否影响数据写入或订单状态,是否已经造成对外可见的错误。三个信号里命中两个以上,才进入当天处理;只命中一个,登记后进入下一个可用窗口。
救火通道要写清楚谁能触发、触发后谁暂停原任务、最长占用多久。一个可执行的规则是:每周救火工时不超过总工时的两成,单次处理不超过半天,超过半天必须重新评估是否转为变更单。这样做的好处是合同内任务仍有可承诺的推进速度,救火也不会因为无限扩张而变成新的常态。
假设一个项目本周计划完成三个模板页的联调,同时收到两个临时需求:一个是表单提交后偶发失败,一个是首页横幅换图。前者命中数据写入和关键动作两个信号,进入救火通道;后者只影响展示,登记后等联调完成再处理。这个判断动作会直接影响下一步:救火任务处理完后,需要把被暂停的联调任务重新排到最近的可交付节点,而不是默认它自动顺延。
合同内任务排期时,不要按满负荷计算。把每个里程碑的预估工时乘以一个缓冲系数,再把缓冲集中放在里程碑末尾,而不是平均撒到每一天。这样当救火任务发生时,优先消耗缓冲,而不是直接推迟验收。缓冲用完后仍有救火任务,就必须走变更流程,重新确认范围和交付时间。
一个反例是:如果救火任务长期由同一个人处理,而这个人同时负责合同内的核心模块,那么即使设了工时上限,关键路径仍然会被拖慢。此时快通道的规则失效,需要把救火值班和核心开发拆到不同人身上,或者把核心模块的交付节点整体后移。这个反例说明,排期规则不能替代人力安排。
当旧内容、旧系统或旧合作关系需要退出时,先区分三类资产:仍然产生流量或转化的页面、仍然被内部依赖的数据或接口、只具有历史记录价值的内容。第一类迁移并保留,第二类做只读归档或接口兼容,第三类备份后下线。这个分类动作会决定救火任务的数量:如果旧系统仍在线且被外部调用,退出期间救火任务会明显增加,合同内任务应主动降速或推迟非关键里程碑。
排期上,把退出工作当作一个独立里程碑,而不是散落在日常任务里。给它单独的时间窗、负责人和验收条件。退出完成后,再恢复合同内任务的正常节奏。这样做的结果是,救火任务有明确的结束条件,合同内任务也不会因为旧系统长期半死不活而被持续拖累。
先和对方确认三件事:救火通道的触发条件、每周救火工时上限、合同内任务的缓冲比例。三件事确认后,再排下一周的合同任务和救火值班人。如果对方不接受任何上限,那么合同内任务的交付时间就不能按原计划承诺,需要重新谈范围或节点。这一步的结果会直接决定后续排期是继续按里程碑走,还是转为按周重新协商。