
简介这是一份围绕海氏职位分析法又称“指导图-形态构成法”的系统讲解课件面向人力资源从业者、薪酬体系设计人员及管理类学习者用于解决岗位价值衡量、跨部门职务排序与薪酬框架搭建等实际问题。压缩包共1个pptx文件约624KB文字版内容可编辑便于直接引用或二次修改。课件依次梳理海氏分析法的来源与思想、知识水平和技能技巧、解决问题的能力、承担的职务责任三大付酬要素并配有评分参照表、等级划分要点与海氏计算方式还包含打分练习和两条实践层面的经验之谈。读者可据此掌握各要素的评分关键如技术类岗位从5起评、其他岗位多在1至4之间的差异理解为何该方法能跨越部门边界比较压制工与销售业务员这类性质悬殊的岗位也能认识其在职务数量庞大时的局限。目前已有75人学习适合作为岗位评估与薪酬设计的入门与实操参考。1. 从一份 68 页的 PPT 出发海氏职位分析法到底在给岗位称什么重翻完一份 68 页的海氏职位分析法 PPT三要素、八因素、指导图表这些名词最容易记住最容易卡住的却是最后一步——怎么把它变成一张能算出岗位分数、又能被业务部门认账的表。海氏职位分析法Hay Guide Chart-Profile Method属于要素计点法的一支它不追问岗位每天做什么而是用知识技能、解决问题、应负责任三个要素给岗位称重再折算成职级与薪级带宽。有几十个以上管理岗、职能岗需要定级又不愿意给每个岗位单独写一套标准的组织用它最划算十几人的小团队、以标准作业和计件为主的一线岗位投入产出比很低。决定这套方法成败的从来不是 PPT 里的理论而是编码口径、评委校准和后续重评机制这三件琐事。2. 拆开海氏三要素知识技能、解决问题、应负责任的编码与查表海氏法的输入不是一段职责描述而是三组编码。编码定错一级最终分值可能差出两三百点直接跨掉一个职级。搞清三个要素各自怎么查表、怎么组合是整套方法里最不能省的一步。2.1 知识技能技术、管理、人际三个维度的等级怎么定知识技能不是一个单一刻度而是三个维度拧在一起技术/专门知识/方法A 到 H 八级、管理知识/技巧a 到 e 五级、人际关系技巧1 到 3 三级。一条完整的编码写成F3c这种形式读作技术 F 级、人际 3 级、管理 c 级。技术维度典型描述岗位举例A 基本读、写、简单算术搬运、保洁B 初级按简单规则操作专用设备前台、库管C 中级按流程处理常规问题会计、客服组长D 高级熟练技能加跨流程协调高级会计、生产主管E 基本专门技术本科级专业理论入门专员、初级工程师F 熟练专门技术专业领域独立作业高级工程师、财务经理G 精通专门技术领域内权威实践技术总监、财务总监H 权威专门技术行业级权威首席科学家、集团 CFO管理维度从 a 到 e 依次是最低限度、有关、多样、广博、全面衡量的是这个岗位需要多少计划、组织、协调、控制的分量人际维度 1 到 3 依次是基本获取信息、重要说服影响、关键激励谈判领导。注意判定依据是岗位任职所需不是现任者已具备。拿现任者的学历和资历反推等级是分值虚高最常见的来源。2.2 解决问题思考环境与思考难度构成的百分比海氏法里解决问题是一个百分比乘在知识技能得分上而不是独立加分项。逻辑是知识技能是投入解决问题是这份投入被用出来的程度。它由两个坐标决定——思考环境 A 到 H思考难度 1 到 5。环境 \ 难度1 重复性2 模式化3 中间型4 适应型5 无先例A 严格常规1214161718B 常规1416181920C 半常规1618202122D 标准化1921232425E 明确界定2224262728F 广泛界定2628303132G 一般界定3032343536H 抽象界定3436384042判断口诀是环境看规则难度看先例环境取决于有多少现成规则可循难度取决于有多少先例可参考。表格里的数值是常见的指导图表节选不同版本的百分比会有 1 到 2 个百分点的偏差落地时必须锁定一版不能混用。2.3 应负责任行动自由度、作用性质与规模档应负责任由三个维度决定行动自由度A 到 I、职务对结果的作用性质R/C/S/P、以及按营收或资产划分的影响规模档。维度等级含义行动自由度A 有规定的按明确规程执行几乎无选择C 标准化的在标准做法范围内可自主选择E 有指导的在上级明确指导下做决定G 广泛指导的只在总体政策下受约束I 方针性指导的仅受方针性约束等同最高决策层作用性质R 远程提供信息或服务间接影响结果C 分摊与他人结果合并后产生作用S 共同与其他岗位共同承担结果P 主要对结果起主要、直接作用规模档1 到 4按营收、资产或人数分档作用性质选 P 配合高自由度是一把手岗位的典型组合如果只是提供数据支持却勾了 P分值会被严重放大。规模档要和公司实际体量对齐不能临时按印象调。2.4 三要素合成岗位总分公式与一个可运行的算分函数合成公式只有一行岗位总分 知识技能得分 × (1 解决问题百分比) 应负责任得分下面的实现把三个要素的查表和合成装进一个函数方便批量跑# hay_scoring.py # 海氏三要素计分的最小实现要素编码 - 分值 - 岗位总分 # 字典里的数值为示例口径落地时替换为你确认版本的指导图表数值公式结构不变 KNOW_HOW { # 技术/专门知识维度等级 - 基准分 A: 50, B: 66, C: 87, D: 115, E: 152, F: 200, G: 264, H: 350, } KH_MGMT {a: 1.00, b: 1.08, c: 1.16, d: 1.24, e: 1.32} # 管理技巧乘数 KH_HUMAN {1: 1.00, 2: 1.06, 3: 1.12} # 人际技巧乘数 PS_PERCENT { # 解决问题思考环境(A-H) x 思考难度(1-5)单位 % A: [12, 14, 16, 17, 18], B: [14, 16, 18, 19, 20], C: [16, 18, 20, 21, 22], D: [19, 21, 23, 24, 25], E: [22, 24, 26, 27, 28], F: [26, 28, 30, 31, 32], G: [30, 32, 34, 35, 36], H: [34, 36, 38, 40, 42], } FREEDOM {A: 30, B: 45, C: 66, D: 96, E: 140, F: 200, G: 280, H: 380, I: 500} # 行动自由度基准分 MAGNITUDE {R: 0.6, C: 0.8, S: 1.0, P: 1.3} # 作用性质系数 IMPACT {1: 0.8, 2: 1.0, 3: 1.25, 4: 1.6} # 规模档系数 def know_how_score(tech: str, mgmt: str, human: str) - float: 知识技能 技术基准分 x 管理乘数 x 人际乘数 return KNOW_HOW[tech] * KH_MGMT[mgmt] * KH_HUMAN[human] def ps_percent(env: str, level: int) - float: 解决问题百分比level 取 1-5 return PS_PERCENT[env][level - 1] / 100.0 def accountability_score(freedom: str, magnitude: str, impact: str) - float: 应负责任 自由度基准分 x 作用性质系数 x 规模档系数 return FREEDOM[freedom] * MAGNITUDE[magnitude] * IMPACT[impact] def hay_total(job: dict) - dict: kh know_how_score(job[kh_tech], job[kh_mgmt], job[kh_human]) ps ps_percent(job[ps_env], job[ps_level]) ac accountability_score(job[ac_freedom], job[ac_magnitude], job[ac_impact]) return {know_how: round(kh, 1), ps_pct: ps, accountability: round(ac, 1), total: round(kh * (1 ps) ac, 1)}kh_tech、kh_mgmt、kh_human对应知识技能的三个维度编码ps_env和ps_level决定解决问题的百分比ac_freedom、ac_magnitude、ac_impact决定应负责任得分。三个要素里知识技能和应负责任是量纲相同的绝对分解决问题是以百分比形式挂回知识技能的所以它永远不会单独把岗位推高——这一点在向业务解释时非常有用想涨级要么提升岗位所需的知识技能要么提升它的责任范围光工作更费脑子是换不来分数的。3. 把海氏评分做成可复用的计算引擎SQL 建模与 Python 打分一套岗位评估如果靠 Excel 单体文件传第二轮就没人说得清某个岗位的分是谁改的。把要素编码、评估记录、职级映射放进数据库用脚本打分才是能撑住几百个岗位的做法。3.1 岗位与评估记录的表结构设计设计的关键是编码和分值分离表里只存编码分值由脚本按版本号算出来这样指导图表更新时只需换一版字典重算历史结果仍然可追溯。-- 岗位主表只存要素编码不存分值和职级 CREATE TABLE position ( position_id VARCHAR(32) PRIMARY KEY, position_name VARCHAR(128) NOT NULL, dept_id VARCHAR(32), kh_tech CHAR(1) NOT NULL, -- A-H kh_mgmt CHAR(1) NOT NULL, -- a-e kh_human CHAR(1) NOT NULL, -- 1-3 ps_env CHAR(1) NOT NULL, -- A-H ps_level TINYINT NOT NULL, -- 1-5 ac_freedom CHAR(1) NOT NULL, -- A-I ac_magnitude CHAR(1) NOT NULL, -- R/C/S/P ac_impact CHAR(1) NOT NULL, -- 规模档 1-4 is_benchmark TINYINT DEFAULT 0, -- 是否标杆岗位 version_id INT NOT NULL, -- 评估批次 updated_by VARCHAR(64), updated_at DATETIME, KEY idx_version (version_id), KEY idx_dept (dept_id) ); -- 评估记录表一个岗位多评委打分用于后续一致性检验 CREATE TABLE eval_record ( id BIGINT AUTO_INCREMENT PRIMARY KEY, position_id VARCHAR(32) NOT NULL, version_id INT NOT NULL, evaluator VARCHAR(64) NOT NULL, raw_score DECIMAL(10,1) NOT NULL, reason VARCHAR(512), -- 评分理由必须写 created_at DATETIME, UNIQUE KEY uk_pos_ver_eval (position_id, version_id, evaluator) );position表刻意不存total_score和grade因为这两样是计算派生值。一旦把它们固化在岗位表里某次指导图表口径调整就会造成新旧数据混排。eval_record里的reason字段不要省评委打分不写理由事后分歧根本无法复盘。3.2 从要素编码到总分的打分函数把第 2 章的函数挂到数据库上做批量计算import pandas as pd from sqlalchemy import create_engine from hay_scoring import hay_total engine create_engine(mysqlpymysql://user:pwdhost:3306/hr?charsetutf8mb4) jobs pd.read_sql( SELECT * FROM position WHERE version_id %(v)s, engine, params{v: 2025} ) # 逐行调用打分函数返回 dict 列表再横向拼回原表 scored pd.DataFrame([hay_total(r) for r in jobs.to_dict(records)]) result pd.concat([jobs, scored], axis1) # 按分数排序看分布先人工扫一眼有没有明显离群点 result result.sort_values(total, ascendingFalse) print(result[[position_id, position_name, total]].head(20))pd.read_sql的参数化查询避免把批次号硬拼进 SQLto_dict(records)把 DataFrame 转成函数需要的字典结构返回的四个字段里total是最终分另外三个用来做解释和复核——业务部门质疑某个岗位分值高直接把这三个拆项甩出来比讲道理有效得多。3.3 批量打分与职级带宽的初步切分分数出来后不要直接按等距切级先看分布形状# 分位数看分布判断是连续型还是双峰型 print(result[total].describe(percentiles[.1, .25, .5, .75, .9])) # 初稿按分位数切成 8 个职级仅用于观察不作为最终定级依据 result[grade_draft] pd.qcut(result[total], q8, labelsFalse) 1如果分布是双峰说明公司里实际存在两套差异很大的岗位族硬切 8 级会让中间几级空掉。分级断点最终应该由标杆岗位的分数和对应市场薪酬分位共同决定qcut只是让你先看到形状。职级分值区间带宽相邻级重叠G5400 以下45%—G6380 到 52045%25%G7480 到 66045%28%G8620 到 86045%30%G9800 到 112050%30%带宽指同一级内最高分与最低分的相对差值职能岗常见 40% 到 50%管理岗可以到 60%相邻级重叠度控制在 25% 到 40% 之间重叠太低会让晋升变成跳崖太高则两级之间没有实质差别。3.4 评估批次与版本留痕version_id不只是个标记它决定重算的边界。每次指导图表口径调整、组织架构大改、或者新增一条业务线都应该新开一个批次旧批次的分值原样保留。审计时能回答这个岗位去年定的是几级、依据是哪一版图表的才算把海氏法真正跑进了系统而不是停在一份 68 页的 PPT 里。4. 海氏职位分析法落地实践中的高频坑与校准手段同样是三要素打分有的公司三个月跑完全部岗位并顺利切薪级有的折腾一年还在返工差别几乎都出在下面这几处。4.1 标杆岗位选错整条职级序列都会歪标杆岗位是坐标原点后面的断点、带宽、市场对标全挂在它身上。挑选标准是职责长期稳定、市场上同类岗位数据充足、覆盖各个层级、数量占全部岗位的 10% 到 20%。常见错误是挑那些最有代表性的部门负责人结果入选的全是管理岗技术序列和职能序列一个锚点都没有最后只能靠感觉补断点。提示标杆岗位一旦确定评估批次内不要随意增删。中途加锚点前面算过的分数全部需要复核。4.2 评委分歧大用肯德尔和谐系数把分歧量化评估委员会打分的价值在于交叉验证但如果五位评委给同一个岗位打出 300 到 800 的跨度说明不是岗位难评而是编码口径没对齐。分歧程度可以用肯德尔和谐系数Kendalls W量化import numpy as np def kendall_w(scores: np.ndarray) - float: scores: 行岗位列评委值评委给该岗位打的分 n, k scores.shape # n 个岗位k 位评委 # 先按评委列做秩转换argsort 两次得到 1..n 的秩序列 ranks np.apply_along_axis(lambda col: np.argsort(np.argsort(col)) 1, 0, scores) R ranks.sum(axis1) # 每个岗位的秩和 S ((R - R.mean()) ** 2).sum() # 秩和的离差平方和 return 12 * S / (k ** 2 * (n ** 3 - n)) # 例5 位评委给 12 个岗位打分 matrix np.array([ [ 520, 560, 500, 540, 530], [ 310, 280, 330, 300, 295], # ... 其余岗位 ]) print(round(kendall_w(matrix), 3))n是参与检验的岗位数k是评委数。W 取值 0 到 1低于 0.5 说明评委之间几乎没有共识0.5 到 0.7 属于勉强可用0.7 以上才适合直接进入职级映射。检验显著性的卡方值为k × (n - 1) × W自由度n - 1。实操上更有效的做法不是算完就完而是把 W 最低的那几个岗位单独拎出来重评——通常问题集中在跨部门协作岗位因为不同评委看到的职责面完全不同。4.3 岗位说明书与实际职责脱节岗位说明书如果写成负责本部门日常管理工作任何编码都套得进去。有效的描述要落到动词加产出物对什么对象、做什么动作、交付什么结果、受谁审核。评估前逐条比对说明书和实际工作内容差距超过三成的岗位先修说明书再进评估否则评的是历史文件不是岗位。4.4 评估批次不复盘分数变成化石岗位评估不是一次性项目。下面这张表是我常用的重评触发条件清单触发条件建议动作优先级组织架构调整涉及两级以上全量复核受影响序列高单个岗位职责变动超过 30%单岗位重评高新增业务线或新设部门新岗位评估加锚点校验中市场薪酬数据年度更新复核断点与带宽不动要素编码中指导图表口径调整新开批次全量重算高不设触发条件的后果是三年后没人说得清某个岗位为什么是 G7评估结果彻底失去解释力。4.5 硬套到操作岗和纯研发岗的后果海氏法的三个要素天然偏向管理责任和决策影响用在流水线操作岗上十几个岗位会挤在最低两三档里区分度接近零还不如用岗位技能工资。纯研发岗则相反解决问题维度容易被拉满但应负责任的自由度维度又普遍偏低算出来的总分常常低于实际市场价值。常见做法是给操作岗单独走技能等级序列给研发岗用能力素质模型加市场定价双轨制海氏法只覆盖管理和职能序列。5. 海氏职位分析法本身怎么评价信度、效度与换法时机一套评估方法用两年之后总有人问这套东西准不准。回答这个问题不需要辩论需要两组数据。5.1 信度评分者一致性要达到什么水平信度回答的是换一批评委结果是否稳定。除了 4.2 里的肯德尔和谐系数还可以用组内相关系数ICC衡量绝对一致性。多轮评估的数据口径是同一批岗位、同一批评委、不同时间各评一次计算两次结果的相关系数。from scipy.stats import spearmanr # 第一轮与第二轮对同一批 20 个岗位的总分 rho, p_value spearmanr(round1_scores, round2_scores) print(f重测相关系数 rho{rho:.3f}, p{p_value:.4f}) # 经验阈值rho 0.85 视为可接受0.7-0.85 需要检查编码口径秩相关而非皮尔逊相关更合适因为岗位总分是有序等级意义上的量且存在少量离群岗位。rho低于 0.7 时先查两轮之间是否有评委更换、标杆岗位调整或口径变更这三件事是最常见的干扰源。5.2 效度海氏分与市场薪酬的相关性检验效度回答的是分数能不能解释现实。把标杆岗位的海氏总分和对应市场薪酬中位值做秩相关rho在 0.8 以上说明这套评估结果和市场定价逻辑一致可以直接用来做薪酬对标低于 0.6 说明内部评估和外部市场脱节通常是因为要素编码偏向了资历而忽略了稀缺性。指标合格线偏低时的排查方向重测信度 rho0.85评委更换、口径变更、标杆调整Kendalls W0.70职责描述模糊、跨部门岗位定义分歧与市场薪酬 Spearman rho0.80稀缺岗位未单独定价、编码偏资历5.3 什么时候该放弃海氏法三种情况下继续维护海氏法的成本会超过收益组织规模长期稳定在五十人以下岗位差异本来就小岗位结构中操作类和创意类占比超过七成三要素覆盖不到业务迭代速度导致岗位职责平均存续期短于一年评估刚做完岗位就没了。遇到这些情况更省事的替代方案是宽带职级加市场定价——只维护职级带宽和薪酬分位不维护岗位分值。把上面三条阈值写进评估系统的自动校验里任何一批评估数据在入库前先跑一次一致性检查W 低于 0.7 的批次直接拦下、不允许进入职级映射比分完再回头争论要省掉大半年返工。本文还有配套的精品资源点击获取