程序员不是砌砖工人,他们是作家

为什么说上面的想法很荒谬?因为我们没有一种简单又有效的方法来衡量程序员的生产力。一旦碰到我们无法衡量的东西,我们就会忽略它。

我这样问你好了:你是愿意让两个新手来照顾你的宝宝,维修你的车,给你做腰椎穿刺,还是宁愿找一个资深的?

相关研究表明,最好程序员的生产力最高可比最差程序员的高28倍。但是用在这些最好程序员身上的成本肯定不会有这么多,所以他们是软件领域中最划算的“特价商品”。
ROBERT GLASS,《FACTS AND FALLACIES OF SOFTWARE ENGINEERING》

如果你一定要比较的话,那么其实程序员更像是作家。

有些作家写出的东西能数以百万计地卖出去,而有些作家写出来的东西无聊至极最后只能用来烧火用!

但是,他们都生产出了一本书,因此,他们都是作家。可是除非你去阅读他们的书,否则你就不会知道他们俩的差别。

 
编程经理老早就认识到好程序员和差程序员两者的生产力有着天囊之别。但实际测得的数据结果依然让我们所有人都大吃一惊。在
研究中,Sackman、Erickson和Grant想要衡量一组经验丰富的程序员的表现。结果表明,最佳和最差的生产力比例平均约为10:1,特别是
编程速度的比例令人吃惊地达到5:1!
FRED BROOKS,《THE MYTHICAL MAN-MONTH》

下面我给你讲一个真实的故事。(有关名字已作更改。)

一家软件公司需要在他们的标志产品中实现一个新的模块。Mr Lousy(差先生)刚好有空,于是就将这个任务交给了他,让他立马开工!

经过四个月的修修补补,差先生终于完成了。 QA团队发现存在着大量的bug和矛盾之处,并将报告返回给差先生。差先生根据报告又花了2周的时间来修复这些bug,并最终给出了一个新的版本!那些该死的恼人bug真是绞尽了差先生的脑汁。

测试然后修复,如此循环了两三次。

用户已经在期待这个新的模块。销售人员也签署了一些新的客户。把这个模块做出来,并整合到下一版本中这一过程的压力之大可想而知。但是,所幸,成功了!开香槟庆祝吧!

呀,不对,新模块中依然满是bug。群众的眼睛总是雪亮的,客户总是特别擅长于找到一些以前从未被发现的bug。于是他们联系技术支持。技术支持团

队再去找是什么地方出了错,是客户不知道如何操作功能,还是他们自己搞错了,抑或这只是一个bug,一个可以重现的bug。……然后技术支持团队提交了错
误报告。于是,差先生悲剧了,——我的意思是,哪怕他正在搞另一个项目,在这个时候也只能放下手头的一切工作来解决这些麻烦事。

(这还没有涉及到代码的维护性,逻辑性和文档化问题——因为以后肯定会有其他人来改进这些代码)

但是,唉,怎么说呢……似乎有一些bug超出了差先生的能力范围,他根本修复不了。此外,不断出现的新bug,没人知道确实它们是新出来的,还是以
前就有但就是没有被发现而已的。技术支持烦不胜烦。而销售越来越恼火,因为新客户纷纷表示这个模块太不靠谱了,他们要取消合同!

最后,老板不得不让Mr Rockstar(好先生)来看一看这些代码。

好先生并不想为差先生收拾烂摊子,很多结构在他眼中都是没有意义的。他建议重写代码,预期大概需要一个月的时间。然后他开工了,只比原先估计的多了
几天就完成了模块(他是好先生,而不是完美先生)。除了QA团队发现了一些小错误,一切都能如期工作。
QA团队在心里默默担心:如果所有的程序员都像他一样,那他们就没有用武之地了。差先生认为好先生这是在傲慢地嘲笑他,但他的看法对好先生而言是无关紧要
的。

改进过的模块很快发布了。每个人都很高兴,因为终于可以正常工作了。万岁!

现在真的到了可以开香槟庆祝的时候了!

但是此时,似乎所有人都忘记了好先生只用了一个月左右的时间就成功搞定了差先生用了七八个月也搞不定的任务。

这两个开发人员生产力水平的巨大差异由此可见一斑——他们执行的是完全相同的任务。

 
通过编写更精简但功能更多的代码,通过编写bug更少更易于维护的代码,一个优秀的开发人员可以减轻QA人员,同事和管理人员的工作压力,提高身边每一个人的生产力。这就是为什么研究得出的这些数据,如28倍的生产效率是可能的,甚至可能还报低了,如果你纵览全局的话。
PHIL HAACK,《10 DEVELOPERS FOR THE PRICE OF ONE》

