1. 从“skills”这个词说起:为什么它突然成了高频词
“skills”这个词,放在三五年前,大家聊起来多半还是招聘JD里的一个栏目,或者简历上罗列的一串名词。但最近一段时间,不管是在技术社区、产品圈还是职场讨论里,这个词出现的频率明显高了起来,而且语境变了——它不再只是“我会什么”,而是变成了“我怎么把会的东西变成可复用、可组合、可交付的能力单元”。
这个转变背后其实有很实在的原因。过去我们谈技能,默认是绑定在一个人身上的:某个人会写Python,某个人会做数据分析,某个人懂用户研究。但现在的协作模式越来越碎片化、项目化,一个人可能同时参与三四个不同性质的事情,每个事情需要的技能组合都不一样。这时候如果还按“岗位”来定义能力,就会非常低效。于是“skills”开始被拆解成更小的粒度,变成一个个可以独立描述、独立评估、独立组合的模块。
我自己第一次认真思考这个问题,是在做一个跨团队协作工具的时候。当时我们要把不同背景的人拉到一起完成一个短期项目,发现最大的摩擦不是技术难度,而是大家对自己“能做什么、做到什么程度”的描述方式完全不同。有人写“熟悉前端开发”,有人写“能做React组件”,有人写“可以独立完成中等复杂度的交互页面”。这三句话看起来说的是同一件事,但实际协作时差距巨大。后来我们尝试用一套统一的skills描述框架来对齐,效率提升非常明显。
所以这篇内容,我想把“skills”这个东西从概念到落地完整拆一遍。它适合谁看?如果你是团队负责人、项目协调人,或者正在做个人能力梳理的开发者、设计师、产品经理,都会有用。我不会讲空泛的理论,而是把我在实际项目中怎么定义skills、怎么分类、怎么评估、怎么组合使用,以及踩过的坑,都摊开来说。
2. skills的本质:不是标签,而是可验证的能力单元
2.1 为什么“我会XX”这种描述基本没用
先讲一个我踩过的坑。早期做团队能力盘点的时候,我让大家填一个表格,列自己掌握的技能。收上来的结果五花八门:有人写“精通Java”,有人写“了解机器学习”,有人写“会做PPT”。这些描述的问题在于,它们既不可验证,也不可比较,更不可组合。
“精通Java”到底是什么意思?是能写Hello World,还是能独立设计一个高并发的服务端架构?这两者之间的差距可能是五年工作经验。“了解机器学习”更模糊,是知道线性回归的原理,还是能调参跑通一个完整的训练流程?至于“会做PPT”,是做那种套模板的汇报材料,还是能独立完成一套面向投资人的商业计划书?
这些描述之所以没用,是因为它们缺少三个关键要素:边界、程度、证据。一个有效的skills描述,必须能回答“这个能力覆盖什么范围”“熟练到什么水平”“有什么实际产出可以证明”。
2.2 一个可用的skills定义框架
我后来总结了一个简单的框架,叫“三要素法”:
- 能力域:这个skill属于哪个大类,比如“后端开发”“用户研究”“项目管理”。
- 具体行为:能做什么具体的事情,用动词开头,比如“设计RESTful API”“主持用户访谈”“制定项目排期”。
- 验证标准:做到什么程度算达标,比如“能独立完成日均十万请求的接口设计并通过压测”“能独立完成一轮不少于8人的用户访谈并输出洞察报告”。
这个框架看起来简单,但实际用起来效果很好。因为它把模糊的“我会什么”变成了具体的“我能做什么,做到什么程度,怎么证明”。
举个例子,同样是“数据分析”这个能力域,用三要素法可以拆成好几个不同的skill:
| 能力域 | 具体行为 | 验证标准 |
|---|---|---|
| 数据分析 | 清洗和预处理原始数据 | 能处理缺失值、异常值、重复值,输出干净的数据集 |
| 数据分析 | 执行描述性统计分析 | 能计算均值、中位数、分布特征,并解释其业务含义 |
| 数据分析 | 构建预测模型 | 能选择合适的算法,完成训练、验证、调参全流程 |
| 数据分析 | 可视化呈现分析结果 | 能根据受众选择合适的图表类型,清晰传达核心结论 |
这样拆完之后,你会发现“数据分析”这个笼统的标签被分解成了四个可以独立评估、独立组合的单元。一个刚入门的分析师可能只具备前两项,一个资深分析师可能四项都具备。协作的时候,你就可以根据项目需要精确匹配。
2.3 skills和岗位的区别:为什么前者更适合现代协作
传统岗位定义是“一个萝卜一个坑”,你招一个“后端工程师”,默认他应该具备后端开发相关的所有技能。但现实中,没有人是全能全知的,而且项目需求往往只需要某几个特定技能的组合。
我见过一个很典型的场景:一个项目需要有人能写API、能写数据库查询、能写单元测试,但不需要懂架构设计,也不需要懂运维部署。如果按岗位招人,你可能招来一个资深后端,他的架构能力用不上,但他对写单元测试可能并不擅长。如果按skills匹配,你就能精确找到“能写API + 能写数据库查询 + 能写单元测试”这个组合的人,不管他的title是什么。
这就是skills思维的核心价值:从“这个人是什么岗位”转向“这个人能完成什么能力单元”。它让协作更灵活,也让个人发展更有方向——你不需要成为某个岗位的“全能选手”,你只需要把几个关键skill打磨到高水准,就能在特定场景下产生价值。
3. 怎么建立一套可用的skills体系:从盘点开始
3.1 第一步:确定能力域的分类方式
建立skills体系的第一步,是确定能力域怎么分。这个分类方式没有标准答案,取决于你的团队性质、项目类型和协作模式。但我建议遵循两个原则:互斥性和完备性。
互斥性是指,一个skill应该只属于一个能力域,不要出现“既算开发又算设计”这种模糊地带。完备性是指,所有需要用到的skill都能被某个能力域覆盖,不要出现“这个skill不知道放哪里”的情况。
我常用的分类方式是按“交付物类型”来分,比如:
- 代码类:写代码、写测试、做代码审查、做技术方案设计
- 文档类:写需求文档、写设计文档、写用户手册、写复盘报告
- 沟通类:主持会议、做演示汇报、做跨团队协调、做用户访谈
- 数据类:数据采集、数据清洗、数据分析、数据可视化
- 设计类:交互设计、视觉设计、原型制作、设计评审
这种分类方式的好处是,每个能力域都对应着明确的产出物,评估起来有依据。而且它不绑定具体的技术栈,不管你是用Python还是JavaScript,写代码这个能力域是通用的。
3.2 第二步:为每个能力域定义具体的skill
分类定好之后,就要往里面填具体的skill。这里最容易犯的错误是定义得太粗或太细。太粗了没法评估,太细了管理成本太高。
我的经验是,一个skill的粒度应该满足:一个有一定基础的人,可以在2到4周内从零学到能独立完成基本任务的程度。如果学一个skill需要半年,那说明它应该被拆成更小的单元;如果学一个skill只需要两天,那说明它可能太细了,可以合并到其他skill里。
以“代码类”能力域为例,我通常会定义这些skill:
- 编写可运行的函数或模块
- 编写单元测试并达到基本覆盖率
- 进行代码审查并给出有效反馈
- 设计中等复杂度的技术方案
- 排查和修复常见缺陷
- 重构已有代码以提升可维护性
每个skill再用前面说的三要素法补充具体行为和验证标准。这样一套下来,一个能力域大概会有5到8个skill,整个体系大概30到50个skill,覆盖一个中小型团队的全部需求。
3.3 第三步:评估当前水平
定义好skill之后,下一步是评估每个人当前的水平。这里我强烈建议不要用“初级/中级/高级”这种模糊的分级,而是用可观察的行为锚点。
比如“编写单元测试”这个skill,可以分成四个水平:
| 水平 | 行为锚点 |
|---|---|
| 0 | 不了解单元测试的概念 |
| 1 | 能在指导下编写简单的测试用例 |
| 2 | 能独立编写覆盖主要逻辑的测试用例 |
| 3 | 能设计测试策略,覆盖边界条件和异常路径 |
| 4 | 能搭建测试框架,制定团队测试规范 |
这种分级方式的好处是,每个人都能清楚地知道自己当前在哪一级,下一级需要做什么。而且评估的时候有具体的行为依据,不是凭感觉打分。
评估的方式可以多样化:自评、互评、基于实际产出的评审。我通常会把三者结合起来,自评占30%,互评占30%,实际产出评审占40%。实际产出评审是最重要的,因为它是客观证据。
注意:评估的目的是发现问题、找到提升方向,不是给人贴标签。如果评估结果被用来做绩效考核或者排名,大家就会倾向于高估自己,整个体系就失效了。这一点我在实际推行中深有体会,一开始没处理好,导致数据失真严重,后来调整了定位才慢慢恢复可信度。
4. skills的组合与匹配:怎么用在实际项目里
4.1 从项目需求反推skill组合
有了skill体系和评估数据之后,就可以在实际项目中使用了。我通常的做法是,接到一个项目之后,先不急着分配人,而是先拆解项目需要哪些skill组合。
举个例子,假设要做一个“用户反馈分析系统”,我可能会拆出这些skill需求:
- 能设计数据采集方案(数据类)
- 能编写数据清洗脚本(代码类)
- 能执行描述性统计分析(数据类)
- 能设计简单的可视化界面(设计类 + 代码类)
- 能撰写分析报告(文档类)
- 能主持需求评审会议(沟通类)
拆完之后,我会给每个skill标注需要的水平等级。比如数据采集方案设计需要水平3,数据清洗脚本编写需要水平2,可视化界面设计需要水平2,等等。
然后拿着这个需求清单去匹配现有人员。匹配的时候不追求每个人都是最高水平,而是追求组合起来能覆盖所有需求,并且整体水平满足项目要求。
4.2 匹配时的几个实用策略
在实际匹配过程中,我总结了几个策略:
策略一:高低搭配。一个高水平的skill持有者可以带一个低水平的,既保证质量,又给低水平的人成长机会。比如数据采集方案设计由水平3的人主导,水平1的人参与学习。
策略二:一专多能。优先选择那些在多个skill上有一定水平的人,而不是在单个skill上水平极高但其他都不会的人。因为项目协作中,跨skill的沟通成本往往比单个skill的深度更重要。
策略三:留出冗余。不要把所有skill都压到一个人身上,也不要让某个skill只有一个人具备。至少保证每个关键skill有两个人能达到基本水平,防止单点故障。
策略四:动态调整。项目进行到不同阶段,需要的skill组合会变化。比如前期需要更多设计类skill,中期需要更多代码类skill,后期需要更多文档类skill。匹配不是一次性的,要跟着项目节奏走。
4.3 一个完整的匹配案例
我之前参与过一个跨平台工具的开发,团队一共6个人。项目拆解后需要12个skill,覆盖代码、设计、文档、沟通四个能力域。我们当时的匹配方案是这样的:
| skill需求 | 需要水平 | 匹配人员 | 实际水平 |
|---|---|---|---|
| 编写核心模块 | 3 | A | 3 |
| 编写辅助模块 | 2 | B | 2 |
| 编写单元测试 | 2 | B | 1 |
| 代码审查 | 3 | A | 2 |
| 交互设计 | 2 | C | 3 |
| 视觉设计 | 2 | C | 2 |
| 原型制作 | 2 | D | 2 |
| 需求文档 | 2 | E | 2 |
| 用户手册 | 2 | E | 1 |
| 主持会议 | 2 | F | 3 |
| 跨团队协调 | 2 | F | 2 |
| 数据分析 | 2 | D | 1 |
从这个表里可以看到,有几个skill的实际水平低于需要水平,比如单元测试、代码审查、用户手册、数据分析。这些就是项目的风险点。我们当时的应对方式是:A和B结对,A在代码审查时带B;E在写用户手册时参考之前的模板;D的数据分析由F协助。最终项目按时交付,质量也达标。
这个案例说明,skills匹配不是追求完美,而是识别差距、提前补位。如果等到项目中期才发现某个skill没人能顶上,那就被动了。
5. 常见问题与排查技巧实录
5.1 skill定义太抽象怎么办
这是最常见的问题。很多人一开始定义skill的时候,会写成“具备良好的沟通能力”“有较强的学习能力”这种。这种定义没法评估,也没法匹配。
排查方法很简单:问自己“这个skill对应的具体行为是什么”。如果答不上来,说明定义太抽象了。比如“沟通能力”可以拆成“能清晰表达自己的观点”“能倾听并理解他人需求”“能在分歧中推动达成共识”“能向上级汇报进展和风险”。每个都是具体行为,都可以观察和评估。
5.2 评估结果大家都不服怎么办
评估结果有争议是正常的,关键是怎么处理。我的经验是,争议往往来自两个方面:一是标准不清晰,二是证据不充分。
标准不清晰的话,回到行为锚点,把每个水平的定义写得更具体。比如“能独立编写测试用例”和“能在指导下编写测试用例”,区别就在于是否需要他人帮助。这个是可以观察的。
证据不充分的话,就补充实际产出评审。不要只看自评和互评,要看代码、看文档、看会议记录。实际产出是最有说服力的。
5.3 有人故意高估自己怎么办
这个问题我在前面提过,根源在于评估结果的用途。如果评估和绩效挂钩,高估就不可避免。解决办法是把评估定位成“发展工具”而不是“考核工具”。
具体做法包括:评估结果不公开排名,只用于个人发展和项目匹配;评估周期拉长,不搞突击评估;鼓励自评时保守一点,因为高估会导致项目匹配失误,最终吃亏的是自己。
5.4 skill体系太复杂维护不动怎么办
这是另一个极端。有些人一开始追求大而全,定义了上百个skill,结果没人记得住,也没人用。
我的建议是:从最小可用集开始。先定义10到15个最核心的skill,覆盖当前项目最常用的能力域。用起来之后,再根据实际需要逐步扩展。不要一开始就追求完备,完备是演化出来的,不是设计出来的。
5.5 常见问题速查表
| 问题 | 可能原因 | 排查方向 | 解决建议 |
|---|---|---|---|
| skill定义太抽象 | 缺少行为描述 | 问“具体做什么” | 用三要素法重新定义 |
| 评估结果有争议 | 标准不清晰或证据不足 | 检查行为锚点和产出证据 | 补充实际产出评审 |
| 有人高估自己 | 评估与绩效挂钩 | 检查评估结果用途 | 调整为发展导向 |
| 体系维护不动 | 定义太多太细 | 统计实际使用的skill数量 | 精简到最小可用集 |
| 匹配时找不到人 | 评估数据不准确 | 对比自评和实际产出 | 重新校准评估标准 |
| 项目中期才发现缺口 | 匹配时没做差距分析 | 检查匹配表的风险标注 | 提前识别并制定补位方案 |
最后再分享一个我踩过的坑:一开始我把skill评估搞得太正式,又是表格又是会议,大家觉得很麻烦,参与度很低。后来我改成轻量化的方式,用在线协作文档,每个人花15分钟填一下,然后我在项目启动会上花10分钟过一遍关键差距,效果反而更好。工具和流程越轻,越容易坚持。
6. 个人使用skills思维的一些体会
这套东西我用了大概两年多,最大的感受是:它逼着我把模糊的东西说清楚。以前说“这个人能力不错”,现在会具体到“他在代码审查和方案设计这两个skill上是水平3,在单元测试上是水平2”。这种精确性带来的好处是,协作时的预期管理变得容易很多,大家都知道彼此能做什么、做到什么程度,摩擦自然就少了。
另一个体会是,skills体系不是一成不变的。项目类型变了、技术栈变了、团队人员变了,skill的定义和评估标准都要跟着调整。我现在的做法是每个季度回顾一次,看看哪些skill需要新增、哪些需要合并、哪些需要重新定义水平锚点。这个回顾不需要很正式,花一个小时过一遍就行。
还有一点,skills思维对个人发展也很有用。你可以把自己当成一个“能力组合”,定期盘点自己有哪些skill、分别是什么水平、市场需要什么skill、差距在哪里。这样你的学习就不是盲目的“我要学XX”,而是有针对性的“我要把XX skill从水平2提升到水平3”。这种目标感会强很多,也更容易坚持。
如果你刚开始尝试,我的建议是从一个小项目开始,不要一上来就搞全团队。先在一个三五个人的小项目里试用,把skill定义、评估、匹配跑一遍,看看哪里不顺手,调整之后再推广。这样风险小,也更容易积累经验。