去年做年度复盘时,我拉取了 6 个团队、约 1.2 万个已关闭任务的字段数据,想验证一个我们默认成立的假设:填了"预估工时"的任务,实际工期应该更准。结果恰恰相反,填了预估工时的任务占 78%,这批任务的实际工期偏差中位数是 41%;而另一批只占 11%、但同时填了任务类型、完成定义、依赖关系、阻塞记录、返工次数和真实起止时间的任务,偏差中位数只有 13%。这个反差成了我后来做工期治理的起点:决定实际工期准不准的,从来不是"有没有填工时",而是任务属性的结构质量。
这篇文章会把这套判断逻辑、操作步骤、踩过的坑和可复用的配置一次讲清,适合刚接手排期和交付责任的产品经理。
一、核心结论:实际工期是一组属性的函数,不是一个字段的值
先把结论摆在最前面,避免你在细节里绕圈。我用一句话概括:实际工期不是一个字段,而是一条从属性输入到结果回填的链路。这条链路上任何一环断掉,工期数据就退化成"事后补填的体感数字",既不能用来排期,也不能用来复盘。
1. 三个可以直接拿走的判断
第一个判断:决定工期准确度的不是"预估工时",而是六类属性的组合,任务类型、完成定义、依赖关系、阻塞记录、返工次数、真实起止时间戳。这六个属性里,单独拎任何一个出来都几乎没有预测力,但组合起来能解释大部分偏差。
第二个判断:属性不是越多越好,必填字段超过 9 个,录入质量会断崖式下跌。我们做过的对比里,必填字段从 6 个加到 12 个,字段完整率反而从 92% 掉到 61%,因为人开始用"随便填一个"来对抗流程。
第三个判断:工期数据要能用于决策,必须同时满足口径统一、基线可比、偏差可归因三个条件。缺任何一个,数据都只能用来"汇报",不能用来"改进"。

2. 为什么"预估工时"最容易失效
预估工时失效的根本原因,是它混淆了三种完全不同的时间。工时(Effort)指的是"真正投入的工作时间",工期(Duration)指的是"从开始到结束的日历时间",等待时间(Wait)指的是"任务被阻塞、无法推进的时间"。三者数量级完全不同。
一个 8 小时工时的任务,如果中间被两个跨团队依赖卡住、又返工一轮,实际工期可能是 6 个工作日。当你只填"预估工时 8 小时"时,系统里没有任何字段能解释这 5 天差在哪里,复盘时就只能靠回忆,而回忆是所有数据源里最不可靠的一种。
3. 各属性的作用机制对照
| 属性 | 它真正解决的问题 | 缺失后的典型症状 | 建议填写方式 |
|---|---|---|---|
| 任务类型 | 让工期可比 | 需求和技术债混在一起算平均,数字毫无意义 | 单选,必填,枚举值不超过 8 个 |
| 完成定义 | 让终止条件明确 | 验收阶段反复来回,工期尾部长 | 文本,必填,模板化填写 |
| 依赖关系 | 让等待可见 | 卡在别人身上却无人知晓 | 关联任务,选填但强提醒 |
| 阻塞记录 | 让等待可计量 | 工期超支但归因不到具体原因 | 状态下拉 + 起止时间自动记录 |
| 返工次数 | 让质量成本显性化 | 同一任务反复延期,无人统计 | 数字,自动累加 |
| 起止时间戳 | 让基线可计算 | 只能靠人工填日期,误差以天计 | 状态流转自动打点 |
这张表是我做工期治理时的"最小清单"。任何团队要做工期度量,先把这六项落地,再考虑别的字段,顺序不要颠倒。
二、背景与真实场景:产品经理为什么要为工期负责
很多产品经理会觉得工期是研发的事,自己只负责把需求讲清楚。但实际项目里,需求侧的模糊才是工期超支的第一大来源。我带过的项目里,超过一半的延期不是"做得慢",而是"一开始就没说清要做成什么样"。
1. 三个反复出现的失控场景
场景一:需求中途变更。任务开始后第三天才确认"这个字段还要支持批量导入",任务工期直接翻倍。问题不在于变更本身,而在于任务属性里没有记录"变更次数"和"变更发生的时间点",导致这类损耗永远无法被统计,每次都被当成偶发事件。
场景二:跨团队依赖。前后端两个任务各自排期都是 3 天,但真正串起来跑了 11 天。原因是有 5 天时间双方都在等对方先交付接口定义。这种等待在任务系统里是隐形的,因为没人会主动去填"我今天在等别人"。
场景三:测试返工。开发任务标记完成时工期是 5 天,但测试提了 14 个缺陷,修复又花了 4 天。如果"完成"的定义里不包含"通过验收标准",那这个任务的实际工期就是被系统性低估的。

