人才是最重要的
2005年3月21日
我逐渐意识到,软件开发中有一些基本原则。如果要选择一个作为软件开发的关键,那就是软件开发工作中最重要的因素是参与工作的人员。最优秀的开发人员的生产力远远超过平均水平,远远超过工资差异。因此,获得具有成本效益的软件开发的最重要部分是组建最优秀的团队,即使开发人员的个人成本远高于平均水平。少数高能力(且昂贵)的人员将比许多低能力(便宜)的开发人员的生产力高得多。这种生产力差异意味着,即使少数高能力人员的日薪更高,他们也会以更低的成本生产软件。
很多人都会这么说,但很少有人真正做到。许多人只是放弃,说“你不可能拥有一个全明星团队”,就好像有一条自然法则阻止了这种情况。我不同意这种说法。我认为组建这样的团队确实很难(更不用说整个公司了,而Thoughtworks正在努力做到这一点),但好处值得付出努力。
为什么这么难?首先,你必须创造一个让高能力的极客感到舒适的环境。这需要做很多对许多会计和经理来说毫无意义的事情——这就是我开始相信 IT 机构天生无法做到这一点的原因。正是这种基本假设让我加入了Thoughtworks。我认为,这里有一家公司愿意付出艰苦的努力,来使这种软件开发环境得以实现。
最近,我突然意识到另一件事。大多数作家,包括我自己,都在谈论这些事情,并强调人员的能力非常重要。虽然这是真的,但它忽略了一个事实,那就是这不仅仅是能力的问题——它也是合作能力的问题。Thoughtworks之所以是一个如此好的地方,原因之一是每个人都非常愉快,与他们一起工作很愉快。这并非偶然——Thoughtworks在文化中做了很多努力来培养和鼓励这种氛围。这并不容易做到,这也是我认为大多数大公司发现很难在内部建立这种组织的另一个原因。
有趣的是,我最近才更加意识到这一点。我清楚地记得我在职业生涯早期,刚开始独立工作时做出的一个决定。我当时决定,无论他们能力多强,我都不想和不愉快的人一起工作。我不会与他们争吵,只会避开他们。我决定,无论与能力强的混蛋在一起会带来什么好处,这都不值得我费心。我从未后悔过这个决定,但它已经深深地融入我的公理基础,我忽略了它。即使我加入Thoughtworks,我也没有意识到这是我加入的原因的一部分——再次专注于能力问题。然而,这显然是我加入的原因的一部分,出于某种原因,我现在对此有了更多的意识。
每当我这样说的时候,我认为提醒大家很重要,Thoughtworks还有很长的路要走,才能成为我认为它应该成为的那种组织。我在这里,是因为仅仅持有关于正确软件组织的观点是不够的——我相信我也有责任帮助建立它。