去年 11 月,我参与了一家约 700 人的软硬件混合组织的年度人力复盘。会上有位研发副总说了一句话,让整屋子人沉默了几秒:“我们今年招了 90 个人,编制完成率 96%,但交付的项目比去年少了 3 个。”HR 的报表显示人力供给达标,财务的 FTE 预算没有超支,项目管理办公室(PMO)的进度表上却密密麻麻排着红色。三个部门的数据都没有造假,问题出在同一个地方,没有人真正算过“可用工时”,大家算的都是“在册人数”。
人数是资源,可用工时才是产能。这篇文章讲的就是怎么把前者翻译成后者,以及为什么大多数团队的翻译过程一开始就错了 20% 以上。下面的方法、模板字段、校准节奏和取舍建议,来自我过去几年在十几家中大型组织做人力计划与产能治理的实操,不是理论推演。
一、核心结论:可用工时是产能预算,不是考勤副产品
先把结论摆在前面。关于可用工时,我见过的最有效的组织认知是这样一句话:可用工时是一份“可以承诺给业务的产能预算”,它的产出物是承诺曲线,而不是一张人数表。这个定义一变,后面所有的方法、模板、系统配置都会跟着变。
1. 可用工时衡量的是“能兑换成产出的时间”
大部分公司算可用工时的方式是:月平均工作日 21.75 天 × 8 小时 = 174 小时。这个数字在法律意义上是出勤工时,在管理意义上几乎没有价值。因为它假设一个人每天 8 小时全部可以投入到有价值的工作上,而这个假设在任何真实组织里都不成立。
我的经验区间是:一个 174 小时法定工时的岗位,扣掉计划性缺席(年假、调休、培训、公司活动)、非项目会议、行政事务、技术支持与答疑、上下文切换损耗之后,真正能用于交付的有效工时通常在 95 到 120 小时之间,也就是名义工时的 55% 到 69%。如果你的计划基线用的是 174,你的每一个承诺都天然带着 30% 以上的超售。
2. 效率提升的来源是口径统一,不是算得更快
很多管理者提到“提升人力计划效率”,第一反应是上工具、做自动化、把 Excel 换成系统。我的判断恰好相反:在口径统一之前,任何自动化都只是在更快地生产错误的数字。一个季度的人力计划编制,从 11 人天压到 3 人天当然有价值,但如果口径不统一,压下来的 8 人天会以“返工、扯皮、计划重排”的形式在项目执行阶段加倍还回来。
所以我把效率拆成两层:第一层是“口径效率”,即组织内对可用工时的定义是否唯一、是否可追溯;第二层才是“编制效率”,即出一版计划需要多少人天。前者决定后者的上限。
3. 模板的价值在于约束,不在于填表
我做过一个对比观察,在同一家公司内部,两个事业部用了两种不同的人力计划模板。A 事业部的模板有 34 个字段,覆盖技能矩阵、成本中心、项目归属、绩效关联;B 事业部的模板只有 11 个字段,其中 6 个是必填。三个季度后,A 的模板字段完整率是 61%,B 是 94%。
结论很直接:模板不是用来收集信息的,是用来限制管理者“必须说清楚什么”的。字段越多,填的人越倾向于用默认值糊过去,而默认值恰恰是最危险的数据,它看起来像真的,实际上没人负责。
4. 管理层真正要的是承诺曲线
我用“承诺曲线”这个词,指的是把可用工时按时间轴铺开形成的一条供给曲线,再和需求曲线叠在一起看交点。人数表只能回答“我有多少人”,承诺曲线才能回答“我在第 7 周能承诺多少工作量、第 12 周会不会断供”。管理层的决策发生在曲线上,而不是发生在表里。

