弗拉基米尔·基谢廖夫 ⋯ 文章

如何衡量开发者的生产力。


照片:David Yu,来自 Pexels

前几天我在听 Microsoft Research 的一期播客(New Future of Work: How developer collaboration and productivity are changing in a hybrid work model,https://www.microsoft.com/en-us/research/podcast/new-future-of-work-how-developer-collaboration-and-productivity-are-changing-in-a-hybrid-work-model/)。

说明:这期播客本身就很有意思。我的评论完全可以跳过,它只是基于我自己的观察。

播客里谈到的一个话题是开发者的生产力,我想就这一点分享一些想法。

模型

如果把一个指标看作某个不完美模型的属性,评估它就容易多了:它是某个维度上的一个值,代表模型的一种特质。

我们来看一个模型和它的属性的例子。

一架飞机离开了地面。你得解释为什么。

  • 物理学家大概会建一个模型,用牛顿定律、伯努利原理、翼型(帮飞机升起来的机翼形状)等来解释起飞。
  • 经济学家大概只会说:因为把飞机从 A 地飞到 B 地划算。也许干脆用钱来衡量:把风险算进去之后,产出或潜在产出的价格高于投入。说白了,大家买了票,所以飞机会飞(我常拿这个开玩笑,来说明不同模型之间的区别)。
  • 太空时代的工程师也许会说,只要发动机合适,又能改变推力的方向,就连奶奶的旧五斗柜都能飞得很好。
  • 从化学出发的解释大概会关注燃料,也会涉及物理。

我觉得这些解释都不错。它们只是用了不同的模型,也许能帮使用者发现一些值得修正的地方。但只凭片面的视角去修正什么是危险的,尤其是当模型本身只有寥寥几个可测量的属性时。模型越简单,能测量的属性越少,就越难确定改动被建模的那个东西不会酿成灾难。好例子是:想用代码解决一个物理问题,却无视基于物理的解决办法;或者只根据一个财务模型来决定给开发者配什么电脑。至少应该有反馈:一个更底层的模型,或者起码是人的反馈。

此外,当模型缺少足够多的可测量属性时,就有一种风险:搭起来的结构会努力交出好看的测量数据,而不是真正的产出。比如代码行数、修复的问题数、完成的拉取请求数。如果只盯着这些,理论上被测量的那群人大概会去适应它:写出更多行代码,制造更多要修的 bug,做更多不必要的改动,只为了捧走“效率奖杯”。

上下文

简单的数学告诉我们:2 * 5 = 5 * 2。但对人来说,结果会因上下文而大不相同。比如去买菜:你可以拎着 2 袋往返车上 5 次,也可以拎着 5 袋往返 2 次。

就算你只为一个司机单独建模,哪怕这位司机非常有天赋,上下文仍然很容易拉低其表现(例如,在一个司机们都开得不怎么样的地方,好司机也可能举步维艰)。

我的意思是,脱离上下文去测量是个好主意吗?我不这么认为。拉取请求的数量如果单独测量、只用一个数字来表达,并不是好指标。拉取请求之间“谁引出了谁”的关系图也许更好(一个改动可能让后面许多改动成为可能)。可即便如此,能公平地说,做不做影响深远的大改动只取决于开发者本人吗?就开发者的生产力而言,团队就是上下文,需求是团队的成果,所以很难说开发者的工作能简单地用一个数字来表达。

投入与结果

我认为,结果(产品、软件、各种属性等)不应该是唯一被测量的东西。似乎也有必要考虑投入,并同样去测量它。

举个例子:过去有段时间,我在 Teams 里同时进行着 5 个以上的对话。有一阵子,我甚至想提议做一个应用功能,让开发者更容易管理这条队列,还能让经理来决定怎样排优先级最好。我认为,由于短期工作记忆的弱点,人很难同时专注于太多事情(顺便说一句,黑猩猩在这方面比我们强)。

在 YouTube 上观看 ↗

远程办公的时代,别人更难看到你此刻同时在进行多少个对话。我觉得,只要让别人能看到你的决策队列有多长,这个问题就能解决。这是个好的测量,但也许不是用来衡量开发者技能的,而是用来研究沟通关系图、从整体上简化流程的(例如,有向无环的沟通可能更快,“不用来回拉扯”)。

总的来说

我认为,更合理的是对团队建模和测量:看团队基于投入和上下文交付了什么(产出)。光是这一点,就有可能帮组织获得足够的反馈来改进。开发者的生产力可以通过其所在的团队来衡量。

如果有人非要画出一个与单个开发者生产力相关的数字,最后可能得到一个毫无意义的数,就像抽象的电脑性能指数。好吧,指数是 10,可真正的问题是:我能不能跑得动新出的增强版《上古卷轴》?

所以,我的答案是:如果你想更了解团队成员的生产力,并帮他们提高生产力,就去和他们聊聊。但不要脱离他们所在团队的上下文来使用这些数据。老派的一对一谈话会很有帮助,也许比基于产出的自动化还要有用。

另见后来写的:LLM 来了,我该怎么办,进一步谈不完美的模型和思维体系。

原文发表于 Medium:https://medium.com/@nettsundere/on-how-to-measure-the-developers-productivity-b7df7d572d2a