软件研发行业到底要不要考核?——从 KPI、OKR 到工程文化的一些思考

在软件研发行业中,绩效考核几乎是一个绕不开的话题。

大多数公司都会有各种各样的考核体系:

  • KPI
  • OKR
  • 绩效评级
  • 末位淘汰
  • PIP(Performance Improvement Plan)

但如果仔细观察技术行业,会发现一个很有意思的现象:

越优秀的技术团队,往往越不依赖复杂的绩效考核体系。

例如:

  • Google 早期工程团队
  • Netflix 工程文化
  • GitHub 早期团队
  • Basecamp(原 37signals)

这些团队在快速成长阶段,并没有复杂的 KPI 体系。

这就引出了一个值得思考的问题:

在软件研发行业中,绩效考核究竟解决了什么问题?


一、管理学视角:绩效考核从哪里来

绩效管理并不是现代互联网公司发明的概念。

早在 1954 年,管理学家 Peter Drucker 就在其著作《The Practice of Management》中提出了一个重要思想:

Management by Objectives(MBO,目标管理)

参考资料:https://en.wikipedia.org/wiki/Management_by_objectives

MBO 的核心思想是:

通过明确目标,使员工的工作与组织目标保持一致。

后来,大量绩效管理方法都从 MBO 演化而来。

KPI

KPI(Key Performance Indicator)强调:

通过指标量化组织目标。

参考资料:https://en.wikipedia.org/wiki/Performance_indicator

KPI 在以下行业中非常有效:

  • 制造业
  • 销售团队
  • 呼叫中心
  • 金融服务

这些行业有一个共同特点:

产出容易量化。

例如:

  • 销售额
  • 订单数量
  • 客户数量
  • 生产件数

但软件研发工作却并不完全符合这种模式。


二、软件工程研究:研发绩效很难量化

软件工程领域其实很早就意识到了这个问题。

著名计算机科学家 Fred Brooks 在经典著作《The Mythical Man-Month》中写过一句非常有名的话:

“Measuring programming progress by lines of code is like measuring aircraft building progress by weight.”

参考资料:https://en.wikipedia.org/wiki/The_Mythical_Man-Month

翻译过来就是:

用代码行数衡量程序员的工作,就像用飞机重量衡量飞机制造进度。

这句话后来被软件工程领域反复引用,因为软件开发有几个明显特征。

1、软件开发是一种创造性工作

软件开发更像:

  • 工程设计
  • 系统建模
  • 创造性解决问题

而不是重复劳动。

两个工程师完成同一个任务,效率差异可能是数倍甚至十倍。但这种差异很难用简单指标衡量。

2、软件系统的复杂度极高

大型软件系统的复杂度通常呈指数增长。

很多工程工作的价值在于:

  • 降低复杂度
  • 提高可维护性
  • 提高系统稳定性

这些价值往往很难短期量化。

3、很多技术价值具有延迟性

例如:

  • 架构重构
  • 技术债治理
  • 自动化测试建设
  • 基础设施优化

这些工作在短期 KPI 中往往看起来”没有产出”,但长期价值非常大。


三、Goodhart 定律:指标一旦成为目标就会失效

在经济学中有一个非常著名的定律:

Goodhart’s Law

参考资料:https://en.wikipedia.org/wiki/Goodhart%27s_law

它的核心观点是:

When a measure becomes a target, it ceases to be a good measure.

翻译成中文就是:

当一个指标变成目标时,它就不再是一个好的指标。

在软件团队中,这种现象非常常见。

例如:

如果 KPI 是 Bug 数量,研发可能会:

  • 减少 Bug 记录
  • 延迟 Bug 上报

如果 KPI 是 提交次数,工程师可能会:

  • 刻意拆分 commit

当指标成为考核目标时,行为就会随之改变。


四、OKR 的出现:试图解决 KPI 的问题

OKR(Objectives and Key Results)最早由 Andy Grove 在 Intel 推广。

参考资料:https://en.wikipedia.org/wiki/OKR

后来被 Google 大规模使用。

Google 对 OKR 的解释可以参考:https://rework.withgoogle.com/guides/set-goals-with-okrs/

OKR 的核心思想是:

  • 目标驱动,而不是指标驱动
  • 鼓励挑战性目标

例如:

目标: 提升系统稳定性

关键结果:

  • 故障率降低 50%
  • 自动化测试覆盖率达到 80%

