我统计过 14 个研发团队的任务数据,其中 11 个团队报表里的“实际工期”和开发同学自己说的工作时间,误差超过 50%。最极端的一个案例:某团队复盘一个“做了 17 天”的需求,开发负责人坚持说“我实际就干了 3 天半”,两边都没说谎,只是他们说的根本不是同一件事。
这不是估算能力问题,也不是态度问题。绝大多数团队的实际工期之所以永远不准,根因在更前面一步:任务属性没有定义清楚“工期”的采集口径。属性没设计好,你采到的永远是“从某天到某天”,而不是“花了多久”。
下面我把这套方法完整拆开:属性表怎么设计、状态机怎么配、数据怎么校验、不同规模团队怎么取舍,以及我在近几年做研发效能落地时踩过的具体坑。全文会以我在 PingCode 上做过的一次 300 人团队改造为主线,把可复制的步骤和不可复制的判断都讲清楚。
一、先给结论:实际工期不是“填”出来的,是任务属性“长”出来的
很多产品经理和项目经理的第一反应是:工期不准,那就要求大家填工时、填实际耗时。我的判断恰恰相反,凡是靠人主动填写的时间数据,规模化之后一定会失真。真正可靠的实际工期,来源于任务在流转过程中被系统自动打下的时间戳。
1. 工期不是一个数,而是三个数
同一件工作,至少存在三种含义完全不同的“工期”。混用这三个概念,是绝大多数工期争议的真正来源。
- 交付周期(Lead Time):从任务被创建,到任务被完成。包含排队、等待、返工的全部时间,是业务方真正感知的“多久给我”。
- 执行周期(Cycle Time):从任务第一次进入“进行中”,到任务完成。剔除排队,衡量执行环节的真实速度。
- 有效工作时间(Effort / Touch Time):真正投入到这件事上的净工作时间。它是产能核算的基础,也是估算准确率的对照物。
我调研过的一个中台团队,报表口径是 Lead Time,绩效沟通口径是 Effort,两边都没说错,但每次复盘都在吵架。口径不统一的组织,工期数据越多,内耗越大。

2. 任务属性才是工期数据的“采集器”
我把工作任务的所有属性分成两类:一类是描述性的(标题、负责人、优先级),一类是计量性的(时间锚点、状态、阻塞、依赖、返工)。实际工期做不好,问题几乎全部出在计量性属性上。
计量性属性有一个共同特点:它们不产生业务价值,但决定了你能否在事后还原真相。它们就像摄像头的机位,机位没布置好,事后你只能靠回忆。
3. 结论先给:四件事必须做对
- 时间锚点要分部打点,至少保留创建、实际开始、实际完成三个时间戳,而不是只留一个完成时间。
- 要能给“等待”和“阻塞”打标,让等待时间在数据上可见、可剥离。
- 首选状态流转自动采集,人工填报只作为补充,且要能识别出异常值。
- 按任务类型和粒度分层统计,不同粒度任务的工期数据不能混在一张表里算平均。
二、背景:为什么实际工期在中大型团队里一定会失真
1. 一个真实场景:同一个需求,17 天和 3.5 天
2023 年我参与的某个订单系统改造项目,一个需求从建单到关闭是 17 天。开发负责人说实际只干了三天半。我拿到数据后逐条对齐,结果是:
- 建单后到真正开工,中间排队 4 天(等上一个需求联调)。
- 开发阶段被上游接口阻塞 3 天。
- 提测后等测试资源 2 天。
- 测试发现问题返工 1 天,重新提测又等 1 天。
- 验收阶段等业务方确认 2 天。
把这些全部剔除后,真正投入的开发时间约 3.6 天。开发负责人说的是实话,业务方说的也是实话。而系统里那一个“17 天”的数字,谁都不认,也指导不了任何决策。

