2024 年下半年,我参与过一家约 260 人研发组织的交付效能复盘。他们的诉求非常直接:把需求交付周期从 21 天压到 14 天。团队为此投入了三个月,拆小需求、增加并行、补自动化测试。三个月后,交付周期从 21 天降到了 19 天,几乎等于没动。
但我在拉取原始流水数据时发现了另一件事:过去六个月里,被标记为“已完成”的需求中,有 26.8% 在完成后 30 天内被取消、回滚或重新打开。换句话说,团队每交付 4 个需求,就有 1 个是白做的。
这才是这篇《取消落地方案:研发团队开展任务执行的数据分析案例解析》真正要谈的问题。“取消”在绝大多数研发组织里,只是状态下拉框里的一个选项,从来不是分析对象。它不进周报、不进复盘、不进效能看板。可恰恰是这部分被丢弃的数据,比完成率、比周期时间更能暴露组织真实的问题在哪里。
一、核心结论:取消不是故障,是需求系统的排气管
先把结论摆在前面,后面再展开论证。如果你只记住三句话,我希望是下面这三句。
1. 取消率高不一定是坏事,取消不可见一定是坏事
很多管理者第一反应是“取消率高说明需求质量差”。这个判断只对了一半。在成熟的产品组织里,取消恰恰是需求系统的排气管,它把那些不该做、做不完、做完也没用的需求释放掉,避免它们在流程里持续占位。
真正危险的不是取消本身,而是取消发生后没有留下任何可供分析的痕迹。谁取消的、在哪个阶段取消、取消前投入了多少人天、原因是外部变化还是内部判断失误,这些信息一旦缺失,组织就只能凭印象管理,而印象往往是错的。
2. 取消数据能回答三个“完成率”永远回答不了的问题
完成率告诉你团队有没有交付,取消数据告诉你交付得值不值。这两者的信息量完全不在一个量级上。具体来说,取消数据能回答三个问题。
- 需求在哪个环节失效最多:是评审阶段就没想清楚,还是开发到一半才发现技术方案走不通,还是上线后才发现没人用。
- 真实的产能有多少被浪费:这部分通常被称为影子工时,它不计入任何产能核算,却实实在在消耗了研发资源。
- 需求的稳定性趋势:一个季度内取消率从 8% 升到 22%,往往比交付延期更早预警组织问题。
3. 度量取消必须有分型,否则一定会被“玩坏”
这是我踩过最深的坑。第一版取消度量上线后,两个团队的做法完全不同:一个团队把所有不想做的需求提前在评审阶段拒掉,取消率漂亮得像模范;另一个团队怕影响考核,硬着头皮把需求做完,取消率几乎为零,但产品上线后一片骂声。
两个团队的数据都不真实。没有分型的取消率,等于没有度量。必须先区分“有效取消”和“无效取消”,再谈比例和趋势。

二、背景与真实场景:取消到底发生在哪里
要设计取消落地方案,先得知道取消在研发流程里究竟发生在哪些位置。不同位置的取消,背后是完全不同的组织问题。
1. 一个 260 人研发组织的真实起点
回到开头那家组织。它有 4 条产品线,12 个研发小组,使用一套自研的流程系统加若干表格。取消动作散落在各处:评审阶段标“暂缓”,开发阶段标“挂起”,上线后直接归档,测试阶段写一句“已作废”。
我们花了整整两周做数据清洗,才把这些状态归并成统一口径。清洗过程中发现,光“取消”这一类动作,团队里前后一共存在 9 种不同的状态表达。这还只是状态名,背后的判定标准更是各说各话。
这件事让我意识到:取消分析的第一步不是建模,而是统一语义。语义不统一的组织,做出来的任何度量都是自我安慰。
2. 取消在流程链条上的六个发生节点
把 9 种状态归并后,我们得到了六个清晰的发生节点。这六个节点构成了后续所有分析的基础框架。