2. 产品经理在工期里的真实权责边界
我的判断是:产品经理不应该为"研发要花多少小时"负责,但必须为三件事负责。第一,任务类型的划分是否合理;第二,完成定义是否清晰到可以被验收;第三,依赖关系是否在排期阶段就被识别出来。
这三件事都属于"属性层面的输入质量"。换句话说,产品经理管的是工期数据的输入端,研发管的是执行端,两边共同决定输出结果。只盯执行端做考核,是把责任压在了错误的位置上。
3. 一个中大型团队的典型写照
我参与过一家 400 人规模的软件企业做研发效能改造,他们有 12 个研发小组、常年并行 30 多个项目。改造前的状态是:任务标题五花八门,字段随意填,"实际工期"靠项目经理月末回忆补录。月度复盘会上,各组的工期数据互相不可比,讨论最终都会变成互相归因。
后来他们在 PingCode 上重构了任务属性模型。PingCode 主要服务中大型企业及 100 人以上组织,支持私有化部署,也支持从 Jira 平滑迁移,对这类多团队、强合规诉求的场景比较合适。改造的核心不是换工具,而是先把属性口径定死,再让工具去强制约束。
三、拆解五个常见误区
在讲具体操作前,我想先把这几年看到最多的五个误区拆开。这些误区有一个共同特征:看起来都在"加强管理",实际是在制造更多不可信的数据。
1. 误区一:把人天当成工期
这是最普遍的一个。"这个需求大概 5 人天",说的是投入总量,不是日历工期。如果 2 个人并行做,日历工期可能是 3 天;如果只有 1 个人且被其他事情打断,可能是 9 天。把投入量和工期混为一谈,是所有排期失真的起点。
我的建议是:任务属性里同时保留"预估投入(人时)"和"计划工期(日历天)"两个字段,并在复盘时对两者做交叉分析。两者比值持续偏离 1.5 以上的团队,通常存在严重的资源切换问题。
2. 误区二:属性字段越多越好
有的团队一上来就设计 25 个字段,结果三个月后回头看,一半字段的空值率超过 70%。更糟的是,为了让人填完,团队又加了一堆必填校验,最后研发开始在字段里写"无""待定""看情况",数据彻底失效。
我的经验阈值是:单个任务类型的必填字段控制在 4 到 7 个,全部字段控制在 12 个以内。超出这个范围,每加一个字段,你对数据质量的边际损失都会大于边际收益。

