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

2023-10-20 15:30

本文主要是介绍程序员不是砌砖工人,他们是作家【转】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  如果你有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
英文原文:Your Developers Aren’t Bricklayers, They’re Writers
翻译作者:码农网 – 小峰

 


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

 

  博主经营一家发饰淘宝店,都是店主纯手工制作哦,各种DIY发饰!需要的亲们可以光顾一下!谢谢大家的支持!
店名:
  小鱼尼莫手工饰品店
经营:
  发饰、头花、发夹、耳环等(手工制作)
网店:
  http://shop117066935.taobao.com/

 

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

 

转载于:https://www.cnblogs.com/qiongmiaoer/p/4624395.html

这篇关于程序员不是砌砖工人,他们是作家【转】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/247997

相关文章

LabVIEW程序员是怎样成长为大佬

成为一名LabVIEW编程领域的“大佬”需要时间、实践、学习和解决复杂问题的经验。尽管LabVIEW作为一种图形化编程语言在初期可能相对容易上手,但要真正成为精通者,需要在多个层面上深入理解。以下是LabVIEW程序员如何逐步成长为“大佬”的路径: 1. 打好基础 LabVIEW的大佬们通常在初期会打下非常坚实的基础,理解LabVIEW编程的核心概念,包括: 数据流编程模型:Lab

程序员必备心理学——心流

心理学之心流 前言一、“心流”是什么?二、心流的好处二、如何进入心流心流状态的四个阶段第一个阶段:挣扎第二个阶段:放松第三个阶段:心流第四个阶段:巩固 进入心流的技巧 总结题外话 前言 你是否常常感觉自己明明学习了一整天,但是就是感觉没有太多的收获。这个时候除了你的学习方向等问题之外,也可能是你的学习方法太低效了。作者本人就经常有这种情况,好在偶然间在b站刷到一个大佬的这个心

Marsview这么好用?快速搭建后台不是梦

Marsview竟然这么好用?快速搭建后台不是梦! 还在为项目开发而焦头烂额吗?别再纠结了,Marsview来了!这个面向后台管理系统的低代码平台,不仅让你轻松搭建项目,还能让你成为团队中的“流量担当”。本文将带你了解 Marsview 的核心功能、技术架构,以及如何快速上手。 软件简介 Marsview 是一款专为中后台管理系统设计的低代码可视化平台,能够帮助开发者快速完成项目搭建和

20190315 把整理和培养自己当作一生的事业,而不是局限在找工作拿offer。

把整理和培养自己当作一生的事业,而不是局限在找工作拿offer,做有本事的人。 来东南读研半年了,明显感觉自己掌握的不过是书本知识级别的中上水平,垃圾收集器这些的只知道背面经,靠脑子硬记,缺乏整理和系统,一头浆糊。 现在一边做实训这个烂项目,一边刷面经,一边刷剑指offer,想投些大公司的实习,又觉得还没准备好,看着各 种面经,都能说个大概,但明显感觉到自己知识的不体系和不深入,**做的项目

程序员都在使用的画图工具

大家好,我是袁庭新。 程序员都在使用的画图工具,你一定没用过这款画图工具吧!我教程中的架构图都是用它来画的。 比如我编写的RDB工作原理图就是用draw.io绘制的,如下图所示: 再例如Redis集群故障恢复原理图我也是通过draw.io工具绘制的,如下图所示: 是不是觉得draw.io绘制的图形特别简洁、美观。它的官网是: https://www.drawio.com dra

OpenAI澄清:“GPT Next”不是新模型。

不,”GPT Next” 并不是OpenAI的下一个重要项目。 本周早些时候,OpenAI 日本业务的负责人长崎忠男在日本 KDDI 峰会上分享了一场演讲,似乎在暗示一个名为 “GPT Next” 的新模型即将出现。 但OpenAI的一位发言人已向Mashable证实,幻灯片中用引号括起来的”GPT Next”一词只是一个假设性占位符,旨在表明OpenAI的模型如何随着时间呈指数级进化。发言人

GitHub:代码是程序员沟通最直接的手段

如果不是 Andreessen horowitz 的投资,估计 GitHub 很难被福布斯、CNN、纽约时报等传统媒体注意到。普通大众之前不了解这个工具,是因为它距离记者的世界太远了——GitHub 是一个程序员所使用的托管项目的服务。 但在一些程序员眼里,它不仅是托管项目的地方,还是“开源”项目的大本营,而且是提高程序员“技术水平”和“技术品味”的地方,更是一个程序员社交的地方。

黑马程序员---银行业务调度系统

模拟实现银行业务调度系统逻辑 需求分析: 银行内有6个业务窗口,1 - 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口。 有三种对应类型的客户:VIP客户,普通客户,快速客户(办理如交水电费、电话费之类业务的客户)。 异步随机生成各种类型的客户,生成各类型用户的概率比例为:         VIP客户 :普通客户 :快速客户 =  1:6:3。 客户办理业务所

黑马程序员---空中网面试题

空中网4k/5k月薪挑选大四实习生的线程题     两年前,我们一个大四的学员去应聘空中网的实习生职位,空中网只给他出了三道线程题,拿回家做两天后再去给经理讲解,如果前两题做好了给4k月薪,第三道题也做出来的话就给5k的月薪。这样的实习薪水和招聘要求,不需要有工作经验的限制,纯粹是技术功底的比拼和考核,而不像许多其他公司非要招两年工作经验的人,逼得那些刚毕业和未毕业的大学生不得不去撒谎,不得不去做

黑马程序员---线程并发库

软件包 java.util.concurrent 在并发编程中很常用的实用工具类。 请参见:            描述 接口摘要BlockingDeque<E>支持两个附加操作的 Queue,这两个操作是:获取元素时等待双端队列变为非空;存储元素时等待双端队列中的空间变得可用。BlockingQueue<E>支持两个附加操作的 Queue,这两个操作是:获取元素时等待队列变为非空,以及