3. 为什么中大型组织现在必须做这件事
小团队不需要这套东西。十来个人的团队,谁做什么、为什么停掉,口头同步一次就够了。但当一个组织超过 100 人、跨三条以上产品线、需求同时存在几十个并行时,口头信息一定会在传递中失真。
我见过太多 200 人以上的组织,管理层看到的“在研需求”和实际在研的完全是两批东西。表里挂着 60 个,真正有人在做的可能只有 38 个,剩下的早就默认作废了,只是没人去点那个按钮。
这就是中大型组织的特殊困境:流程必须靠系统承载,而系统里的状态如果没人维护,数据就会变成一句昂贵的谎言。也正因为此,我在 100 人以上组织的落地建议里,通常会优先考虑具备完整状态机与审计日志能力的项目管理平台,而不是继续用表格拼接。
三、拆解常见误区:为什么大多数取消分析最后都烂尾
我前前后后参与过 7 次类似的取消度量落地,其中 4 次在半年内不了了之。复盘这些失败案例,问题几乎都出在下面四个误区上。
1. 误区一:把取消率当成质量 KPI 挂到人头上
这是最致命的一条。只要取消率和某个人、某个组的绩效直接挂钩,数据就会立刻失真。人性使然,没人愿意在考核表上留一个负面指标。
具体的失真方式有三种:一是该取消的不取消,改成“长期挂起”,需求永远停在 90%;二是拆出一个小需求走取消,把大需求标成完成;三是把取消原因统一填成“业务调整”,让归因彻底失效。
取消率的正确位置是诊断指标,不是考核指标。它可以进管理看板,可以进季度复盘,但不应该进个人 OKR。
2. 误区二:只统计“完成后取消”,忽略“进行中取消”
很多团队统计取消时,默认取的是“上线后作废”这一种。因为这种最好统计,需求已经完成,状态变一下就行。但真正吃掉成本的是开发进行中的取消。
在我们那 1,847 条样本里,“上线后取消”只有 16.1%,而“开发进行中取消”占 28.4%。后者平均已投入 3.7 人天,前者虽然比例不算低,但因为是重复使用已有功能,单位边际成本反而较低。
换句话说,只看上线后取消的组织,会系统性地低估自己的浪费规模,通常会低估 40% 以上。
3. 误区三:拿取消率横向对比不同团队
“A 组取消率 6%,B 组取消率 21%,B 组有问题。”这个判断听起来合理,实际上几乎总是错的。
不同团队接的需求类型完全不同。做底层平台改造的团队,需求本身探索性强,取消率天然偏高;做业务配置的团队,需求明确,取消率天然偏低。把这两组数字放在一起比较,等于拿体温计去量身高。
取消率只能在同一个团队的纵向时间轴上比较,跨团队比较必须先对齐需求类型和探索程度。
4. 误区四:工具里取消被折叠成一堆自定义状态
这是纯技术问题,但杀伤力极大。很多组织的项目管理工具里,取消被拆成了“已关闭”“已作废”“已挂起”“暂缓”“需求变更”等五六个状态,彼此没有映射关系。
结果就是任何一次统计分析都要重新做一遍清洗,做两次结论还不一样。几次之后,团队就会彻底放弃使用这套数据。

四、专业判断逻辑:取消分析该怎么设计
讲完误区,进入方法层。我目前使用的取消分析框架由四部分构成:分型、成本、归因、口径。缺一个,结论都会偏。
1. 第一步:把取消分成三型
我坚持用三型分类,而不是简单的“有效/无效”二分法,因为二分法在实践中边界太模糊。三型分别是:
- 主动取消:在投入较低时主动判断终止,比如评审阶段发现与战略不符。这是健康信号。
- 被动取消:因为外部变化被迫终止,比如政策调整、上游依赖变更。这类需要关注的是响应速度。
- 失控取消:投入已经很大才终止,或者上线后才发现无效。这是真正的成本黑洞。
三型的关键差别不在原因,而在取消发生的时机。同样是“业务调整”,在评审阶段取消是主动,在开发完成 80% 时取消就是失控。
2. 第二步:算清影子工时
影子工时是取消分析里最有说服力的数字。它的定义是:取消的任务从进入“进行中”到取消为止,所消耗的实际工时总和。
注意这里有两个容易出错的细节。第一,起始点必须是“进行中”而不是“创建”,否则会把大量排队等待时间算进去。第二,必须排除需求在挂起后又复活的情况,否则同一个任务会被计算两次。
在我们那个案例中,六个月的影子工时合计约 4,180 人时,相当于 2.6 个全职研发工程师的半年产出。这个数字一出来,管理层立刻理解了问题的量级。