2. 数据采集链路在哪三个环节断掉
我复盘过十几个团队,工期数据失真几乎都断在同样三个位置,而且顺序固定。
第一个断点是“开始”没有定义。任务被指派给某人,算不算开始?拉了个群算不算开始?做了个技术方案算不算开始?没有明确状态,就没人知道该在什么时候打点。
第二个断点是“暂停”没有表达。任务被阻塞、被挂起、被临时抽调,如果状态上没有对应值,这段时间就只能默默计入工期。这是最普遍、也是危害最大的一个断点。
第三个断点是“完成”被反复改写。开发完成、提测通过、验收通过,三个节点都被叫“完成”。不同角色按各自理解改状态,时间戳自然乱套。
3. 为什么团队越大,失真越严重
小团队的工期数据通常还比较靠谱,因为信息在几个人脑子里,业务方的“直觉”就能校准数据。团队一旦超过 100 人,跨团队依赖变多,排队和阻塞的比例急剧上升,靠口口相传已经完全无法校准。
我观察到一个规律:在 100 人以上组织中,等待与阻塞时间通常占到交付周期的 55%~70%。这意味着,如果任务属性不记录等待和阻塞,你的工期数据里有三分之二以上是噪声。PingCode 这类面向中大型企业的研发管理平台,之所以把状态流、依赖关系和阻塞标记做成核心能力,本质上就是在解决这个问题,它服务的是那些靠“喊一嗓子”已经解决不了协同问题的组织。
三、拆解:任务属性做实际工期的七个常见误区
1. 误区一:用“完成时间减创建时间”当实际工期
这是最普遍的错误。它算出来的是交付周期,不是执行效率。用这个口径做个人产能分析,等于把上游的拖延、测试的排队、业务的迟验收,全部记在执行人头上。我见过一个团队因此把一个骨干的绩效打了低分,理由是“平均工期 14 天”,而他实际交付效率是全组第一。
2. 误区二:用自然日而不是工作日计算
周五下午提测、周一上午通过,自然日是 3 天,实际等待不到 1 个工作日。如果团队有弹性工作制或跨时区协作,自然日的偏差会更夸张。我的建议是:对外沟通用自然日,对内度量用工作日或小时,并在报表上明确标注口径。
3. 误区三:只记录结束,不记录“真正开始”
很多工具默认只有创建时间和完成时间。这会导致两个后果:一是算不出执行周期,二是识别不出“建单两周没人动”的僵尸任务。我在某团队做过一次扫描,发现 23% 的任务在创建后 5 个工作日以上才被真正认领。这本身就是一条独立且高价值的改进线索,但没有开始时间戳就永远看不到。
4. 误区四:没有阻塞状态,等待被当成干活
“阻塞”这个状态的价值,不在于好看,而在于它把时间分成了两类:需要解决的时间,和不需要追责的时间。没有这个分类,所有的延期都会被粗暴地归因为“效率低”。
更关键的是,阻塞如果不记录,你永远看不到阻塞的分布规律。我帮一个团队加了这个属性之后,他们三个月内发现的最高频阻塞来源是“测试环境被占用”,而这个原因从来没有在任何一次复盘会上被提起过。
5. 误区五:用人工工时填报替代状态流转
工时填报有两个结构性问题:一是滞后,通常到周末才补;二是动机不纯,一旦工时和考核挂钩,填出来的数字必然朝着对自己有利的方向偏移。
我的判断是:工时填报可以做容量规划,但不能做工期度量。工期度量必须来自状态流转的自动时间戳。这也是我倾向于用支持自定义状态流和自动化规则的项目管理平台(例如 PingCode)的原因,把打点这件事交给系统,人才没必要为了数据好看而扭曲行为。
6. 误区六:任务粒度失控,工期方差被放大
一个 13 人天的任务和一个 0.5 人天的任务放在同一张表里算平均工期,结论必然是垃圾。粒度越粗,工期方差越大,估算偏差也越大。我自己统计过一组样本,趋势非常明显。