二、背景与真实场景:为什么人力计划总在第三季度崩塌
我复盘过六家组织的人力计划失准案例,发现一个高度一致的规律:计划不是一开始就错的,是在第二季度末到第三季度初系统性崩塌的。原因不是执行不力,而是可用工时的供给在这个时点同时遭遇三重挤压。
1. 一个典型的中层困境
假设你是一家 400 人公司的研发总监,年初你承诺“上半年交付 5 个版本”。你的计划是这样算的:团队 62 人,减去 4 个管理岗,58 个产能人,每人每月 174 小时,一个月就是 10092 小时,一个版本估 1800 小时,5 个版本 9000 小时,还剩 1000 小时缓冲。看起来很稳。
到了 6 月你发现,实际投入到这 5 个版本上的工时只有 6100 小时左右。差的 4000 小时去了哪里?不是有人偷懒,而是这笔账从一开始就记错了:58 个人里有 7 个人在 3 月到 5 月集中休了年假,有 9 个人被抽去做售前支持和线上故障处理,有 4 个新人前两个月处于学习期产出不足一半,另外全团队每月平均有 11 小时花在跨部门对齐会上。这些都不是意外,全都可以提前算出来。
2. 三种输入源,三种不同的时间口径
更麻烦的是,中大型组织里通常同时存在三个版本的“人力真相”,而且都在被使用。
| 数据来源 | 常用口径 | 典型用途 | 系统性偏差 |
|---|---|---|---|
| HR 花名册 / 编制表 | 在册人数、编制完成率 | 招聘计划、成本预算 | 高估 25%-35%,因为含未到岗、试用期、长期休假 |
| 财务 FTE 预算 | 全职当量、人工成本分摊 | 项目核算、毛利测算 | 中性偏乐观,按 1.0 FTE 折算,忽略角色差异 |
| 项目经理的经验值 | “这个团队一个月能干多少” | 排期、承诺 | 个体差异极大,无法横向比较,也无法审计 |
这三套数据各自在自己的语境里都是对的,放在同一个决策会上就变成了三场互相不认账的辩论。可用工时的作用,是把这三套语言强行合并成一套可计算的口径。这也是我一直强调“可用工时首先是治理工具,其次才是计算工具”的原因。
3. 中大型组织的复杂度:以 PingCode 的使用场景为例
在 100 人以下的组织里,可用工时通常靠一两个懂业务的人“拍”出来,误差可以接受。但组织一旦超过 100 人、尤其是跨多个产品线、多个地域、混合研发与服务职能时,可用工时的计算会迅速变成一件无法手工维护的事情:角色分层、项目并行、矩阵汇报、外包与自有员工混编、跨时区协作,每一项都在改变口径。
这类组织里,我通常会建议把可用工时的数据链路放在已有研发管理平台上跑通,而不是新建一张 Excel。以 PingCode 为例,它的工作项工时、迭代容量、团队速率这三组数据天然构成可用工时的上下游:工作项的实际工时消耗反映有效工时的真实分布,迭代容量提供短周期的产能约束,团队速率则给出可承诺工作量的历史基线。PingCode 主要服务中大型企业及 100 人以上组织,这个定位恰好对应“手工口径已经维护不动”的那条临界线。
需要说清楚的是:平台不会替你定义口径。它只是让“定义好的口径”能够被稳定执行、按月滚动、可追溯到单个团队和单个迭代。口径错,系统只会把错误放大得更整齐。

4. 一个被忽略的事实:不可用时间大部分是可预测的
我做过一次抽样统计,覆盖 3 家公司、11 个团队、约 380 人、连续 12 个月。结果发现:员工“不可用”的时间中,约 78% 是可以提前预测的,年假、法定假日、计划内培训、公司活动、既定值班、已知的长期支持任务。真正不可预测的只有病假、突发故障、临时抽调等约 22%。
这个比例很关键。它意味着如果你的计划偏差超过 15%,问题大概率不在“意外太多”,而在“根本没算可预测的部分”。很多管理者喜欢用“变化太快”来解释计划失准,但数据显示,变化的绝对量并不是主因,未计量才是。