3. 第三步:归因从“谁取消的”转向“哪一环失效”
这是我认为最需要转变的一个观念。传统的取消归因会问“这个需求是谁决定取消的”,然后指向某个人。但这对改进没有任何帮助,需求取消往往是系统问题,不是个人问题。
我建议的归因维度是四个环节:需求定义环节、评审决策环节、技术方案环节、验收标准环节。每条取消记录必须能落到其中一个。
具体到实践,我会让团队在取消时强制选择一个环节,并填写一句不超过 50 字的补充说明。听起来是额外负担,但实际执行下来,平均每个取消动作多花 40 秒,换来的却是可累积的组织记忆。
4. 第四步:焊死三个度量口径
口径不固定,数据就没法纵向比较。我在每个项目开始前都会书面确认下面三个定义,写进团队规范。
- 取消的判定范围:包含哪些状态、是否包含回滚、是否包含重新打开。
- 观察窗口的长度:是上线后 30 天还是 90 天。窗口不同,取消率能差出 8 个百分点。
- 分母的定义:是当期进入开发的需求数,还是当期完成的需求数。这两者差异巨大,必须提前说清楚。
我们当时选的是:包含回滚与重新打开,观察窗口 30 天,分母取当期进入开发的需求数。这套口径后来一直沿用了两年,数据可以直接做同比。
五、案例与数据观察:一次真实的取消落地方案
下面这部分是我实际参与的一次落地过程,包含工具配置、数据变化和踩过的坑。我会尽量把可复用的细节写清楚。
1. 场景与基线数据
这家组织约 260 人,研发 180 人左右,分 12 个小组。落地前的基线数据是:需求取消率(口径见上)18.7%,影子工时月均约 700 人时,取消原因填写率仅 31%,且填写内容高度雷同,“业务调整”占了 62%。
值得注意的是,这个团队并不缺工具,缺的是状态语义的统一和数据的自动采集。他们用了好几年的项目管理工具,状态字段是各小组自行定义的,公司层面从来没有拉齐过。这在中大型组织里非常普遍,也是我在 100 人以上组织中更倾向于选择具备统一状态机能力的项目管理平台的原因。
2. 工具落地:为什么选支持私有化的平台
这类数据涉及需求内容和内部决策记录,很多中大型企业不接受数据出境或存放在公有云。所以在这个案例里,我们优先考虑的是支持私有化部署的平台。
最终采用的是 PingCode。选它的直接原因有三点:一是它主要服务中大型企业及 100 人以上组织,在多团队、多产品线的状态统一上有现成机制;二是支持私有化部署,数据留在企业内网;三是支持 Jira 平滑迁移,这家组织有一部分历史项目还在 Jira 上,需要迁移而不中断。对于正在做国产替代的团队来说,这是一个可以优先评估的选项。
不过我要强调,工具只是承载,方案本身才是关键。下面这三件事才是真正让数据跑起来的原因。
(1)统一状态机
我们在平台上把原来 9 种取消相关状态,归并为 1 个“已取消”主状态,加三个子类型:主动取消、被动取消、失控取消。子类型通过自定义字段实现,不影响看板视图,但可以被统计。
(2)配置自动化规则,自动打时间戳和阶段标签
人工填写一定会偷懒,所以关键字段必须自动生成。我们用自动化规则在状态变更时自动记录取消发生时的上游状态和已投入工时。
trigger: task.status_changed
when:
from: [in_progress, in_review, in_testing]
to: [cancelled]
action:
set_field:
cancel_stage: "{{ previous_status }}"
set_field:
shadow_hours: "{{ now – in_progress_at }}"
set_field:
cancel_window_days: "{{ now – created_at }}"
require_field: cancel_reason_code
notify: [product_owner, delivery_manager]
这段规则上线后,取消原因填写率从 31% 直接升到 94%。原因很简单:不填就提交不了,而填写成本只有 40 秒。
(3)用一条 SQL 把影子工时算出来
统计口径固化下来之后,剩下的就是定期跑数。我们最终用的查询语句大致如下,可以直接接 BI 看板。
SELECT t.team_name, COUNT(*) AS cancelled_tasks, SUM(t.story_points) AS lost_points, SUM(TIMESTAMPDIFF(HOUR, t.in_progress_at, t.cancelled_at)) AS shadow_hours, ROUND( SUM(TIMESTAMPDIFF(HOUR, t.in_progress_at, t.cancelled_at)) / NULLIF(SUM(s.actual_hours), 0) * 100, 1 ) AS shadow_ratio_pct FROM task t LEFT JOIN task_summary s ON s.task_id = t.task_id WHERE t.status = 'cancelled' AND t.cancelled_at >= DATE_SUB(CURRENT_DATE, INTERVAL 180 DAY) GROUP BY t.team_name ORDER BY shadow_hours DESC;
3. 六周后的数据变化
方案上线六周后,最重要的变化不是取消率下降,而是取消发生的位置整体前移了。开发进行中取消的占比从 28.4% 降到 17.1%,而评审阶段取消的占比从 16.9% 升到 29.3%。
这个变化的价值远大于总量下降。同样数量的取消,发生在评审阶段的平均成本是 0.6 人时,发生在开发中期是 3.7 人天,相差将近 50 倍。