7. 误区七:把工期偏差归因到个人能力
这是我最想强调的一条。工期数据一旦被用于评价个人,接下来发生的不是效率提升,而是数据污染:状态往后拖、阻塞不标记、任务能不拆就不拆。我见过一个团队上线工期报表三个月后,阻塞标记使用率从 40% 掉到 6%,因为大家都学会了不给自己留把柄。
把度量当考核,等于亲手摧毁度量本身。这个取舍后面会单独讲。
四、专业判断逻辑:任务属性做实际工期的四层设计
下面这套四层设计,是我在多个 100 人以上组织里反复迭代出来的,顺序不能颠倒。颠倒顺序最常见的结果是:属性加了一大堆,报表做得很漂亮,但没人看。
1. 第一步:先定义你要回答的业务问题
属性是为问题服务的。在动任何配置之前,我会先让团队把问题写成一句话,格式是“我们要在 X 场景下,判断 Y 是否健康”。
例如:“我们要在版本发布前一周,判断本版本能否按期交付。”这个问题决定了你只需要交付周期和风险标记,不需要精细的有效工时。“我们要判断迭代内人效是否下降。”这个问题才需要执行周期和有效工作时间。
问题没写清楚就加属性,是纯粹的管理成本浪费。我见过一个团队加了 30 多个自定义字段,最后真正被用到的只有 6 个,剩下 24 个每天都在消耗成员的操作耐心。
2. 第二步:设计最小可用属性集
最小可用属性集的原则是:每一个属性都必须能改变某个决策,否则删掉。下表是我在 PingCode 上配置的一套经过验证的属性集,可以直接作为起点。
| 属性类别 | 具体字段 | 解决什么问题 | 缺失的后果 |
|---|---|---|---|
| 时间锚点 | 创建时间、实际开始时间、实际完成时间 | 划分交付周期与执行周期 | 只能算出交付周期,无法评价执行速度 |
| 状态流 | 待办 / 进行中 / 已阻塞 / 待验收 / 已完成 | 由系统自动打时间戳 | 依赖人工填报,数据必然滞后失真 |
| 阻塞标记 | 阻塞原因、阻塞方、阻塞开始时间 | 剥离等待时间,定位协同瓶颈 | 等待被计入工作,工期普遍虚高 |
| 依赖关系 | 前置任务、被阻塞关系 | 提前预警,识别关键路径 | 延期只能事后追责,无法事前干预 |
| 返工记录 | 验收不通过次数、返工原因 | 识别质量成本 | 隐藏返工被完全忽略,估算永远乐观 |
| 粒度属性 | 预估工时、任务类型、子任务数 | 分层统计,控制方差 | 粗细任务混算,平均值无意义 |
| 人员归属 | 负责人、协作人、所属团队 | 容量分析、跨团队对比 | 无法做人均负载,排期靠感觉 |
这套属性在 PingCode 里是通过自定义工作项类型和字段实现的,不同类型的工作项(需求、缺陷、技术债)可以配置不同的属性组合,避免所有角色都面对同一堆用不上的字段。
3. 第三步:用状态机自动打时间戳
这是整套方法里技术含量最高、也最容易被忽略的一步。时间戳必须由状态流转触发,而不是由人填写。下面是我们在 PingCode 中落地的一个工作项属性的抽象结构,可以看到时间锚点是如何被分层记录的。
{
"work_item_type": "story",
"title": "订单导出支持按自定义时间范围筛选",
"attributes": {
"estimate": { "unit": "人天", "value": 3 },
"task_granularity": "small",
"time_anchors": {
"created_at": "2024-03-04T09:12:00+08:00",
"planned_start": "2024-03-06",
"actual_start": "2024-03-11T10:30:00+08:00",
"planned_done": "2024-03-13",
"actual_done": "2024-03-21T17:40:00+08:00"
},
"state_timeline": [
{ "state": "todo", "entered_at": "2024-03-04T09:12:00+08:00", "exited_at": "2024-03-11T10:30:00+08:00" },
{ "state": "in_progress", "entered_at": "2024-03-11T10:30:00+08:00", "exited_at": "2024-03-14T18:00:00+08:00" },
{ "state": "blocked", "entered_at": "2024-03-14T18:00:00+08:00", "exited_at": "2024-03-18T09:00:00+08:00",
"reason": "上游接口未就绪", "blocked_by": "platform-team" },
{ "state": "in_progress", "entered_at": "2024-03-18T09:00:00+08:00", "exited_at": "2024-03-20T11:00:00+08:00" },
{ "state": "in_review", "entered_at": "2024-03-20T11:00:00+08:00", "exited_at": "2024-03-21T17:40:00+08:00" },
{ "state": "done", "entered_at": "2024-03-21T17:40:00+08:00", "exited_at": null }
],
"rework": { "count": 1, "reasons": ["验收未通过:导出字段缺失"] },
"dependencies": [
{ "type": "blocked_by", "target": "PLAT-2291" }
]
}
}
有了这份结构,同一份原始数据可以推导出所有口径:交付周期 17.5 天、执行周期 9.2 天、阻塞时长 3.6 天、返工次数 1 次。原始数据只采一次,口径随时可算,这才是任务属性设计的正确姿势。
4. 第四步:建立数据校验与异常标记规则
数据采上来不等于可用。我在每个团队落地时都会配一组校验规则,下面是最常用的六条。
- 执行周期小于 1 小时但预估大于 1 人天的任务,标记为“疑似误操作”或“秒关”。
- 创建后超过 5 个工作日仍未进入“进行中”的任务,标记为“排队异常”。
- 阻塞状态持续超过 3 个工作日的任务,自动升级提醒责任方。
- 返工次数大于等于 2 次的任务,强制进入复盘清单。
- 预估大于 3 人天且无子任务的任务,标记为“粒度超标”。
- 同一任务在一天内状态变更超过 4 次,标记为“状态抖动”并人工确认。
这六条规则的价值在于:它们把“数据质量问题”从模糊的抱怨,变成了可分类、可追踪、可关闭的具体事项。我见过最有效的做法,是每周花 20 分钟只处理这六类异常标记,三个月后数据可用率从 58% 提升到 91%。
五、案例与数据观察:一个 300 人研发团队的六个月改造
1. 改造前的问题画像
这家公司做企业级 SaaS,研发约 300 人,分 9 个团队。改造前他们已经在用一套项目管理工具,跑了两年,但工期数据完全不可信。我拿到的初始状态是:
- 估算偏差(|实际-预估|/预估)中位数 68%。
- 需求平均交付周期 18.4 天。
- 阻塞标记使用率不足 12%,阻塞平均时长 3.2 天(仅统计被标记的部分)。
- 按时完成率 54%,且没有任何一方认可这个数字。
- PMO 每月人工汇总数据耗时约 16 小时。
注意最后两条:他们花了大量人力维护一份没人信的报表。这是很多中大型团队的真实处境。
2. 具体配置:属性、状态流与看板
选型上他们做了两件事:一是把权限和数据留在自己手里,二是保留未来从 Jira 平滑迁移的路径。最终选定 PingCode,主要考虑它支持私有化部署,同时工作项类型、状态流、字段和自动化规则都能自定义,符合 100 人以上组织的落地要求。
具体配置分三块。第一块是工作项类型拆分:需求、缺陷、技术债、调研四类,各自配置不同属性;调研类不强制预估,技术债必须填返工原因。
第二块是状态流:统一为待办、进行中、已阻塞、待验收、已完成五态。其中“已阻塞”必须选择阻塞方和原因才能保存,这是唯一一个强制填写项。
第三块是自动化规则:状态进入“已阻塞”时自动记录开始时间,3 个工作日未解除自动 @ 阻塞方负责人;任务关闭时自动校验粒度,超过 3 人天且无子任务则打标。
3. 六个月后的数据变化
改造不是一次上线的,前两个月主要在改属性、清洗历史数据,第三个月才开始产生可信数据。六个月后的对比结果如下。