三、拆解常见误区:五个让人力计划失真的习惯动作
下面五个误区,我几乎在每一家刚开始做可用工时治理的组织里都见过,而且它们往往同时出现、互相强化。逐条拆开讲,因为每一条的修正方式都不同。
1. 误区一:把 21.75 天 × 8 小时当成可用工时
这是最普遍、也最致命的一条。174 小时是法律意义上的月计薪天数折算,它回答的是“公司该付多少钱”,不是“这个人能干多少活”。把它直接当成可用工时,等于默认员工的每一分钟都在产出。
我在一家制造企业见过更极端的版本:他们把 174 小时乘以 1.15,理由是“我们加班多”。这个做法在数学上把产能放大了 15%,在管理上等于用加班掩盖产能不足。正确的做法是先减后加:先扣除所有不可用时间得到可用工时,再把“已确认可执行的加班”作为独立的一行加到供给里,而不是揉进基数。
2. 误区二:用同一个投入率覆盖所有角色
“我们团队的投入率是 70%”,这句话在跨角色场景下基本没有意义。我观察到的分布是:一线执行岗(开发、测试、客服)的有效投入率通常在 72%-82%;技术专家与架构岗因为大量时间用于评审、答疑、技术决策,常在 45%-58%;管理者在 35%-50%;而共享职能(运维值班、SRE)如果按 24 小时覆盖计算,可用工时的算法本身都要重构。
用 70% 一刀切的结果是:专家被系统性高估 20 个百分点,一线被略微低估。当计划里包含多个专家时,整份计划的偏差会集中在专家这一侧爆发,而管理者往往会误判为“专家不给力”。
3. 误区三:模板字段越多越专业
前面提过 34 字段 vs 11 字段的对比。这里补充一个更隐蔽的问题:多字段模板会诱导“伪精确”。当模板要求填写“技能熟练度 1-5 分”“跨领域协同系数”这类字段时,填表人会在没有依据的情况下给出一个数字,而这个数字随后会被当成真实数据参与计算。
我的原则是:模板里每一个字段都必须能回答“如果这个字段填错了,谁的决策会变”。答不上来的字段,删掉。这条原则砍掉过我设计的模板里将近一半的字段。
4. 误区四:把可用工时当成 HR 的报表
如果可用工时只在 HR 的月度报表里出现,它几乎不会产生任何管理价值。它的正确位置是管理者的决策桌面:这周我能接多少需求、这个季度我要不要招人、这个版本要不要砍范围。
我在一家公司推动这件事时踩过的坑是:先做了漂亮的工时看板,然后发现管理者不看。后来改成把可用工时嵌进每周的迭代计划会,每个团队开会第一屏就是“本周可用工时 vs 已承诺工作量”,使用率立刻上来了。数据的使用场景决定了它会不会被使用。
5. 误区五:只算“缺席”,不算“低效在场”
最后一层误区最少被讨论。一个人在岗 8 小时,其中 4 小时在三个项目之间来回切换,和一个人休假半天,对产能的影响是接近的。但前者在报表上显示为“满勤满工时”,后者会被明确标出来。
我通常会在可用工时之后再加一层“有效工时”,专门扣减并行度带来的损耗。经验值是:一个人同时并行的项目数从 1 增加到 2,有效产出下降约 15%;增加到 3,下降约 30%;增加到 4 以上,边际产出接近零甚至为负。这个数字在不同组织有差异,但方向是一致的,而且它比任何流程优化都更能解释“为什么人越来越多、产出没变”。
四、专业判断逻辑:四层口径、三条校准线、一个最小模板
讲完误区,进入方法本身。我用的框架比较简单,核心是四条口径逐层收敛,三条校准线互相咬合,最后收敛到一个字段数可控的模板。
1. 四层口径:把 174 小时收敛到有效工时
四层口径的作用不是让数字更精确,而是让每一次扣减都有人负责、可被审计、可被追溯。这是我见过最能减少扯皮的结构。
| 层级 | 定义 | 典型扣减项 | 责任方 | 月均值(示意) |
|---|---|---|---|---|
| 第一层 日历工时 | 自然日历下的理论工时 | 无 | HR / 财务 | 约 174 小时 |
| 第二层 出勤工时 | 扣除法定假日与周末后的应出勤 | 法定节假日、周末 | HR | 约 168 小时 |
| 第三层 可用工时 | 扣除计划性不参与项目的时间 | 年假、培训、公司活动、既定值班、长期支持 | 部门负责人 | 约 138 小时 |
| 第四层 有效工时 | 扣除流程损耗与并行损耗后真正可交付的时间 | 非项目会议、行政事务、上下文切换、返工 | 部门负责人 + 项目经理 | 约 104 小时 |
注意第三层和第四层的责任方不同。这是刻意的设计:计划性缺席由部门负责人负责(他可以安排),流程损耗由部门负责人和项目经理共同负责(需要跨角色协作)。如果全部推给 HR,这两层永远不会被认真计算。
另外要注意,第三层的扣减必须按“角色分层”而不是“团队平均”。一个 10 人团队里有 1 个架构师,架构师的可用工时可能是 120 小时,一线开发是 145 小时,团队平均 142 小时看起来合理,但用它去乘人数就会系统性高估架构侧的产能。
2. 三条校准线:需求侧、供给侧、承诺侧
口径解决“怎么算”,校准解决“算完准不准”。我用三条线交叉验证,任何一条线单独使用都容易自欺。
(1)需求侧校准:从工作量反推工时
把待交付的范围拆成工作项,按历史同类工作的实际工时消耗估算,得到需求侧的总工时。这一步的关键是用“实际消耗”而不是“计划消耗”作为基线,因为计划消耗往往包含了乐观偏差。如果历史数据显示同类任务的计划工时平均只覆盖实际的 78%,那么新的估算就应该按 78% 的系数回补。
(2)供给侧校准:从可用工时池反推可承诺量
把四层口径算出来的有效工时按周铺开,形成供给曲线。这里必须显式处理三个变量:招聘到岗的时间差(从发 offer 到真正产生 50% 以上产出,通常需要 2-4 个月)、新人爬坡曲线、以及已知的人员流动预期。
(3)承诺侧校准:用历史承诺达成率修正
这是最容易被跳过、也最有效的一条。看过去 4 个季度“承诺了但没做到”的比例,如果平均达成率是 76%,那就应该在下一期计划里显式留出对应缓冲,而不是重复承诺同样激进的目标。承诺达成率是一个组织的“诚实系数”,它比任何估算方法都更能改善计划准确性。