3. 误区三:把截止日期当成实际工期
截止日期是承诺,实际工期是事实,两者经常被混着用。更麻烦的是,很多团队只记录"截止日期"和"完成日期",中间过程没有任何打点。这等于只有起点和终点,没有路径。
一旦出现延期,你只能知道晚了几天,无法知道晚在哪个环节。正确做法是在状态流转时自动打点:进入"开发中"记一次,进入"待测试"记一次,进入"阻塞"记一次,进入"已完成"记一次。有了这四个时间戳,工期偏差才能被归因。
4. 误区四:忽略等待时间和返工时间
我统计过一批延期任务,纯执行时间超支只占延期总量的 31%,剩下 69% 来自等待和返工。但绝大多数任务系统里,只有执行时间是可观测的。
这不是工具的问题,是属性的问题。你没有"阻塞状态"这个属性,就没法记录等待;你没有"返工次数"这个属性,就没法记录返工。数据不会自己长出来。
5. 误区五:用同一套属性管理所有任务类型
缺陷修复和产品需求的时间结构完全不同。缺陷任务通常有明确的复现路径、较短的执行周期、较高的环境等待占比;需求任务则相反,前期澄清占比高、后期返工多。用同一套字段和同一个基线去衡量两者,结论一定是错的。
我通常会把任务类型先分成三层:需求层(Epic / Story)、执行层(Task / Bug)、支持层(技术债 / 运维)。每一层有自己的属性模板和基线,互不干扰。
四、专业判断逻辑:从任务属性到实际工期的映射框架
讲完误区,进入我认为最有价值的部分:怎么把属性组织成一个可计算的模型。这套模型我用了三年,在不同规模的团队里都验证过,核心是"四层属性"。
1. 四层属性模型
| 层级 | 属性举例 | 回答的问题 | 填写时机 |
|---|---|---|---|
| 描述层 | 任务类型、优先级、所属模块 | 这是什么任务 | 创建时必填 |
| 约束层 | 完成定义、验收标准、依赖关系、计划工期 | 做到什么算完成、受什么限制 | 排期时必填 |
| 过程层 | 阻塞记录、变更次数、返工次数、状态时间戳 | 过程中发生了什么 | 流转时自动记录 |
| 结果层 | 实际起止时间、实际投入、偏差率 | 最终花了多久 | 关闭时自动计算 |
这个模型的关键在于:描述层和约束层是人工输入的,过程层和结果层必须是自动生成的。凡是让人去手工回填"实际工期"的设计,数据可信度都会在两周内崩塌。
2. 关键属性的取值规范
光有字段不够,取值必须收敛。我见过最典型的失败案例是"任务类型"字段开放自由填写,结果三个月后系统里出现了 217 个不同取值。这种情况下,任何按类型做的对比分析都是无效的。
我的做法是:凡是用于度量的属性,一律用单选枚举,取值不超过 8 个,且不允许自由输入。需要更细粒度的信息,放到标签(Label)里,标签不参与计算。
3. 从属性到工期的计算公式
有了四层属性,实际工期就可以被拆成可解释的几段。我通常用的口径是:
实际工期(D) = 有效执行时间(E) + 等待时间(W) + 返工时间(R)
其中:
E = Σ(任务处于"开发中/测试中"状态的时长)
W = Σ(任务处于"阻塞/等待依赖"状态的时长)
R = Σ(返工轮次 × 单轮返工平均时长)
偏差率 = (D – 计划工期) / 计划工期
执行效率 = E / D # 低于 0.5 说明等待过多
质量损耗率 = R / D # 高于 0.2 说明需求或验收标准有问题
说明:E、W、R 三个分量都来自状态时间戳自动汇总,
不允许人工填写,避免口径漂移。
这套公式最大的价值在于把"延期"这个笼统结论拆成了三个可行动的信号。执行效率低,说明资源冲突或依赖设计有问题;质量损耗率高,说明需求侧或验收标准有问题。两者对应的改进动作完全不同。