OKR 的设计初衷其实是:

弱化绩效考核的控制属性。

但在很多公司中,OKR 最终变成了:

另一种 KPI。


五、真实案例:当考核脱离管理目标

理论上的绩效考核是为了提升组织效率。

但在现实企业中,很多考核制度的出现,往往并不是出于管理设计,而是源于管理情绪。

下面是我自己经历过的一些真实案例。

案例一:一次”情绪驱动”的考核制度

有一次,公司发生了一件小事,让老板对研发团队有些不满。

第二天一早,公司突然推出了一套研发绩效考核方案。

这套方案的问题在于:

你一眼就能看出来,它几乎和研发效率没有关系。

很多指标明显只是为了增加约束,而不是为了提升效率。

在制度发布之前,公司的一些关键角色甚至提前给我打了”预防针”:

“这个事情你别发作,先配合一下,不然大家都不好看。”

原因也很简单:

  • 这个方案不是我能改的
  • 如果我公开反对,只会让场面更尴尬

于是我选择了沉默。

但结果很快就出现了。

制度发布后的第二天,接近一半研发成员找我谈离职。

大家的反馈几乎一致:

“这个考核明显不是为了做事。”

很快,老板也意识到问题的严重性。

这套考核制度上线没多久就不了了之了

案例二:代码行数考核

有一次领导跟我讨论研发考核指标时,提到过一个想法:

“能不能把代码行数作为一个指标?”

这个想法其实非常典型。

因为从管理视角来看,代码似乎是最容易量化的东西。

但如果真的用代码行数考核,优化方法非常多:

  • 重构代码
  • 拆分函数
  • 增加日志
  • 自动格式化代码

甚至仅仅运行一次代码格式化工具,都可能增加大量代码行。

如果真这么考核,那我很可能很快就会成为:

全公司代码行数第一的”代码 king”。

但很显然,这并不意味着软件质量更好。

案例三:Bug 数量考核

还有一个朋友的公司曾经设计过这样一套考核制度:

  • 研发团队考核: Bug 数量
  • 测试团队考核: 提交 Bug 数量

乍一看似乎很合理。

但仔细想想就会发现一个问题:

双方的激励机制完全相反。

  • 研发希望:Bug 越少越好
  • 测试希望:Bug 越多越好

最终大家的目标就变成了一件事:

谁也别想好过。

这其实正好印证了 Goodhart 定律。


六、绩效考核什么时候才真正有用

这并不意味着绩效考核完全没有价值。

在某些情况下,绩效考核确实是必要的。

1、团队规模扩大

当团队规模达到几十人甚至上百人时:

管理者很难了解每个人的具体工作。

这时候考核体系可以作为一种管理工具。

2、团队效率明显下降

如果团队出现:

  • 需求延期严重
  • Bug 大量增加
  • 工作推诿

考核体系可以帮助重新建立秩序。

3、组织进入成熟阶段

在成熟企业中,绩效考核往往用于:

  • 奖金分配
  • 人才梯队管理

七、优秀技术团队真正依赖的是什么

很多优秀的软件公司在工程文化上有一个共同特点:

高信任 + 高责任。

例如:

Netflix 工程文化强调:

Freedom and Responsibility

参考资料:https://jobs.netflix.com/culture

类似的工程文化也存在于:

这些公司更强调:

  • 工程文化
  • 团队责任
  • 技术判断

而不是复杂的绩效体系。


八、一个现实观察

在很多公司中,当管理层开始:

  • 强化 KPI
  • 严格绩效排名
  • 大量使用 PIP

往往意味着:

组织正在面对增长压力。

这并不一定意味着企业一定会失败。

但通常说明:

管理层开始用制度替代文化。


九、结论

软件研发是一种高度创造性的工作。

相比复杂的绩效制度,真正决定团队效率的往往是:

  • 清晰的目标
  • 优秀的人才
  • 健康的工程文化
  • 懂技术的管理者

如果这些因素存在,考核体系往往可以非常简单。

如果这些因素不存在,再复杂的 KPI 体系也很难解决问题。


参考资料

  1. Management by Objectives - Wikipedia
  2. Performance Indicator - Wikipedia
  3. The Mythical Man-Month - Wikipedia
  4. Goodhart’s Law - Wikipedia
  5. OKR - Wikipedia
  6. Google OKR Guide
  7. Netflix Culture
  8. GitHub Engineering
  9. Basecamp Books