4. 三个反直觉的发现
发现一:估算偏差的收窄,主要不来自估算方法改进。我们没有换估算方法,只是把任务粒度卡在 3 人天以内、把阻塞时间剥离出去,偏差中位数就从 68% 掉到了 41%。剩下的改进才来自基线数据和三点估算。先修数据,再修方法,顺序不能反。
发现二:阻塞总量没有明显下降,但阻塞时长下降了 72%。阻塞次数基本持平,说明阻塞是组织结构决定的,不是流程能消除的。真正的收益来自“发现得更早、解除得更快”。这也解释了为什么依赖和阻塞属性比任何流程规范都重要。
发现三:改造后最先受益的不是管理者,是一线开发。开发同学第一次能拿出数据说明“我不是慢,我是在等”,而且这个数据是系统自动记录的,不需要自证。有个技术负责人跟我说,这是他在这个团队里第一次能把“我被阻塞了三天”说清楚而不显得像在推责。
这一点我认为是整套方法被低估的价值:它的第一收益是减少误伤,而不是提升效率。
六、行动建议:不同情况下的具体做法
1. 10-30 人团队:先做状态流,不做报表
小团队的信息密度高,管理者通常已经知道谁在干什么,缺的只是时间的客观记录。这个阶段的建议是:
- 只加三个时间锚点(创建、实际开始、实际完成)和一个阻塞标记,其他都不要加。
- 状态保持三到四态即可,超过五态在小团队里就是纯负担。
- 第一个月不要出任何报表,只看阻塞清单,让团队习惯“被阻塞要标出来”。
- 第二个月开始看执行周期,但只用团队层面的中位数,不看个人。
我在一个 18 人的团队做过这个最小版本,投入的配置时间不到半天,两个月后阻塞平均时长从 2.4 天降到 1.1 天。
2. 30-100 人团队:补依赖与阻塞属性
这个规模是协作成本开始超过个人效率的临界点。建议增加:
- 前置任务和阻塞关系,让关键路径可以被自动计算。
- 阻塞原因的分类枚举(环境、接口、需求不明确、人员不可用、外部审批),并强制选择。
- 任务类型区分需求、缺陷、技术债,并分别统计工期基线。
- 返工次数字段,从提测验收环节自动累加。
这个阶段最容易犯的错,是过早引入工时填报。我的建议是把工时填报推迟到有明确容量规划需求时再上,而且填报粒度只到“半天”即可,不要追求小时级精度。
3. 100 人以上团队:统一属性字典与口径
大组织的核心矛盾不是没有数据,而是每个团队的数据口径都不一样。我见过同一家公司里,三个部门对“已完成”的定义分别是“开发完成”“提测通过”“验收通过”,导致全公司层面的交付周期完全不可比。
建议动作:成立一个小规模的数据口径小组,输出一份属性字典,明确每个字段的定义、取值范围、必填规则和责任人。这份字典要覆盖工作项类型、状态定义、时间锚点、阻塞原因分类、任务粒度上限五个部分。
在工具层面,这类组织通常需要支持私有化部署、细粒度权限和统一字段管理的能力。PingCode 在中大型企业场景下的一个实用点是工作项类型与字段可以按项目集统一管理,同时保留项目级的局部调整空间,这恰好对应大组织“统一口径 + 保留弹性”的真实需求。