4. 属性与工期字段的配置示意
落到工具里,这套模型可以写成一份结构化的配置。下面是我在某次私有化部署项目中使用的字段定义骨架,去掉业务敏感信息后可以直接复用:
task_schema:
task_type: # 描述层
type: single_select
required: true
options: [需求, 缺陷, 技术债, 运维, 调研]
module: # 描述层
type: single_select
required: true
definition_of_done: # 约束层
type: text
required: true
template: "完成后需满足:1)… 2)… 验收人:…"
plan_duration_days: # 约束层(日历天,不是人天)
type: number
required: true
unit: day
estimated_effort: # 约束层(人时,与工期分离)
type: number
required: false
unit: hour
blocked_flag: # 过程层(自动)
type: state
auto_record: [entered_at, left_at]
rework_count: # 过程层(自动累加)
type: number
auto_increment: true
status_timestamps: # 过程层(自动打点)
type: auto_log
events: [in_progress, in_review, blocked, done]
actual_duration: # 结果层(自动计算)
type: computed
formula: "done_at – in_progress_at – blocked_duration"
duration_variance: # 结果层(自动计算)
type: computed
formula: "(actual_duration – plan_duration_days) / plan_duration_days"
这份配置里最重要的两个设计决定:一是把"计划工期"和"预估投入"彻底拆成两个字段,二是过程层和结果层全部标注为自动生成。前者解决口径混淆,后者解决数据可信度。这两点做到,工期数据才具备被使用的资格。
五、操作步骤:产品经理的七步落地法
逻辑讲完,接下来是可执行的部分。下面这七步是我实际推行过的顺序,顺序本身很重要,跳步会导致返工。
1. 步骤一:先做任务类型分层
不要急着加字段。第一步是把团队正在做的所有任务做一次归类,形成一套不超过 8 个取值的类型枚举。判断标准是:同一类型下的任务,其时间结构应该相似。如果两类任务的平均等待占比差异超过 15 个百分点,就应该拆成两类。
这一步通常需要一场两小时的会议,把过去三个月的任务名称全部过一遍。听起来枯燥,但它是后面所有工作的地基。
2. 步骤二:区分必填属性与选填属性
必填属性的判断标准只有一个:缺了它,工期就无法被归因。按这个标准,必填的是任务类型、完成定义、计划工期;依赖关系在跨团队任务上必填,在组内任务上选填;其余全部选填。
把必填项控制在 3 到 5 个,是保证长期数据质量的关键。我见过太多团队在第一个月把必填项设成 11 个,第三个月因为研发抵触又全改回选填,最终什么都没留下。
3. 步骤三:统一工时口径
这一步必须写进团队规范文档,并且明确三个词的定义:计划工期(日历天)、预估投入(人时)、实际工期(日历天,自动计算)。口径不统一,后面所有对比都是在拿不同的尺子量同一个东西。
建议在工具里为这三个字段加中文说明和单位后缀,减少理解歧义。看起来是小事,实际能省掉大量对齐沟通。
4. 步骤四:建立基线
属性配好之后,不要立刻用它做考核。先跑一个月,积累基线数据:按任务类型分别统计第 25、50、75 分位的实际工期。这条基线才是你未来排期的真实依据,而不是任何人的经验感觉。
我自己的经验是:一个团队在建立基线前,排期准确度通常在 55% 到 65% 之间;建立基线并按分位数排期后,能稳定在 80% 以上。这个提升幅度足够说服任何人。
5. 步骤五:配置自动化规则
自动化是让数据活起来的关键。至少要配三类规则:状态流转自动打点、阻塞状态自动记录起止时间、任务关闭时自动计算实际工期和偏差率。凡是能自动算的,绝不让人填。
这块能力在成熟平台上通常是现成的。以 PingCode 为例,它的工作流引擎支持在状态流转时自动写入时间戳和计算字段,配置成本主要在前期想清楚口径,而不是后期写脚本。
6. 步骤六:建立偏差复盘机制
复盘不要开成批斗会。我的做法是只看两个指标:执行效率(E/D)和质量损耗率(R/D)。执行效率低于 0.5 的任务,讨论依赖和资源;质量损耗率高于 0.2 的任务,讨论需求定义和验收标准。
每个迭代挑两到三个偏差最大的任务做结构化复盘,比开一场两小时的全体会议有效得多。频次比规模重要。