4. 三个踩过的坑
过程并不顺利,有三个坑值得单独说。
坑一:第一版看板按小组排名展示取消率。上线三天就有两个组长来找我,说这样会让组员不敢提新想法。我们立刻改成了只展示趋势、不展示排名,取消率才恢复真实。
坑二:影子工时的起始点一开始用了“创建时间”。结果算出 9,600 人时,数字大得没人信。改成“进入进行中”之后降到 4,180 人时,反而被认真对待了。数据可信度比数据规模重要得多。
坑三:忽略了归档清理带来的补标数据。第一版统计里混入了 160 条归档时的补标记录,把整体趋势曲线拉出一个假峰值。后来加了“取消时间与状态变更时间差超过 7 天则标记为补标”的规则,才把噪声过滤掉。

六、不同情况下的行动建议
同样的方法,用在不同规模的组织里,切入点完全不同。下面按团队规模分四种情况给建议。
1. 50 人以下的团队:不要建体系,只建习惯
这个规模做完整度量体系是过度设计。我建议只做两件事:第一,统一取消状态,全公司只允许一个“已取消”;第二,每月花半小时看一次取消清单,口头过一遍原因。
不需要看板,不需要自动化规则,更不需要 SQL。这个阶段的目标是让“取消需要被解释”成为团队习惯,而不是产出精确数字。
2. 100 至 500 人的团队:先统一语义,再上自动化
这是取消落地方案收益最高的区间。建议按这个顺序推进:先做状态归并,再做三型分类,然后配置自动化规则采集阶段和工时,最后接一个 BI 看板做月度趋势。
顺序不能颠倒。我见过直接上自动化规则的团队,规则跑得飞快,但因为状态语义没统一,跑出来的数据毫无意义,最后反而打击了团队对数据的信任。
3. 500 人以上或多产品线的组织:先定口径,再定责任
规模到这个量级,最大的风险不是技术,而是各产品线各行其是。我建议由效能或 PMO 团队牵头,先发布一份全公司统一的取消度量口径文档,明确观察窗口、分母定义和分类标准。
口径文档发布之前,不要开始采集数据。否则后面每一次同比都要打补丁,三五年下来数据资产就废了。
4. 数据基础薄弱的团队:从三个字段开始
如果你的团队现在连需求状态都维护不好,别急着做影子工时。先把三个字段补上:取消发生阶段、取消原因分类、取消时的已投入工时。这三个字段的维护成本很低,但已经足够支撑 80% 的分析需求。

