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

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

作者: Piet Hadermann  来源: 码农网  发布时间: 2015-06-07 20:14  阅读: 6564 次  推荐: 28  
原文链接[收藏]

  英文原文:Your Developers Aren’t Bricklayers, They’re Writers

如果你有 10 个程序员,最好的那个可能至少比最差的那个好 5 倍。这绝对不是胡扯。

我们这样定义“更好”:工作速度更快,产生的 bug 更少,代码更具可读性、逻辑性和可维护性。

程序员不是砌砖工人,但他们往往被当成是砌砖工人。 (我并不是说歧视这些职业)

“为什么我需要高级程序员,要知道同样的薪酬我可以雇两个初级的了?”

“这个功能一个程序员做需要三个月的时间,那就只需要再加两个,就可以在一个月内搞定了。”

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

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

相关研究表明,最好程序员的生产力最高可比最差程序员的高 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?

  -------------------------------------------------------------------------------------

  译文链接:http://www.codeceo.com/article/programmer-not-bricklayers.html

  翻译作者:码农网 – 小峰

来自为知笔记(Wiz)

时间: 2024-11-29 06:03:36

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

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

如果你有10个程序员,最好的那个可能至少比最差的那个好5倍.这绝对不是胡扯. 我们这样定义“更好”:工作速度更快,产生的bug更少,代码更具可读性.逻辑性和可维护性. 程序员不是砌砖工人,但他们往往被当成是砌砖工人. (我并不是说歧视这些职业) “为什么我需要高级程序员,要知道同样的薪酬我可以雇两个初级的了?” “这个功能一个程序员做需要三个月的时间,那就只需要再加两个,就可以在一个月内搞定了.” 为什么说上面的想法很荒谬?因为我们没有一种简单又有效的方法来衡量程序员的生产力.一旦碰到我们无法衡

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

假设你有10个程序猿,最好的那个可能至少比最差的那个好5倍. 这绝对不是胡扯. 我们这样定义"更好":工作速度更快,产生的bug更少.代码更具可读性.逻辑性和可维护性. 程序猿不是砌砖工人,但他们往往被当成是砌砖工人. (我并非说鄙视这些职业) "为什么我须要高级程序猿,要知道同样的薪酬我能够雇两个0基础的了?" "这个功能一个程序猿做须要三个月的时间.那就仅仅须要再加两个,就能够在一个月内搞定了. " 为什么说上面的想法非常荒谬?由于我们没有一

周瑜:如果想要在程序员生涯中取得成不错的成绩,就得在忙碌的工作中不断学习。

(全文较长,2260字,阅读须10min) 我不是一个伟大的程序员,我只是一个具有良好习惯的优秀程序员.--Kent Beck 周瑜,一个固执甚至刻板的男子,为了目标达成,他竭尽全力.为Dota游戏,他在大学曾累计在线4000小时研究战略战术,为Java面试,他不眠不休七天鏖战复习代码成功入职巨头企业,在鲁班学院,他同样执着,同样成功! (全文较长,2260字,阅读须10min) 一 一:彻夜苦修--凭技术优势进阶各大公司09年高考,周瑜阴差阳错被计算机专业录取,从此走进程序的世界.在学校的前几

懒惰程序员的神秘天赋

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

程序员生存定律--管理向左,技术向右

程序员生存定律这系列的目录在这里:程序员生存定律--目录 喜欢从头瞄的,可以移步. ------------------------------------------------------------------------------- 一个程序员在考虑增值时无法回避的一个根本问题是到底是做技术还是做管理.当然也有些职位会介于两者之间比如架构师,但我们暂时不去做细分,而是用简单的二分法. 这种基本方向上的选择对后续很多细节上的取舍有关键影响,所以在考虑其他之前,最好先回答一下这个问题.这就

读书笔记-程序员修炼之道-序

前言 我们应该成为什么样的程序员 注重实效的程序员具备的特征 注重实效的个体大型的团队 它是一个持续的过程 前言 程序员修炼之道这本书已经通读了一遍,获益良多,但还是不甚理解,所以在重读一遍,顺便做一下笔记.由于自己水平有限,只能摘抄一下重要的词句了. 我们应该成为什么样的程序员 我们的知识背景源自于对计算机科学基本原理的理解,而我们的经验来自广泛的实践项目.理论与实践相结合使我们强大起来. 我们不应该局限于任何特定的方案,而是应该拥有足够广博知识背景和经验基础,这能够让我们在特定的情况下选择更

春节将至,又到了评绩效拿年终奖的时候!程序员绩效KPI 这个弥久历史谜题该怎么算呢?

关于程序员的绩效,像是一个弥久的历史谜题,长期困扰着大量的程序员与他们的领导们. KPI(Key Performance Indicators 关键绩效指标)是企业最爱用的绩效考核工具,但 KPI 通常只能定一些更宽泛的指标,且一般也只能分解到团队经理的头上,而很难分解到具体每个程序员的身上. 前不久看到个新闻,Amazon 美国的一个中国 IT 工程师在西雅图办公室跳楼自杀,原因是收到了 PIP.那 PIP 是什么?就是 Performance Improvement Plan 的简写,表达的

程序员到项目经理:从内而外的提升

转自:http://www.cnblogs.com/watsonyin/archive/2012/09/10/2679528.html 目录 从程序员到项目经理(一):为什么要当项目经理 从程序员到项目经理(二):升职之辨 从程序员到项目经理(三):认识项目经理 从程序员到项目经理(四):外行可以领导内行吗 从程序员到项目经理(五):程序员加油站,不是人人都懂的学习要点 从程序员到项目经理(六):程序员加油站 — 懂电脑更要懂人脑 从程序员到项目经理(七):程序员加油站 — 完美主义也是一种错

程序员励志名言

程序员励志名言:1,生命太短暂,不要去做一些根本没有人想要的东西.—Ash Maurya 2,如果你交给某人一个程序,你将折磨他一整天:如果你教某人如何编写程序,你将折磨他一辈子.—David Leinweber 3,软件设计有两种方式:一种方式是,使软件过于简单,明显没有缺陷:另一种方式是,使软件过于复杂,没有明显的缺陷.—C.A.R. Hoare 4,其实,我尝试着使 Ruby 更自然,而不是简单.Ruby 看起来很简单,但内部是非常复杂的,就像我们的身体一样.—松本行弘,Ruby 之父 5