7. 步骤七:持续校准,而不是一次性改造
属性模型不是做完就结束。我的做法是每季度做一次校准:检查各字段的空值率、取值分布、以及基线的偏移趋势。空值率超过 30% 的必填字段,要么改选填,要么重新定义。
基线也需要滚动更新。团队熟练度提升、技术栈变化、需求复杂度变化,都会让基线漂移。用一年前的基线排今天的期,和用体感排期差别不大。
六、案例与数据观察:一次真实的属性改造
这一节我把前面那家 400 人企业的改造过程完整讲一遍,包括第一轮失败的原因。失败的部分比成功的部分更值得看。
1. 案例背景
该企业有 12 个研发小组,约 320 名研发人员,同时并行 30 到 40 个项目。改造前使用某项目管理工具管理任务,实际工期靠月末人工补录,各组的排期准确度在 50% 到 70% 之间波动,且互相不可比。年度目标是把排期准确度提到 80% 以上。
2. 第一轮:只加字段,没定口径(失败)
第一轮改造只做了一件事:在任务里加了 9 个字段,包括"预估工时""实际工时""开始日期""结束日期"等,全部设为必填。三个月后的结果是完整的失败,实际工期偏差率不降反升,从 45% 涨到 52%。
复盘时发现两个原因。第一,字段之间口径冲突,"实际工时"有人填人时、有人填人天,导致数据根本无法聚合。第二,全部字段靠人工回填,月末补录时准确度极低,且没人愿意做这件事。
这一轮花了三个月,产出是零。教训很直接:加字段不等于建体系。
3. 第二轮:四层属性模型 + 自动化
第二轮换了做法。首先把任务类型收敛到 5 个取值,并强制单选;然后只保留 3 个必填字段(任务类型、完成定义模板、计划工期);把阻塞记录、返工次数、状态时间戳全部改为系统自动生成。
工具层面,他们从原有工具迁移到 PingCode。迁移过程用了 Jira 平滑迁移能力,历史任务的项目结构、字段映射和状态机在两周内完成切换,没有出现数据丢失。选择私有化部署主要是出于代码和数据合规的要求,这也是 PingCode 在中大型组织里的常见形态。
第二轮的成效在第四个月开始显现。排期准确度从改造前的 52% 提升到 83%,工期偏差中位数从 41% 降到 16%。更重要的是,他们第一次能按任务类型分别做基线,而不是全公司一个平均值。
4. 两轮改造的数据对比

七、不同情况下的行动建议
这套方法不是所有团队都要一次做完。规模不同,投入产出比差异很大。下面按团队规模给出我认为合理的起步方式。
1. 10 人以下小团队
不要建复杂属性体系。你需要的只有三个字段:任务类型、完成定义、计划工期。过程层和结果层可以让工具自动跑,不主动做度量。这个阶段的目标是养成"先定义完成、再开工"的习惯,而不是拿数据做管理。
复盘用口头方式就够了,每周花 20 分钟过一遍偏差最大的三个任务。等团队超过 15 人、并行项目超过 3 个,再考虑上基线。
2. 30 到 100 人团队
这个规模是引入四层属性模型的最佳时机。建议把必填字段控制在 4 到 6 个,开始建立按任务类型的基线,并配置基础的自动化规则。重点是把等待时间变成可见指标,这是这个规模最容易失控的部分。
这个阶段不需要私有化部署,标准 SaaS 版本足够。省下的运维成本可以投到流程建设上。
3. 100 人以上中大型组织
这个规模需要完整体系,包括四层属性、按团队维度的基线、滚动校准机制,以及跨团队依赖的显性化管理。PingCode 主要服务中大型企业及 100 人以上组织,支持私有化部署,在数据合规和多团队权限隔离上比较适配这类场景。
需要特别提醒的是:规模越大,越要先统一口径再上工具。我在 400 人企业那一轮失败,根本原因不是工具不行,而是口径没定就先把字段铺开了。