3. 校准频率与责任归属
频率设计上我的建议是:口径按年定,供给按月滚,需求按迭代校,承诺按季度重定基线。一年改一次口径(否则数据不可比),每月更新供给(休假、入离职、抽调),每个迭代校准需求(范围变化),每季度重设承诺基线(达成率、缓冲)。
责任归属要写进流程:口径由 HR 与业务共同签字确认,供给数据由部门负责人每月 5 日前更新,需求估算由项目经理负责,承诺基线由业务负责人确认。没有责任人的字段一定会烂掉,这是我在所有组织里都验证过的规律。
4. 模板的最小字段集
下面是我在多个组织里反复收敛后剩下的模板字段,共 13 个,其中 8 个必填。它足够支撑承诺曲线的计算,又不至于让人望而生畏。
- 组织单元:团队 / 项目组,必填
- 角色:用于分层投入率,必填
- 人数:区分在岗、待入职、外包,必填
- 期间:按周或按月,必填
- 出勤工时:由日历自动生成,必填
- 计划性缺席工时:年假、培训、值班,必填
- 可用工时:系统计算,必填
- 投入率:按角色分层维护,必填
- 有效工时:系统计算
- 已承诺工作量:来自项目计划
- 缓冲比例:按承诺达成率设定
- 缺口 / 富余:系统计算,用于决策
- 备注:仅记录异常,不要求填满
把这套逻辑落成可运行的代码并不复杂。下面是我常用的可用工时计算函数,输入是按角色分层的原始数据,输出是可直接进入承诺曲线的有效工时与可承诺工时。
from dataclasses import dataclass
@dataclass
class CapacityInput:
role: str
headcount: int # 在岗人数(不含待入职)
calendar_hours: float # 期间日历工时,如 174
planned_absence: float # 期间计划性缺席工时(人均)
utilization: float # 该角色的投入率,如 0.72
commitment_rate: float # 历史承诺达成率,如 0.85
buffer: float = 0.10 # 额外缓冲比例
def available_hours(x: CapacityInput) -> float:
"""第三层:可用工时 = 出勤 - 计划性缺席"""
return max(x.calendar_hours - x.planned_absence, 0)
def effective_hours(x: CapacityInput) -> float:
"""第四层:有效工时 = 可用工时 × 角色投入率"""
return available_hours(x) * x.utilization
def committable_hours(x: CapacityInput) -> float:
"""可承诺工时 = 有效工时 × 承诺达成率 × (1 - 缓冲)"""
return effective_hours(x) * x.commitment_rate * (1 - x.buffer)
def rollup(rows):
supply = 0.0
detail = []
for x in rows:
per_capita = committable_hours(x)
total = per_capita * x.headcount
supply += total
detail.append({
"role": x.role,
"available": available_hours(x),
"effective": effective_hours(x),
"committable": per_capita,
"total_committable": total,
})
return supply, detail
示例:一个含架构师、开发、测试的小团队,单月口径
rows = [
CapacityInput("架构师", 1, 174, 42, 0.50, 0.85, 0.15),
CapacityInput("开发", 8, 174, 36, 0.75, 0.85, 0.10),
CapacityInput("测试", 3, 174, 30, 0.78, 0.85, 0.10),
]
supply, detail = rollup(rows)
print(round(supply, 1)) # 可对外承诺的总工时
这段代码里最值得注意的不是计算逻辑,而是三个参数的位置:utilization 按角色区分、commitment_rate 用历史数据回填、buffer 显式暴露。这三个参数一旦写死在代码里,就没人会去质疑;一旦作为输入暴露出来,管理者就必须为它们的取值负责。这就是我说的“模板的价值在于约束”。

五、案例与数据观察:一家 600 人研发组织的三个季度
这一节讲一个具体的落地过程。为避免暴露客户信息,我隐去行业细节,只保留与可用工时相关的数字与判断。
1. 场景与初始状态
客户是一家约 600 人的研发组织,分为 7 个产品线,同时承担定制交付与标准产品研发两类工作,人员中约 18% 是外包。他们的问题很典型:季度人力计划编制耗时约 11 人天,七个产品线各用一套 Excel,口径互不相同;跨产品线借调频繁,但没有工时依据,全靠总监之间协商;季度末复盘时,实际消耗与计划偏差经常超过 30%,导致下季度计划越来越保守,保守又导致资源闲置,形成负循环。
他们已经在用 PingCode 管理需求、迭代和工作项。这一点很关键,历史工时数据是现成的,缺的只是把它翻译成可用工时的口径和流程。如果从零开始建数据,这个项目的时间会翻倍。
2. 落地的四个动作
- 用两周定口径:七个产品线负责人坐在一起,把四层口径的定义逐条吵清楚,特别是“什么算计划性缺席”和“什么算非项目会议”。最终形成的口径文档只有 2 页,但它成了后续所有争议的仲裁依据。
- 用三周建模板:从 34 字段砍到 13 字段,其中 8 个必填。所有系统可推导的字段全部自动生成,人只填三个:计划性缺席、投入率、缓冲比例。
- 用一个月打通数据:工作项实际工时、迭代容量、团队速率三组数据接入可用工时模型,按周自动生成供给曲线。这一步在 PingCode 的工作项与迭代数据结构上做配置,不需要额外开发。
- 用两个季度跑校准:每月 5 日更新供给,每迭代校准需求,每季度重设承诺基线。前两个季度的重点是让数据变准,不追求指标好看。
3. 三个季度的数据观察
| 指标 | 基线(改造前) | 第 1 季度 | 第 3 季度 | 观察 |
|---|---|---|---|---|
| 季度计划偏差(绝对值均值) | 31% | 18% | 9% | 第 1 季度改善主要来自“把年假算进去”,与技术无关 |
| 计划编制耗时 | 11 人天 | 6 人天 | 3.5 人天 | 下降主要来自字段精简与自动推导,不是来自系统本身 |
| 跨产品线借调冲突 | 17 次/季度 | 11 次/季度 | 5 次/季度 | 冲突下降源于“同一套数字”,协商从立场之争变成数据之争 |
| 迭代承诺达成率 | 62% | 73% | 84% | 提升主要来自显式缓冲,而非团队能力变化 |
| 人均月有效工时(模型值) | 未统计 | 118 小时 | 104 小时 | 模型值下降不是效率变差,而是首次把损耗算清楚了 |
最后一行特别值得说。当组织第一次把有效工时算清楚时,这个数字几乎总是比管理层预期低 25% 以上,而且会引发一轮“效率是不是变差了”的质疑。这个阶段的沟通重点不是解释数字,而是解释“这个数字以前不存在,现在存在了,所以不能和过去比”。我在三个客户那里都遇到过这个坎,处理不好会导致项目被叫停。