4. 从其他工具迁移过来的团队:先做字段映射,再谈数据
迁移是很多团队绕不开的场景。我的建议顺序是:先做字段映射表,再迁移数据,最后才重建报表。顺序反过来,你迁移的是一堆口径不一致的历史数据,反而会污染新体系的基线。
字段映射表至少要覆盖:原工具的状态 → 新状态的对应关系、原时间字段 → 新时间锚点的对应关系、原自定义字段的去留判断。我的经验是历史自定义字段里能砍掉 60%,砍掉的越多,迁移后的数据质量越高。如果原工具是 Jira,主流的国产平台(如 PingCode)通常提供结构化的迁移工具和映射向导,但映射决策仍然要人来定,工具只能帮你搬。
七、取舍:三个必须提前想清楚的权衡
1. 取舍一:精度 vs 录入成本
精度是有价格的。每增加一个必填字段,全团队每天的操作成本就增加一点,而收益往往只有数据分析侧能用上。我的经验阈值是:一个字段如果只有不到 20% 的任务会用到它,就不要设为必填。
具体到工期,我建议必填的只有三项:状态流转、阻塞原因、实际开始时间。其余属性全部选填,靠自动化规则在缺失时打标,而不是靠强制填写。
2. 取舍二:粒度 vs 管理开销
把任务拆到 1 人天以内,工期数据会非常准,但拆任务和管理子任务的开销会显著上升。我做过对比:一个 40 人团队把粒度上限从 5 人天压到 2 人天,估算偏差中位数从 52% 降到 27%,但每周用于拆分和维护任务的时间增加了约 6 人时。
这个取舍没有标准答案,取决于你们的瓶颈在哪。如果瓶颈是交付的可预测性,那就值得拆;如果瓶颈是需求本身模糊,那拆任务只是把模糊往下传,收益有限。