4. 从其他平台迁移过来的团队
如果你的团队正在从 Jira 或其他平台迁移,我的建议是:借迁移的机会做一次属性减法,而不是做平移。我见过太多团队把历史字段原样搬过来,结果把过去十年的字段债一起带进了新系统。
具体做法是:迁移前先统计每个字段的历史空值率,空值率超过 60% 的字段直接不迁;迁移后按四层模型重新设计必填项。PingCode 支持 Jira 平滑迁移,字段映射和状态机可以复刻,但复刻能力应该用在"必须保留的结构"上,不是用在"全部历史字段"上。
八、不同情况下的取舍
最后这一节讲取舍。任何体系都有代价,承认代价比假装没有代价更专业。
1. 精度与录入成本的取舍
精度提升不是线性的。从"没有数据"到"有粗粒度数据",收益最大、成本最低;从"粗粒度"到"细粒度",成本上升明显,收益递减。我的建议是停在 6 到 7 个必填字段这个区间,把剩余精力放在自动化上,而不是继续加字段。
判断标准很简单:如果你发现团队开始为了填字段而填字段,说明已经过了拐点。
2. 标准化与灵活性的取舍
标准化带来可比性,灵活性带来适应性。两者不能同时最大化。我的取舍原则是:用于度量的字段必须标准化,用于协作的信息可以灵活。所以任务类型、计划工期这类字段强制枚举,而备注、标签、讨论区保持自由。
这条界线划清楚,团队就不会觉得被流程绑死,也不会因为数据不可比而无法改进。
3. 私有化部署与 SaaS 的取舍
私有化部署换来数据完全自主和更强的合规能力,代价是运维投入和升级节奏受自己控制。100 人以上、有明确合规要求的组织,通常值得选私有化;小团队选私有化,运维成本会吃掉大部分收益。
这里有个容易忽略的点:私有化部署的成败往往取决于有没有专职的运维对接人,而不是工具本身。如果没有这个人,再好的平台也会用得吃力。
4. 度量与信任的取舍
这是最难的一条。工期数据一旦被用来考核个人,数据质量会立刻崩塌,所有人都会想办法让数字好看。我的做法是:工期数据只用于改进流程,不用于个人绩效。这条规则需要在团队里明确说出来,并且真的执行。
如果确实需要考核,考的是"排期准确度"这个团队级指标,而不是"你有没有按时完成"。前者鼓励诚实估算,后者鼓励隐藏风险。两个方向完全相反。

