更便宜的人才假设

2008年2月8日

软件界普遍接受的一种观点是,有才华的程序员效率更高。由于我们无法衡量生产力,这是一个无法证实的观点,但似乎合乎情理。毕竟,几乎所有的人类活动都表明有些人比其他人更优秀,而且往往明显得多。程序员自己也经常观察到这一点,尽管这似乎总是由那些认为自己属于更有才华类别的人所评论。

自然而然,更有才华的程序员成本更高,无论是全职雇用还是外包。但有趣的问题是,尽管如此,更昂贵的程序员实际上更便宜吗?

表面上看,这似乎是一个愚蠢的问题。更昂贵的资源如何最终变得更便宜?诀窍,正如往常一样,是考虑成本和价值的更广阔图景。

尽管科技界普遍认为有才华的程序员比一般程序员效率更高,但由于无法衡量,他们无法得出实际的数字。所以让我们为了论证起见,假设一个数字:2。如果你能找到一个效率高两倍的程序员,其薪酬不到一般程序员的两倍,那么该程序员最终会更便宜。更一般地说:如果更高效的开发人员的成本溢价低于该开发人员的更高效率,那么雇用更昂贵的开发人员会更便宜。更便宜的人才假设是,成本溢价确实更低,因此雇用更高效的开发人员更便宜,即使他们更昂贵。

如果有人没有注意到,这个假设是我们 Thoughtworks 哲学的关键部分,也是我最终从独立顾问转向加入的原因之一。我们相信,即使我们的价格更高,我们最终也会为客户节省成本。当然,我们确实很难说服许多客户相信这一点——缺乏客观的生产力衡量标准再次出现。我还记得与一位潜在客户的会面,他抱怨我们的价格高于一家公司,该公司之前曾尝试过我们正在竞标的系统,但最终失败了。我们不得不礼貌地指出,为一个没有产生任何价值的项目支付更低的价格绝不是明智的财务策略。

更便宜的人才假设有一些显著的后果。最值得注意的是,它实际上遵循一个正向的规模效应——团队越大,更便宜的人才带来的好处就越大。假设我们在某个平行宇宙中组建了一支由十名有才华的开发人员组成的团队,我们实际上已经衡量出他们的效率是普通开发人员的两倍——因此他们的雇用成本恰好是两倍。在这种情况下,你可能会自然地假设一支由普通程序员组成的竞争团队将由二十人组成。

问题是,这种假设认为生产力随着团队规模的线性增长而线性增长,而观察结果表明并非如此。软件开发在很大程度上依赖于团队成员之间的沟通。软件团队中最大的问题是确保每个人都了解其他人在做什么。因此,生产力随着团队规模的增长而呈非线性增长。和往常一样,我们没有明确的衡量标准,但我倾向于猜测它更接近平方根。如果我们以我的无证据猜测为基础,那么要获得两倍的生产力,我们需要将团队规模扩大四倍。因此,我们的普通人才团队需要有四十人才能与我们十名有才华的人相匹配——此时,成本是两倍。

另一个起作用的因素是上市时间。假设有两个四人团队,一个有才华,一个普通。为了使我们的论点对我们的有才华的团队不利,忽略前面的段落,并假设有才华的团队的效率只是普通团队的两倍。如果才华横溢的团队收费两倍,那么我们可以假设从财务角度来看,我们选择哪个团队都没有关系吗?

恐怕才华横溢的团队再次获胜。他们将在普通团队的一半时间内完成项目,这意味着客户将更早地从交付的软件中获得价值。这种更早的价值,加上货币的时间价值,代表着选择才华横溢的团队的财务收益,即使他们的每单位产出成本相同。

敏捷开发进一步加速了这种效应。一支才华横溢的团队比一支普通的团队拥有更快的循环时间。这使得整个团队能够更快地探索选项:构建、评估、优化。这加速了生产更好的软件,从而产生更高的价值。这加剧了上市时间效应。(并且自然地假设,一支才华横溢的团队更有可能在任何情况下都生产出更好的软件。)

更快的循环时间会导致更好的外部产品,但也许才华横溢的团队所能做出的最大贡献是生产出具有更高内部质量的软件。在我看来,有才华的程序员和普通程序员之间的生产力差异可能小于良好的代码库和普通的代码库之间的生产力差异。由于有才华的程序员倾向于生产良好的代码库,这意味着生产力优势会随着时间的推移而累积,因为内部质量也会累积。

所有这些听起来,至少对我来说,是一个非常有说服力的论点。这也是一个被广泛接受的论点(至少被那些认为自己有才华的程序员所接受)。但它离被整个软件行业接受还很远。我们可以从有才华的开发人员的溢价(在薪资/外包费用方面)低于生产力差异中看出这一点。造成这种情况的主要原因可能是无法客观地衡量生产力。雇主无法客观地证明更昂贵的程序员实际上效率更高。只有更高的成本是客观的。因此,雇主必须将对更高价值的主观判断与客观更高的成本相匹配。许多雇主,即使他们认为有才华的程序员在个人方面值得,也不愿意向经理、人力资源和采购部门解释更高的成本。

这种效应被即使进行主观评估的难度所加剧。在 Thoughtworks,我们依靠同行评估——开发人员的能力由团队成员进行评估。结果并非精确无误,但这是任何人都能做到的最好的事情。

所有这些都表明,招聘和留住有才华的程序员是一项艰巨的工作。招聘和评估是一项艰巨的工作。你必须处理那些有着非常个人愿望的人,这些愿望更需要跟踪,因为他们实际上是被低估的。因此,雇主面临着额外的工作和更高的成本,而仅仅是对更高生产力的判断。

因此,我理解这种情况,但并不接受它。我相信,如果软件行业要实现其潜力,它需要认识到更便宜的人才假设,并缩小高生产力和更高薪酬之间的差距。