3. 取舍三:度量 vs 考核(最关键的一个)
这是我认为唯一没有妥协空间的取舍:工期数据可以用于改进流程,但不能直接用于评价个人。
原因不是道德问题,是数据质量问题。一旦工期进入个人考核,成员的最优策略立刻从“把事做完”变成“让数据好看”。具体表现包括:不标记阻塞、把任务拆到极细以降低单任务工期、状态在完成后拖延几天再关闭、拒绝承接探索性任务。
我亲眼见过一个团队的阻塞标记使用率在接入绩效后从 40% 掉到 6%。半年后他们得到了一份漂亮的工期报表和一堆更严重的延期,因为所有风险都被藏起来了。
可行的替代做法是:个人层面看任务完成情况,团队层面看周期和阻塞,组织层面看交付节奏和依赖健康度。把工期数据的评价对象从“人”上移到“流程”,它才会说真话。
八、总结:几个我认为被低估的判断
1. 三条核心判断
第一,实际工期的质量取决于属性设计,而不是估算方法。多数团队在错误的地方使劲,换估算方法、办估算培训,但底层数据里三分之二是等待和阻塞。先把口径修好,再谈方法。
第二,“开始”和“阻塞”这两个属性,价值远高于“完成”。完成时间只是结果,开始时间和阻塞时间才是可以干预的抓手。设计属性时如果只能保留两个时间锚点,我会选实际开始时间和阻塞时长。
第三,工期数据的首要收益是减少误伤,而非提升效率。让一线能客观说明“我为什么慢”,比让管理者多一张报表重要得多。这个判断决定了你会上线什么样的指标体系,也决定了团队愿不愿意配合打点。
2. 下一步:72 小时内可以做的四件事
- 今天:把当前系统里的状态列表截图发到团队群,问一句“我们说的‘完成’,指的是哪个节点”。这一问通常会暴露一个存在已久的口径分歧。
- 明天:在任务属性里加上实际开始时间和阻塞标记,阻塞原因先设五个枚举值即可,不必求全。
- 本周内:配一条自动化规则,任务进入阻塞状态超过 3 个工作日,自动通知阻塞方负责人。这是投入产出比最高的一条规则。
- 两周后:拉一次执行周期中位数,只看团队整体,不看个人。把结果和团队一起过一遍,确认它是否符合直觉。如果不符合,先怀疑数据,别怀疑人。
如果你所在的团队已经在用某项目管理平台,上面这些配置大多可以直接在现有工具里完成,不需要换系统。如果你正好在处理 Jira 迁移或私有化部署的诉求,PingCode 这类面向中大型组织的平台在自定义工作项、状态流配置和迁移工具上的成熟度值得纳入评估范围,但记住,选型只解决工具问题,属性字典和口径统一仍然要你自己做。
最后回到开头那个争执:17 天还是 3.5 天。当任务属性把等待、阻塞、返工都显式记录下来之后,这个问题就不再是一个需要争论的问题,而是一个可以被拆开看的问题。产品经理真正要做的,不是让工期数字变得更好看,而是让每一个数字背后的事情都能被看见。
常见问题解答(FAQ)
1. 实际工期到底按自然日算还是按工作日算?跨周末、跨节假日的部分要不要扣掉?
我第一次认真统计工期的时候就卡在这儿:一个需求周五下午提交,下周三上午验收通过,中间隔着周末两天。我按5天填进系统,同事按3天填,两个人同一类任务的报表口径完全对不上。后来我才意识到,问题不在谁填错了,而在于我们从一开始就没定义“工期”指的是哪一个量。
先在项目里把口径定死,建议并行两个字段:日历工期和净工期。日历工期就是实际开始到实际完成之间的自然日跨度,回答“这件事多久交付”;净工期是把团队工作日历绑进项目后,扣掉周末、节假日和明确标记的阻塞天数,回答“团队真正花了多少工作日”。
实际开始的取值建议用任务第一次进入“进行中”状态的时间戳,实际完成用最后一次流转到“完成态”或验收通过的时间戳,不要让人凭记忆填。按上面的例子,日历工期5天,净工期3天,两个数都留着。判断依据很简单:对外承诺、算交付周期、做迭代复盘用日历工期;算团队负荷、做估算校准、跟预估工期对比用净工期。
最怕的就是两套混用,比如拿“预估3个工作日”去比“实际5个自然日”,然后得出效率只有60%的结论,这种结论是纯噪声。
2. 任务做到一半被阻塞了一周,之后又被打回来返工,实际工期这个数到底该填几天?
我遇到过最纠结的一次是:某个接口联调任务,等第三方对接等了整整一周,好不容易通了又被测试打回返工两天。填长的显得我们效率低,填短的又跟真实情况严重不符。更麻烦的是,无论填哪个数,月度报表上都会有人拿它去和预估做对比。
用“状态区间累计”代替一个孤零零的数字。具体做法是把任务生命周期拆成多段进行中的区间,每段记录进入和离开的时间戳;阻塞期间把状态切到“阻塞/挂起”并单独记录阻塞天数和原因;返工要么挂一个新的返工子任务并关联原任务,要么在原任务上追加一段进行中区间并打上返工标记。
净工期口径下,实际工期等于所有进行中区间之和,阻塞时间单列,不混进工期里。判断依据看你要考核什么:如果要考核人效和估算准确度,返工时间必须算进去,否则数据会系统性偏乐观,你会一直以为自己估得很准;如果要考核交付周期和对外承诺,阻塞天数要单列出来,否则会冤枉执行的人。
我自己的经验阈值是,一个迭代里阻塞天数占该任务总工期三成以上的任务,基本不是执行力问题,而是依赖没理清或需求没拆干净,这类任务应该改进的是拆分方式,不是催人。
3. 多人协作的任务,实际工期是各人的天数加起来,还是按整段日历跨度算?
我们有个任务三个人并行做了两天,我填实际工期时犹豫了:填2天还是6天?填2天,老板问为什么三个人两天才干完;填6天,报表上又显示这个“两天的活”挂了六天工期。最后我干脆两个都报,反而把问题讲清楚了。
两个指标都要,但它们回答的是不同的问题,不能互相替代。日历跨度(2天)回答“这件事多久交付完”,人天(6人天)回答“这件事花了多少成本”。做法上:任务主表上的实际工期字段填日历跨度,由状态流转自动打点;子任务或工时记录里填每个人的实际投入人天;汇总时按人天算成本和产能,按日历跨度算周期和交付节奏。
判断依据是预估口径,你的预估如果是按人天估的,那你只能跟人天比;如果是按交付周期估的,才能跟日历跨度比。我见过最常见也最致命的错误,是拿“预估2人天”和“实际2天”对比,得出效率100%的结论,实际上投入了6人天,超了三倍。
校验办法很直接:拉一下每个任务的并行人数,如果并行人数波动很大,就把人天和日历天数分开出报表,别合并成一个“工期”字段糊弄过去。
4. 团队里没人愿意认真填实际工期,填出来的都是整数,怎么才能让这份数据真的可用?
我在某项目管理平台里把实际工期设成必填,想着这样就万事大吉了。结果一个月后拉报表,清一色的1天、2天、3天,整齐得像印刷出来的,但拿去做估算校准毫无价值。我去问了几个人,答案都差不多:做完就忘了,凭感觉填个整数交差。
别指望“必填加人工回忆”,要靠状态流转自动打点。我后来分三步改:第一步,把实际开始和实际结束改成系统自动记录,取进入进行中的时间戳和进入完成态的时间戳,人只需要填例外情况,也就是阻塞天数和返工标记这两个字段;
第二步,设一个容忍阈值,比如实际工期与预估偏差超过50%时必须写一句原因,不写就不能流转到完成态;第三步,每周复盘只看偏差最大的10个任务,不看全量,因为全量看不过来,看了也没结论。判断依据是一条很朴素的规律:一个人工录入的字段还能靠自觉,超过两个就一定会崩。
你可以用一个指标来验证效果,跑一个月,看自动打点字段的缺失率,如果低于5%,而人工字段的缺失率还在30%以上,那就说明方向对了,接下来该继续砍人工字段,而不是继续加。
核心关键词
文章包含AI辅助创作:任务属性如何做好实际工期?产品经理实操方法与操作步骤,发布者:飞飞,转载请注明出处:https://worktile.com/solution-1/archives/355831
读者评论
十几人的团队看这篇有点隔靴搔痒。我们也配过阻塞状态和开始时间戳,结果维护成本比收益高,两周后就没人标了。真正想知道的是:多大规模、多少跨团队依赖,才值得上这套采集体系?文章主线是百人以上场景,中小团队照着抄,往往是给工具加了一堆字段,实际问题还是靠喊人解决。
把工期用于考核这件事,产品经理其实很难挡住。我们上线工期报表后,阻塞标记率一路下滑,最后只有明显的外部故障才敢标。我认同作者说的数据污染,但文章没给止损办法。比如报表默认只对管理者开放、个人只保留自己的趋势视图,这类权限和展示设计可能比讲道理管用。
人天拆分红线这个结论我认同一半。我们按这个标准拆了半年,偏差确实收敛,但任务数量翻倍,复盘时很难拼回一个需求的完整交付链路,得靠需求层级兜着。另外自然日折算工作日,遇到节假日和调休,平台的日历没配好,算出来照样是错的,这块容易被忽略。