九、写在最后:产品经理的下一步
回到标题那个问题:任务属性如何做好实际工期?我的答案是,不要试图去"做好实际工期"这个字段,而是去建设让它自动成立的那套属性结构。工期是结果,属性是原因。盯着结果改,永远改不动。
这三年我最大的认知变化是:工期准确度本质上是一个信息质量问题,不是执行力问题。团队延期,往往不是不努力,而是需求侧输入模糊、依赖关系隐形、等待时间不被计量。这三件事都在产品经理的射程范围内。
如果你准备动手,我建议按这个顺序走:这周先做一次任务类型归类,把类型收敛到 8 个取值以内;下周在工具里把必填字段压到 5 个以内,并加上完成定义模板;一个月后开始按任务类型统计实际工期的中位数,建立你的第一条基线。
不要一次性铺开所有字段,也不要指望第一个月就有漂亮数据。真正有价值的工期数据,通常要积累两到三个迭代才会显现规律。先让口径统一,再让数据自动生成,最后才谈度量和改进。这个顺序颠倒任何一步,都会回到我见过的那些失败循环里。
常见问题解答(FAQ)
1. 任务属性里的计划工期和实际工期到底怎么填,才不会互相打架?
我第一次在某项目管理工具里搭任务模板时,直接把开始日期和截止日期当成工期用了,月底一看逾期率 60%,团队还不服气,说“我明明提前交的”。后来才发现是我把自然日和工作日混着算,还把等待评审的时间也算进了工期里。
把这三个东西分开设成独立属性:计划工时、实际开始时间、实际完成时间,其中“实际工期”由系统按实际开始到实际完成自动计算,不允许人工填写。工期口径统一成工作日,排除周末和法定节假日再折算。
有几个坑要提前防:一是只要允许手填实际工期,数据可信度就会掉,因为人会凑整,填 8、16、24 这种数字,系统算出来才会出现 6.5、13.2 这种真实小数;二是任务被阻塞的时段不该算进工期,要么单独加一个阻塞时长字段,要么把状态切成阻塞中并暂停计时。
我自己的任务模板里必填字段只留四个:负责人、计划工时(小时)、实际开始、实际完成,其他全部自动算或选填。判断依据很简单,你打开上个月的工期数据,如果里面大量出现整点数和整数天,说明口径已经坏了。
2. 实际工期该由谁填、什么时候填?开发在群里说一句“做完了”就能结束计时吗?
我们团队以前是开发在群里喊一声“XX 做完了”,我手动去改任务状态,一天下来经常漏改三四个,实际工期全是错的。后来我走到另一个极端,规定必须提测才算完成,结果开发干完活等排期等了两天,工期被系统算成三天,复盘时又被冤枉。
原则是“谁负责谁闭环”,但“完成”的定义必须由团队在任务类型层面写死,不能靠个人理解。我给开发任务的完成标准定成三条同时满足:代码合并到主干、自测通过、已提交到测试环境,本地跑通不算。实际完成时间取状态流转到已完成那一刻的系统时间戳,不让人事后补填时间。
等待提测、等待排期这类时间不计入任务工期,解决办法是把开发任务和测试任务拆开,中间用一个待提测的队列任务承接,或者用独立的等待时长字段记录。执行上我加了一条硬规定:状态变更必须由负责人本人当天操作,不允许第二天批量补点。
我对比过补点和实时点两版数据,补点的实际工时平均偏高 18%,因为人是凭印象往多了记的,越晚补越失真。
3. 实际工期和预估工期差得离谱,复盘时怎么归因才不冤枉人?
我们组做过一次迭代复盘,有个任务估 8 小时实际用了 40 小时,我第一反应是这个人效率有问题,差点当面说了。幸好先翻了任务记录,发现它前后被变更改了三次,还等了两天下游接口,真正干活的时间其实不到 12 小时。
先归因到事,再谈人。我用的口径是偏差率等于实际工时减预估工时再除以预估工时,绝对值超过 50% 的任务进复盘池,但进池后必须打四类标签:需求变更、技术未知、依赖阻塞、估算方法问题。
经验数据上,我带过的两个团队里,依赖阻塞加需求变更合计能解释 60% 到 70% 的大偏差,真正因个人效率造成的不到 15%。所以复盘会上我第一个问的不是“怎么花了这么久”,而是“这个任务期间有没有被打断、被改需求、等别人”。
另外别只盯单个任务,要算同类任务的平均值:比如接口联调这类任务,我们跑了两个月后得出中位数是 12 小时,之后直接拿中位数当基准,比每次拍脑袋准得多,偏差率也从 80% 降到了 30% 左右。
4. 任务拆到多细,实际工期的记录才有参考价值?颗粒度怎么定?
我一开始把任务拆得特别细,一个功能拆了 20 个子任务,每个 2 小时,结果维护成本比干活还高,大家天天在改状态。后来又偷懒,一个迭代只建 5 个大任务,工期记录全是 3 天、5 天,复盘时完全看不出问题出在哪个环节。
用“一个工作日左右能闭环”作为拆分基准,单个任务的实际工期落在 4 到 16 小时这个区间比较合适。低于 4 小时的任务合并,高于 16 小时的继续往下拆。判断依据有三个:一是状态流转频率,任务太细会导致每天改十几次状态,噪声大于信息;
二是定位能力,3 天以上的任务里通常混着开发、联调、改缺陷三件事,混在一起复盘没有意义;三是排期稳定性,粒度越粗甘特图上的浮动越大,两周迭代里一个 5 天的任务延期一天就是 10% 的偏差。我现在的做法是分两层:任务层按上面的标准拆,用来记工期和排期;
子步骤用检查项或子任务挂在任务下面,只记进度百分比、不记工期,这样既不丢细节,又不会污染工期数据的口径。
核心关键词
文章包含AI辅助创作:任务属性如何做好实际工期?产品经理入门指南与操作步骤,发布者:飞飞,转载请注明出处:https://worktile.com/solution-1/archives/355892
读者评论
字段阈值那段有同感,我们之前必填加到10个后,研发直接在完成定义里写“见文档”。但我想补充一点:自动打点听起来能解决回填,实际状态流转不规范时照样失真,比如任务从开发中直接拖到已完成,中间时间戳全丢了。工具可以补,但状态纪律得先谈清楚,不然还是体感数据。
把责任分成产品管输入端、研发管执行端,理论上清楚,但现实里产品经理往往没有权限去定研发的任务属性模板。我们试过强制依赖关系必填,结果大家随便关联一个任务应付,跨团队等待反而更隐蔽。所以除了字段设计,还得看团队是否真的愿意暴露等待。
用1.2万个已关闭任务做回归观察,样本量不小,但6个团队可能共享同一套管理风格,结论未必适合所有组织。我更关心返工次数怎么界定:测试提缺陷后开发修复算一次返工,还是需求变更导致重做也算?口径不统一,偏差中位数再低也很难横向比较。