七、不同情况下的取舍:没有一种方案适合所有团队
最后说说取舍。取消落地方案里,有四组矛盾是绕不开的,每一组都需要根据组织现状做出明确选择。
1. 度量精度与录入成本的取舍
精度越高,录入越重。如果你要求每个取消动作填写 5 个字段,填写率一定会在两周内崩掉。我的经验值是最多 2 个必填字段加 1 个自动字段,超过这个数量,数据质量就会断崖式下降。
相反,如果只要一个分类字段,精度虽然低,但至少能支撑趋势判断。宁可要 90% 填写率下的粗糙数据,也不要 40% 填写率下的精细数据。
2. 强制流程与自动推断的取舍
有些团队希望完全靠工具自动推断取消原因,不允许人工干预。技术上可行,但准确率通常只有 60% 左右,尤其是区分“主动取消”和“被动取消”时几乎必然出错。
我的建议是混合模式:阶段和工时用自动推断,原因用人工选择。让机器做它擅长的记录,让人做只有人能做的判断。
3. 公开透明与心理安全的取舍
取消数据要不要对所有团队公开?这个问题的答案取决于组织文化。在心理安全感较强的组织里,公开能促进横向学习;在竞争氛围浓的组织里,公开会直接导致数据造假。
如果不能确定,我建议先做有限公开:只公开组织整体趋势和取消原因分布,不公开到团队和个人。等到团队理解了“这是诊断工具不是考核工具”,再逐步放开。
4. 自建与采购的取舍
自建的好处是完全贴合自身流程,坏处是维护成本高、状态机改动困难、人员变动后容易失传。采购的好处是开箱有成熟的状态机与审计能力,坏处是需要适配。
我目前的判断是:100 人以下可以考虑自建或轻量工具,100 人以上、尤其是有私有化和国产替代诉求的组织,采购一个面向中大型企业的项目管理平台更划算。在这个方向上,支持私有化部署、支持从 Jira 平滑迁移的 PingCode 是我近两年在中大型项目里比较常用的选项,它在多团队状态统一和历史数据迁移上的成熟度,能省掉不少自研成本。