那么,在这个故事中可能会发生的最糟糕的事情是什么呢?

好先生终于注意到他比差先生的效率要高得多:他能轻易识别不良代码。但是尽管如此,他很肯定自己的薪资和差先生的差不多。他表示不满,甚至于毅然决然地离开。于是你的开发团队失去了一个高效的力量支柱。

即使他不离开,当面对由于发布/项目延迟导致的整个团队的加班,他会怎么想?离开是必然的,只是时间早晚而已。

并且,如果你真的运气实在不佳,提了另一个人去取代好先生的位置,却不幸是另一个差先生的话,那我就只能默默地为你点根蜡烛了。

那么,为什么我们总是习惯于忽略这个事实呢?

因为忽视比纠正问题容易得多——至少某种程度上,的确如此。并且没人愿意做告发同事的小人,成为他丢掉饭碗的原因:因为搞不好差先生上有高堂要赡
养,下有儿女嗷嗷待哺;或许他刚刚买了新房子,每个月都要还贷——最重要的是,真的很难衡量开发人员的工作效率,除非你让他们俩做相同的任务来做对比,就
像上面的故事一样。

于是我一直在想这个问题:该如何衡量开发人员的工作效率。我很嫉妒做销售的,因为他们的薪酬是根据业绩来的。我有一些想法(还不成熟)能让你去其糟粕取其精华。我也有一些想法关于如何识别、吸引和留住好的开发人员。

我的身份以及我为什么要告诉你这些真相

我曾作为一个全职的开发人员干了10多年。早在1989年我做出了我的第一个商业化的产品(游戏)。虽然它并没有给我带来很多钱,但感觉真的超好
(那时我才16岁)。几年后,我出售了其中一个游戏点子,并最终发布于任天堂游戏机(以及其他格式)上!从我经验的角度,我可以告诉你,当你看到你想出来
的东西(包括名称)最终出现在商店中,这感觉不要太爽。

2008年,我应聘了一家技术驱动公司的一个非技术职位。我想了解企业一般的运行模式,包括销售在内的企业中发生的所有非技术进程。虽然,我的技术能力对我的求职很有帮助,但不再是工作的重要组成部分。

我不再为了谋生而编程(确切的说,是当时),但经常在业余项目上鼓捣各种新技术。对我来说,读一本好书,既令人兴奋,同时又能够得到放松。

在我目前的岗位上,我经常会遇到一些误解概念或缺乏开发基本知识的人。而在他们身处的职位上(通常是那些CxO们),这些基础知识会造成巨大的影响。

很多CxO会将开发人员当作是砌砖工人,死板地计算他们的工作效率。但是,在这里,我想再次重申这个“作家理论”,开发人员是脑力工作者,OK?

作者:小峰

来源:51CTO

时间: 2024-12-28 09:34:55

程序员不是砌砖工人,他们是作家的相关文章

为什么程序员都是夜猫子 电脑屏幕惹的祸?

一种很流行的说法是,程序员是把咖啡因转化成程序代码的机器. 说的是实情,随便问一个程序员,问他什么时候工作最有状态,估计他很有可能说是深夜.有人稍微早一点,有人更晚.有一种流行的趋势是凌晨4点起床,在破晓之前这段时间里做一些事情.而另一些人喜欢凌晨4点才睡觉. 所有这些的主要目的是躲避打搅.但是你把自己反锁在屋里不就行了?为什么对夜晚情有独钟? 我想,这事归纳下来有3点:工人的时间表,疲倦的大脑和明亮的电脑屏幕. 工人的时间表 Paul Graham 在2009年写了一篇关于 工人的时间表的文章

懒惰程序员的神秘天赋

假如说,你是一个经理,环顾所有的员工--嗯,所有人都在忙着噼里啪啦敲键盘.对着电脑疯狂点击鼠标,咦,不对,有一个家伙不是这样的!这个家伙躲在角落里--他在干什么呢?慢悠悠的,像一只蜗牛一样转悠.哦,等等,现在他回到了自己的座位!这个家伙真的是在工作吗? 你的第一直觉肯定告诉你这个家伙是最糟糕的员工,他的工作效率绝对是最低的.所以你整理出有关于他的员工考核--你很确定这些数字能印证你的想法,但是-- 先等一等.不对啊?再仔细看,还是同样的结果--这家伙居然是考核成绩最好的!怎么可能呢?他看上去什么

程序员是否值那么多?