4. 两个反直觉的发现
(1)提高投入率估计的精度,反而让预测变差
项目进行到第二季度时,团队尝试用更细的方法测量每个角色的实际投入率,按周采样、按任务类型分类、按人统计。结果发现,投入率估计变精确了,但计划偏差反而从 18% 扩大到 22%。
原因很有意思:当管理者知道自己的投入率会被精确测量时,行为发生了变化。他们开始“保护”自己的数字,把投入率往低了报,把计划性缺席往多了填,以便在执行阶段留出余地。数据的精度提升了,数据的诚实度下降了。最后团队改成按角色分层、按季度取中位数,不再追求个体精度,偏差才回到 9% 左右。
这条经验我后来反复验证:可用工时这类数据的价值在于“可比”,不在于“精确”。一旦测量精度超出管理需要,被测量者就会开始管理测量结果。
(2)管理者第一反应是要人,第二季度才转向砍范围
可用工时透明化之后,七个产品线负责人的第一反应高度一致:我的有效工时比想象中少 25%,所以我要加 25% 的人。这在情理之中,但不是正确的解法,因为缺口是普遍性的,全公司加 25% 的人意味着成本上升 25%,而产出不会同比例上升。
真正发生转变是在第二季度末。当供给曲线和需求曲线第一次叠在一起,管理者看到的不再是“我人不够”,而是“我的需求在时间上分布不均,第 3 周到第 6 周严重超载,第 9 周到第 12 周闲置”。看到分布之后,砍范围、错峰排期、跨团队共享这三类方案才开始被认真讨论,而不是一上来就谈招聘。这是我认为可用工时最重要的管理价值:它把“资源不足”这个无法解决的抱怨,转换成了“供需在时间上不匹配”这个可以优化的问题。
六、不同情况下的行动建议
方法可以统一,落地节奏必须分情况。我不认为有一套适用于所有组织的做法,下面按规模和业务类型给出建议,都是可以直接照做的版本。
1. 按组织规模分档
100 人以下:不要做系统,不要做四层口径。一张表、一个口径、一个负责人就够了。我的建议是:只算第三层可用工时(出勤减计划性缺席),投入率用一个团队级经验值,每季度校准一次。这个规模下,管理层对业务的直觉比数据更准,过度建模的收益极低。
100 到 500 人:这是分层的临界区。必须做角色分层投入率,必须按月滚动供给,必须显式设缓冲。这个阶段最容易犯的错是“用一套 Excel 硬撑”,撑到 300 人左右一定会崩,因为维护成本随人数非线性上升。建议在这个区间就开始把数据挂在已有管理平台上,PingCode 这类面向 100 人以上组织的平台在这一档的性价比最高。
500 人以上:必须做系统化,且必须具备三个能力:口径可配置(不同产品线可以有不同投入率但不能有不同定义)、供给可自动汇总、承诺曲线可视图化。这个阶段人工维护的口径一定会失效,因为跨部门协调一多,口径就会被逐个“协商修改”,最后不了了之。
2. 按业务类型分档
- 项目型组织(定制交付、咨询):重点在“计划性缺席”和“项目间切换损耗”,因为人员经常在多个项目间轮转,并行度是最大变量。建议按并行度设置损耗系数,而不是简单乘一个投入率。
- 产品型组织(标准产品研发):重点在“非项目会议”和“技术支持占用”,因为产品团队往往要同时承担客户支持和内部需求。建议把支持类工作单独建一个工时池,不要混进项目工时。
- 运维与服务型组织:可用工时的算法要重构。7×24 覆盖的场景下,一个人的可用工时取决于排班而不是日历,必须按排班模型计算,直接用 174 小时会导致严重高估。
- 矩阵型组织:最容易出现“一个人被三个部门算进产能”的情况。必须建立唯一的人力归属规则,通常建议按“主汇报线归属供给、按项目分摊消耗”的方式处理。
3. 现在就能做的三步
如果你读到这里想立刻动手,我建议按这个顺序,两周内可以完成第一步。
- 先算一个真实数字:随便挑一个 10 人左右的团队,把上一季度的可用工时和有效工时手工算一遍。不用精确,用估计值也行。你会得到一个让你意外的数字,这个数字比任何说服都有效。
- 再吵一次口径:把这个数字拿到管理层会上,让所有人对“什么算可用工时”发表意见。会议一定会吵,吵完形成的共识就是后续的口径文档。不要试图自己写好再推行,那样一定推不动。
- 最后才选工具:口径确定后,再决定用 Excel 还是用平台。判断标准很简单:如果维护这份数据每月需要超过 2 人天,就该上平台了。