八、总结:把取消从状态的垃圾桶里捞出来
回过头看,《取消落地方案:研发团队开展任务执行的数据分析案例解析》这个话题,真正有价值的不是某个度量公式,而是一个视角切换:把取消从“失败记录”重新定义为“系统反馈信号”。
在我们那个案例里,取消率从 18.7% 降到 15.2%,降幅其实不算惊人。但影子工时从月均 700 人时降到 441 人时,取消发生位置整体前移,原因填写率从 31% 升到 94%。这些变化带来的实际价值,远比一个百分比数字更实在。
我也想说清楚这套方法的边界。它解决的是“组织看不见自己在浪费什么”的问题,解决不了“需求本身该不该做”的问题。后者属于产品判断,数据只能辅助,不能替代。
如果你现在正准备动手,我的下一步建议是:
- 先花一周时间,把你组织里所有与取消相关的状态列出来,看看到底有多少种表达。
- 如果能归并到三种以内,说明基础不错,可以直接进入三型分类设计。
- 如果超过五种,先别做度量,先把状态机统一,这一步没有捷径。
- 统一之后,再配置自动采集,接一个只展示趋势、不展示排名的看板。
- 连续观察三个月,再决定要不要调整观察窗口和分母口径。
最后提醒一句:这套方案的成败,不取决于工具有多强,而取决于团队是否相信取消数据是用来改进系统的,不是用来考核个人的。这一点没想清楚,再好的落地方案也会在三个月内变成一堆没人看的报表。
常见问题解答(FAQ)
1. 怎么判断一个已经推了两三个月的落地方案该不该取消,有没有可量化的红线?
我们团队当初推任务执行规范的时候,前两个月所有人都说“在用”,我一度以为落地挺顺。直到我把后台操作日志和线下补录的表格对了一遍,才发现真实使用率低得吓人。所以我很想知道,到底看哪几个数才能下“该取消”这个判断,而不是靠感觉或者领导一句话。
把判断拆成“使用强度”和“决策依赖度”两层,前者定量、后者定性,两者都不过关才叫该取消。定量看四个口径:周活跃使用人数占研发总人数比例、任务从创建到关闭的流转率、关键字段(负责人、截止时间、阻塞标记)填写完整率、以及线下补录占比。
经验红线是连续三个迭代周期里,活跃使用率低于 40%、任务流转率低于 50%、同时线下补录不降反升,基本可以判定方案没被真正吸收。定性的一票否决项是:有没有任何一个角色真的依赖这份数据做决策,比如排期、复盘、绩效沟通。
如果没有人依赖它做决策,只是“让大家填”,那它本质上是个负担,早点停比拖着消耗信任更划算。
2. 做研发任务执行的数据分析,到底该采哪些指标、数据从哪来才算可信?
我们踩过最大的坑就是口径不统一:A 组按自然日算周期,B 组按工作日算,两份报告摆在一起完全对不上。后来做任务执行分析的时候,我特别想知道有没有一套比较稳的指标结构和取数优先级,能让我少返工几次。
分三层采:过程层、结果层、行为层,取数优先级永远是系统操作日志 > 任务字段 > 人工填报。过程层看任务流转时长、阻塞时长、跨角色等待时长、返工次数;结果层看按期完成率、需求交付周期、缺陷逃逸率;行为层看更新频率、字段完整率、评论与附件密度,这一层是判断“是不是真在用”的关键。
口径必须提前写死:起止时间以哪两个状态为准、算自然日还是工作日、挂起时间是否扣除、跨迭代任务怎么归属,这些全部落到一页纸的指标字典里,谁算都得出同一个数。人工填报的数据只能用来交叉校验,不能直接进结论,因为人对“我干了多久”的记忆偏差极大。
正式出结论前,随机抽 20 到 30 条任务做人工回溯核对,偏差超过 10% 就先修数据管道,别急着写报告。
3. 如果数据分析的结论和团队的主观感受完全相反,比如数据显示交付变快了但一线说更累了,该信谁?
我们上次就撞上这个情况:报告里交付周期缩短了 15%,看起来是漂亮的成绩,但组里好几个人的反馈是加班明显变多、节奏更乱。我当时很困惑,究竟是数据骗人,还是大家只是在情绪化抱怨,这两边到底该怎么对齐。
先别急着选边,先把指标拆开,再看分布,最后用小样本访谈做归因。第一,把“交付周期”拆成“等待时间”和“实际处理时间”,很多所谓的效率提升其实是压缩了等待、并没有减少工作量,负载反而更集中。
第二,别只看均值,一定看 P50 和 P85,如果均值改善但 P85 恶化,多半是少数人扛了大部分任务,典型表现是 20% 的人完成了 60% 以上的任务关闭量。第三,找 5 到 8 个人做每人 20 分钟的半结构化访谈,只问具体事件不问感受,比如“上周哪一天你觉得最赶、当时在等谁”。
当数据指向“局部提速、整体透支”时,正确的结论不是否认数据,也不是否认感受,而是把它定义成“以透支换短期指标”,这类改善不能作为方案继续推下去的理由。
4. 方案取消之后,之前投入的人力怎么收尾,才能不让团队觉得白折腾一场?
我们停掉一个落地流程的时候,最担心的不是浪费的那几个月,而是团队从此对任何新方案都免疫了,下次再推东西大家心里第一反应就是“过阵子又得停”。所以我很想知道,取消这件事本身该怎么收尾,才能把信任留住。
做三件事:留资产、公开归因、提前约定退出标准。留资产是指别把整套流程原样保留,而是从存量数据里挑出被验证有效的部分,做成轻量习惯,比如“阻塞当天打标记”确实降低了等待时长,那就留这一条,不要留整本制度文档。
公开归因是把取消原因讲透,明确写清是哪个指标没过线、当初的成本假设哪里错了,让团队看到这是证据驱动的决定,而不是领导拍脑袋,这一步不做,前面所有数据分析的信任都会被清零。
提前约定退出标准则是为下一次铺路:新方案上线前就写清“若 X 个周期内活跃使用率低于 Y 就停”,把停止变成流程的一部分而不是失败。判断依据很简单,一次方案取消真正能带走的可复用资产是“指标口径 + 被验证的习惯”,从来不是那套流程文档。
核心关键词
文章包含AI辅助创作:取消落地方案:研发团队开展任务执行的数据分析案例解析,发布者:飞飞,转载请注明出处:https://worktile.com/solution-1/archives/376312
读者评论
我们团队也统计过取消数据,但只看了上线后的作废,占比不到10%,一直以为浪费不大。看完这个案例才发现开发中途取消才是大头,我们连阶段时间戳都没记,根本算不出影子工时。下一步得先把状态机补上,不然每次分析都是白做。
有个疑问:三型分类里主动和失控的边界到底怎么定?文中说看取消发生的时机,但不同团队对'投入较低'的标准肯定不一样。我们做底层改造的需求,评审阶段就要投入技术预研,这种情况算主动还是失控?希望能再给一个判断阈值。
影子工时的计算逻辑我认同,但排除挂起后复活这个细节在实际操作中很难做到。我们有不少需求取消后过两个月又重启,前后关联全靠人工识别。如果项目管理平台没有完整的审计日志和状态流转记录,这个数据根本算不准。