记录片<次郎寿司之梦>(Jiro Dreams of Sushi,2011)里有个很牛的场景----世界上最著名的寿司师傅转身对他儿子(将要去开一家自己的餐馆)说:你无家可归了.面对这一幕当你仔细一想,就会发现这父亲的话其实并不让人觉得太过严苛或沮丧,实际上这是对一个正要开展新旅程的人的最佳说法了. 去年十月我辞了职,成为一个自由写手.写作只赚到了900美元,但我最新的作品,一份关于Douglas Hofstadter档案,吸引了两家美国大杂志的兴趣.我得到了大概10,000到20,000美元

探讨:东方程序员眼中的西方程序员是怎样?

引言:本文译自StackExchange上的一个讨论贴:东方程序员眼中的西方程序员是怎样的?,有网友发帖问: 在我看来,东方的程序员如何看待西方同行是一个有趣并且重要的问题. 通常认为东方国家(印度/中国/菲律宾)是为西方国家提供外包服务(美国和欧洲)的. 你有过参与离岸开发的经历吗?如果有,你对此有何看法? 对于西方程序员你有哪些总印象吗(比如是否具有协作精神,是否按时交付产品,或者他们的工作质量如何)? 以下是来自东方各国程序员的答案: 一.印度程序员 Danish 身为印度人,我想谈谈印度

程序员成长规划

引言 我的程序员成长之路 程序员的成长经历往往很相似,大部分的人走过了最前面相同的一段路,而有的人则走得更远.总结自己这些年来的历程,这也许能让年轻的程序员少走一些弯路,成长得更快:或许更好一些,能让大家从中得到一些启发,早日进入优秀程序员的阶段,实现梦想,释放激情. 第一阶段,最初是在学校里学习计算机基础知识,学习经典的程序设计语言,编写测试用的小程序.这个过程可以说是对计算机和程序设计的入门阶段.这个阶段主要是培养了自己对计算机软件的兴趣,打下了良好的计算机基础知识. 第二阶段,而后参加工作

关于程序员的59条搞笑但却真实无比的编程语录

程序员编程语录 1. 一个好的程序员是那种过单行线马路都要往两边看的人.(Doug Linder) 2. 程序有问题时不要担心.如果所有东西都没问题,你就失业了.(软件工程的Mosher定律) 3. 程序员的麻烦在于,你无法弄清他在捣腾什么,当你最终弄明白时,也许已经晚了.(超级计算机之父Seymour Cray) 4. 我想大部分人都知道通常一个程序员会具有的美德.当然了,有三种:懒惰,暴躁,傲慢.(Perl语言发明者Larry Wall) 5. 编程时要保持这种心态:就好象将来要维护你这些代

2016 高危职业榜单公布,程序员排脑力工作者第一

临近年关,关于"2016年行业高薪榜"的话题引曝媒体与社会大众敏感神经,你"过万"了吗?你拖后腿了吗?你脸红了吗?前日发布的招聘大数据显示,程序员.高压电维修工分别是脑力和体力高危职业榜第一名,而高薪往往是与高辛和高危相伴而生. 程序员.高压电维修工并列高危职业第一 大数据显示,2016年上半年,国内高职.大专.本科三类应届毕业生期望薪金分别为4026元.4179元.4888元,房租等生活成本的不断上涨,也迫使求职者拉高自己的薪酬期待.但是,多数求职者还是靠拼自己,

为什么程序员的工作效率跟他们的工资不成比例(转)

英文原文:Why programmers are not paid in proportion to their productivity 最有效率的程序员会比一般的程序员的编程效率高上几个数量级.但在任何公司里,他们的工资水平却只会出现很小的浮动差距.甚至在整个行业内,这种差距也不是很大.如果一个程序员的效率能达到其他人的10倍,为什么他不能得到10倍高的报酬呢? Joel Spolsky在最近的他的一个演讲里就这个问题给出了一系列的答案.首先,程序员的工作效率在整个行业内千差万别,但在一个公

以一当十的程序员不是传说

昨晚,我发了下面的微博: 有些人议论所谓"10x"或者"超级"的程序员都是传说.可那些著名运动员,艺术家,作家,呃,还有摇滚明星的都是神话吗? - Yevgeniy Brikman (@brikis98) September 29, 2013 我收到了大量的回复和问题,但微博不适合讨论问题,所以我写了这篇博格来进一步讨论. 已经有一 堆 的 文章号称10x的程序员根本不存在.反对观点一般分为以下三种: 最初10x这个数字来自一个研究(Sackman,Erikson,