七、不同情况下的取舍
任何方法都有代价。这一节讲四个我反复遇到的取舍,每个取舍我都会给出自己的选择倾向和理由,但结论取决于你的组织状态。
1. 精度 vs 维护成本
可用工时的精度提升是明显边际递减的。从“不算”到“算第三层”,计划偏差能从 30% 降到 15% 左右;从第三层到第四层,能再降到 10%;从第四层再往下做个体级、周级的精细建模,可能只再改善 2 到 3 个百分点,但维护成本会翻两三倍。
我的选择是停在第四层,且只做角色级不做个体级。理由是:管理决策的颗粒度是团队和季度,不是个人和周。超过决策颗粒度的精度不产生决策价值,只产生维护负担和“数字被管理”的风险。如果你的组织处于高速变化期(比如业务方向每季度都在调),我甚至会建议只做第三层,把省下的精力放在需求侧的估算校准上。
2. 统一口径 vs 组织自治
统一口径的好处是可比、可汇总、可审计;坏处是不同业务单元的实际差异会被抹平,导致某些团队的可用工时被系统性算错,进而失去信任。
我的处理方式是分层:四层口径的定义必须全公司统一,投入率和缓冲比例允许各业务单元自治,但必须公开、必须按季度复核。这样既保证了横向可比(因为分子分母定义一致),又保留了业务差异(因为系数可以不同)。反过来做,定义各自定、系数统一给,是最糟糕的组合,会导致数据完全无法比较。
3. 强制填报 vs 自动采集
强制填报的问题是数据质量随填报疲劳迅速下降,三个月后的数据基本不可用。自动采集的问题是很多关键信息(计划性缺席、非项目会议占比)在系统里根本没有记录。
我的做法是把字段分成两类分别处理:客观可采集的(出勤、工作项工时、迭代容量、团队速率)全部自动采集,不给人填的机会;主观需判断的(投入率、缓冲比例)不做月度填报,改成季度评审,一次定一个季度。中间那些既不客观又不重要的字段,直接删掉。
这套组合的结果是:一个人每季度只需要提供 2 个数字,其余全部自动生成。填报负担降到最低,数据质量反而最高。在 PingCode 这类平台上,工作项工时和迭代数据本身就是业务过程的副产物,采集成本接近于零,这也是我倾向用平台而不是 Excel 的核心原因,不是平台算得快,而是平台让数据变成过程的副产品,而不是额外的负担。
4. 缓冲 vs 承诺
最后一个取舍最敏感。缓冲留多了,资源利用率低、被质疑保守;缓冲留少了,承诺兑现不了、信誉受损。
我的经验值是缓冲 10% 到 15%,且缓冲必须显式写在计划里、由业务负责人签字确认。关键在于“显式”两个字:藏在估算里的缓冲会被反复挤压,写在纸面上的缓冲才有约束力。另外缓冲不应是固定值,而应随承诺达成率动态调整,如果上季度达成率是 70%,这季度的缓冲就应该是 20% 左右,因为问题不在估算,在执行。
还有一个反直觉的判断:在多数组织里,缓冲不足造成的损失远大于缓冲过多。缓冲过多损失的是利用率,是账面上看得见的成本;缓冲不足损失的是交付信誉、加班强度、人员流失,这些损失滞后发生且难以归因。所以当你不确定该留多少时,往多了留。

八、把可用工时变成组织能力:三个必须守住的判断
方法讲完了,最后说三个我认为最容易被忽略、但决定成败的判断。这三点不是流程,是立场。
1. 可用工时的第一用途是拒绝,不是汇报
一套可用工时体系如果只用来向上汇报,它很快就会退化成填表运动。它真正的价值在于给管理者一个有依据说“不”的工具。当需求方要求插入一个新项目时,管理者可以拿出供给曲线说:这三周已经超载 18%,插入意味着要么延期某个已承诺项,要么降低质量。这比“我们人手不够”有力得多。
2. 有效工时下降不一定是坏事,要区分“算清楚”和“变差”
前面提过的那次认知冲击值得再说一遍。组织第一次认真算有效工时时,数字通常会大幅低于预期。这个下降有两个完全不同的来源:一是口径补全(以前没算的现在算了),二是真实效率恶化。前者是好事,后者是问题,但两者在数字上看起来一样。
我的区分方法是看同期的工作项实际工时消耗和返工率。如果工作项实际消耗稳定、返工率稳定,而有效工时模型值下降,那就是口径补全;如果工作项实际消耗上升、返工率上升,那才是真正的效率恶化。没有这层区分,你很可能会把一个数据治理成果误判为管理危机,然后叫停它。
3. 承诺曲线要能回答“如果……会怎样”
一份好的可用工时模型,不是给出一个数字,而是能快速回答假设问题:如果砍掉 20% 范围会怎样?如果两个人 8 月休假会怎样?如果新招的人 10 月才到岗会怎样?如果两个产品线共享一个架构师会怎样?
这是我在做模板设计时最看重的一点:模板的字段必须支撑情景推演,而不只是记录现状。这也是为什么我坚持缓冲比例必须显式作为字段,而不是藏在估算系数里,只有显式,才能推演。
下一步怎么走,取决于你现在的位置。如果你还没有任何可用工时口径,先做那个 10 人团队的手工计算,两周内就能拿到第一个数字。如果你已经有口径但计划仍然偏差很大,重点应该转向承诺侧校准,看历史承诺达成率,而不是继续优化供给侧的精度。如果你已经在用系统但数据没人看,问题不在数据,在于使用场景,把可用工时搬进每周的迭代计划会第一屏。如果你正卡在“有效工时下降”的质疑里,去看工作项实际消耗和返工率,用这两个数字判断到底是口径问题还是效率问题。
可用工时这件事,本质上不是算得更准,而是让组织对“我到底有多少产能”这件事形成共识。共识一旦形成,计划、承诺、拒绝、取舍都会变得简单。共识没形成,再精确的模型也只是多一个吵架的素材。
常见问题解答(FAQ)
1. 可用工时到底该怎么算?为什么很多团队算出来的数字明显偏高?
我们部门做人力计划的时候,一直是用人数乘以每月工作日再乘 8 小时,算出来一个月人均一百七十多个小时。但真到月底复盘,实际花在项目任务上的时间连这个数的七成都不到,计划永远完不成。我怀疑是不是一开始的算法就有问题,但又不确定正确的口径应该是什么。
最常见的错误是把「名义工时」直接当成「可用工时」。21.75 天 × 8 小时 ≈ 174 小时,这是法律意义上的出勤上限,不是你能拿来排计划的产能。它没有扣除年假、病假、法定节假日调休、公司培训、周会与复盘会、报销与行政审批、面试、内部技术支持、临时救火。
这些加起来通常吃掉 25%-35%,跨职能团队和技术支持岗还会更高。我在上一家公司做过一次连续三个月的实测:名义工时 174 小时/人月,实际登记到项目任务上的平均是 118 小时,占比 68%,而且这还是剔除了「登记敷衍」之后的数字。
后来我们把排期基准从 100% 下调到 70%,同一个团队的项目按期交付率从 52% 提到了 86%。注意,团队没有变勤奋,变的是我们不再用虚高的分母去做承诺。
我建议用四个系数逐层往下削,而不是拍一个总数:名义工作日 × 每日有效工时(建议 6.5 而不是 8,因为连续深度工作的时长远低于在岗时长)× 出勤系数(扣年假病假,通常 0.92-0.95)× 专注系数(扣会议与打断,知识型岗位 0.75-0.85)× 稳定系数(扣除支援、救火、临时插入,0.85-0.9)。
四项乘下来,多数团队落在 0.65-0.72 这个区间,和我们实测的 68% 是对得上的。一个关键判断:可用工时不是「这个人有多闲」,而是「能被计划确定消耗掉的产能」。所以要严格区分两个口径,「计划可用工时」用于排期和承诺,「实际消耗工时」用于复盘和校准系数。
很多团队失败在于只维护一个数字,月底拿实际去对计划,发现对不上,然后开始怀疑数据造假,其实是两个口径被混成了一个。最后一个实务建议:宁可保守。把计划基线定在 70%,剩下 30% 不是浪费,是缓冲。缓冲被用掉了,说明你在正常运转;缓冲没被用掉,你才有余力做技术债、预案和突发需求。
反过来,按 95% 排满的团队,任何一个人请三天假,整条链路就崩。
2. 用可用工时做人力计划,颗粒度应该细到人,还是粗到角色?
我们现在的做法是排到每个人头上,谁哪天在哪个项目上做哪件事都写清楚。结果是这张表每周都要大改,项目经理一半时间在维护表格,反而没时间管项目本身。我在想是不是颗粒度太细了,但粗了又怕失控。
我的判断是:这不是二选一,而是分两层、用两个时间尺度。早期我也迷信「排到人」,把 40 人的团队排了三个月,每个人的占用精确到 20% 的倍数。结果这张表每周变更 60 多行,两个项目经理一周开两小时会专门对表,一个月后所有人都开始敷衍填。那个项目最后延期六周,而表格一次都没有预警过。
后来我们改成:三个月到半年的容量平衡,只排到角色池(前端、后端、测试、设计、数据);两周的滚动承诺,才排到人。理由很直接,三个月后某个人是否还在这个项目、会不会调岗、会不会离职,你根本不知道,排到人只是在制造精确的假象;但「后端这个季度缺口 1.6 人」这件事是稳定的,它能直接指导招聘和外包决策。
改完之后,同一批人,周变更从 60 多行降到 8 行左右,计划会从 2 小时压到 40 分钟,而计划准确率反而上升了。因为粗粒度的数字没人会去粉饰,细粒度的数字每个人都会本能地往「看起来合理」的方向填。判断标准是看你拿这张表回答什么问题。
「这个季度要不要招人、要不要外包」,必须角色层,因为人层噪音太大,看不出趋势。「下个迭代谁做什么」,必须人层,因为角色层回答不了依赖关系。一张表想同时回答这两个问题,就会两边都不准。还有一个容易被忽略的点:不要追求每个人的可用工时被 100% 占满。健康的个人占用率在 70%-85%。
超过 90% 就进入关键路径风险区,这个人一请假、一病、一被拉去救火,整条链路就断。我们在评审会上会把超过 95% 的人单独标出来,要求项目经理说明「这个人的备份是谁」,说不出来就不批排期。这条规则拦住过两次很严重的单点故障。
3. 一个人同时挂在三个项目上,可用工时该怎么分配才不会互相打架?
我们有几个核心开发同时支持三个项目,排期的时候每个项目都按他能 100% 投入来算,加起来就超了。真做起来三个项目都在等,每个项目经理都觉得是别人占了他的时间。这种共享人员到底该怎么排才不扯皮?
这个坑我踩得很实。有一年三个项目并行,我们让三个项目各自按「这个人可用」来排,结果同一个人被排到了 260%。最后三个项目全部延期,而且没人认账,因为每个项目经理的表格都是「自洽」的,问题出在表格之外。我后来用的办法是先把共享产能冻结出来,再做分配。
具体做法:把一个共享人的月度可用工时先切出 20%-30% 作为「共享池」,不归属任何项目,专门用来接临时需求和救火;剩下的 70%-80% 才分给项目,而且必须写成明确的百分比加明确的时段,比如「周三到周五的 60% 给 A 项目,周一到周二的 40% 给 B 项目」,而不是写「支持 A 项目」。
写成「支持一下」的排期等于没排,因为它的边界由最强势的那个人现场决定。更重要的是把冲突解决规则前置。别等三个人在会上吵起来才决定谁优先。我们用的是三档打分:收入影响(是否直接影响本期确认收入)、合同违约风险(是否有对外承诺的交付日期)、依赖阻塞度(这个人的产出会卡住多少人)。
三项打分排序,排期前就定,会上只做确认不做辩论。这一条把排期会的时间砍掉了一半以上,因为争论从「谁更重要」变成了「打分对不对」,后者是可以被证据说服的。还有一个被严重低估的成本:任务切换。
同一个人挂三个项目、按 33%/33%/33% 平均分配,实际产出通常比只挂一个项目低 20%-40%,因为每次切换都要重新装载上下文。所以正确的做法不是平均切,而是按时间块切,比如周一到周三全部给 A,周四五给 B,让切换次数从每天好几次降到每周一两次。
我们的实测是,把一个人的项目数从 3 个降到 2 个、并按时间块排,他的有效产出提升了大约 25%。最后一条纪律:共享池的消耗必须有记录。如果共享池每个月都被吃光,说明你的「临时需求」其实是常态需求,应该转成正式项目立项,而不是继续用共享池掩盖产能不足。
我们每季度看一次共享池消耗率,连续两个季度超过 90%,就强制要求立项或招人。
4. 可用工时模板做出来了,但没人愿意填,问题出在哪?
我们参考网上的模板做了一版 Excel,字段挺全的,人力、周期、扣减项、占用比例都有。发下去两周,填报率不到三成,填了的内容也不准。是模板设计得不好,还是这件事本身就不该这么做?
先说结论:模板从来不是表格问题,是流程和成本问题。我们做过一版很漂亮的表,18 个字段,还配了颜色和图例,两周后填报率 30%,一个月后彻底废弃。复盘原因有三个,都很朴素。第一,字段太多。填表的人不知道「稳定系数」是什么,也不知道该填 0.85 还是 0.9,于是要么瞎填,要么不填。
后来我们砍到六个字段:人/角色、周期、名义可用工时、扣减项汇总、净可用工时、已承诺工时。砍完之后填报率立刻上去了,因为每个字段都能被一句话解释清楚。第二,数据要手填。这是最致命的。请假、调休、加班、任务工时,这些数据本来就在考勤系统和某项目管理工具里,能导出就不要手填。
我们把请假数据改成从考勤导出、任务工时从某项目管理平台自动汇总,只留「净可用工时」需要人确认,填报率从 30% 一路涨到 95%。人不是不愿意填表,是不愿意重复录入已经存在的数据。第三,一上来就要考核。
第一版模板发下去就挂钩绩效,所有人本能地开始美化数字,占用率永远填 80%,看起来很健康,实际毫无参考价值。后来改成三段式落地:第一个月只记录不考核,允许不准;第二个月开始做计划与实际的偏差分析,只讨论偏差原因不追责;第三个月才把可用工时利用率纳入承诺。这个节奏慢,但数据是真的。
还有一笔账要算清楚:一张工时表的真实成本 = 单次填报时间 × 人数 × 频次。如果每人每天填 15 分钟,20 人的团队一个月就是 100 多个小时,相当于半个多人月的产能。如果这张表带来的决策改善值不回这个成本,就不要做日填报,改成周填报甚至只在排期节点前一次性确认。
我们最后的做法是:日常不填,只在每个迭代开始前用 10 分钟确认一次净可用工时,其余全部自动带入。判断模板好坏的唯一标准是:填完之后,有没有一个具体决策因此变得更好做。如果答案是「没有,只是看起来管理更规范了」,那这个模板迟早会被弃用,而且弃用得不冤。
核心关键词
文章包含AI辅助创作:可用工时实操方法:管理层提升人力资源计划效率的效率提升方法与模板,发布者:飞飞,转载请注明出处:https://worktile.com/solution-1/archives/626796
读者评论
小时折算成95到120小时这个区间,我基本认同,但我们实际跑下来有效工时只有90出头,差额主要在「技术支持与答疑」这块,文中按7%算,在矩阵汇报的团队里这部分经常翻倍。另外,上下文切换那9%几乎没法量化,最后还是要靠拍脑袋,所以我更倾向把它做成固定扣减项,而不是逐项统计。
个字段完整率61%、11个字段完整率94%,这个对比我信,但归因可能反了:字段多的模板往往是跨事业部共用的,填报人本来就不清楚字段含义;字段少的那个事业部业务线单一,自然填得全。真要做对照,应该在同一个事业部内部换模板跑三个季度,否则「约束」这个解释撑不住。
工具那一段说到点子上了,但我遇到的坑是反过来:口径定义清楚了,系统也配好了,可一线不愿意如实填工时,填报率长期在六成上下,速率基线就一直是失真的。所以我觉得落地顺序应该是先解决填报动机,比如把工时和排期绑定,再谈口径统一,不然平台只是把没人填的空表搬到了线上。