程序员工作效率悖论

程序员看起来是非常高效的人。你经常看到他们在桌子上码字。他们迫不及待的开完会议,快点回到他们的桌子上继续编程。当被问起来为什么这样,他们会说他们没有足够的时间完成编码,越早开始,就能越快完成。

因此写代码一定是最重要的事情,是这样吗?

如果普通程序员每天写50行产品代码。一个50000行的程序需要1000人天来完成。这50000行的代码清单可以由一个程序员一天写1000行左右或大概50人天完成。

那么开发者剩余的950天到底做了什么?

在回答这个疑问之前,让我们做一个简单的观察。Capers Jones比较了很多方法论(RUP、XP、Agile、Waterfall等)和许多项目上的编程语言,断定了程序员每个月的代码行数在325和750之间,少于上面提到的1000代码行每月的数量。即使程序员平均每天没有达到50行代码,下列的也是很清楚的。

  • 方法论不能解释明显的生产力差距
  • 任何语言都不占明显的生产力差距的比重

实际上只有很小部分开发者的时间是真正花在写有效代码上的。如果一个开发者一直在写代码,那么他们在努力尝试不同的代码组合,直到他们最终发现有效的代码组合。

或者更加准确的说,在QA或业务分析人员返回来跟他们说出现问题之前,这个组合看起来是符合需求的。这就是为什么那些在敲键盘前规划代码的开发者常常比其他开发者做得更好。不仅只有一小部分开发者在编码前真的对代码做计划,拥有多年经验的人也不教开发者学着做计划。实际上,超过40年的研究表明,开发者效率不会随着经验年限而改变。(请看 无经验要求)

经验年限不会推动高效率

有趣的是,很多方法论围绕着强调规划代码这个话题已经有很长一段时间了。Watts Humphrey就是创建于个人软件过程(PSP)。 已经可以测量出使用PSP:

PSP可以提高21.2%的生产效率和31.2%的质量。

如果你感兴趣,还有很多其他不太经常使用的提高代码质量的证明方法。(请看 弱者无计划)

如果你的开发者没有在白板上计划就在写代码,那么你的生产力效率不会有本应有的那么高。

参考目录
1.人月神话更悲观地指出程序员每天写出10行产品代码
2.Jones,Capers 和 Bonsignour,Olivier.软件质量经济 Addison Wesley.2011
3.Watts,Humphrey.个人关键过程简介,Addison Wesley Longman.1997
毫无疑问,我是他们中的最大”输家”。我相信我已经至少犯过书中提到的每一个错误。

时间: 2024-07-31 02:01:34

程序员工作效率悖论的相关文章

十一大技巧提高程序员工作效率 小习惯更重要

"吃苦耐劳"真的是优良品质吗,与你怎么做相比,老板们应该更关心你做了什么.达到的效果.所以,效率,还是效率,希望这些实用小技巧对大家有所帮助. 提高程序员工作效率 1.两分钟法则 如果一件事可以在两分钟内完成,比如回复邮件,一个简单的家务,就立即完成,因为记住它.计划时间.在后来完成它,可能会花费五分钟甚至更多的时间. 2.五分钟法则 拖延症是影响工作效率的大魁首之一,想要治愈它不是给自己定下目标.下定决心去完成一项大任务,而是只在那件事上花五分钟.你会发现在大多数情况下,它在超出五分

提高程序员工作效率的 5 个诀窍

https://yqfile.alicdn.com/12ffd0d635691e5ef075aaf82b2f193071d009bb.png" > 现在有大量所谓提高程序员效率的诀窍和窍门充斥于网络,有些的确有用,但是有些却是误人子弟.然后我想,我不妨自己动手来写点关于这方面的内容,造福于社 会,嘿嘿.好吧,扯远了.我写的窍门得既简单实用又立竿见影,我可不希望来个"5年计划"啥的,那太幽默了,这么长的时间,黄花菜都凉了.此次窍门与如何 使用软件啊,还有什么颜色的主题最吸

提高程序员工作效率 推荐7个简易web开发框架

中介交易 SEO诊断 淘宝客 云主机 技术大厅 时下各种软件系统发展越来越复杂,尤其是服务器软件,其涉及的问题以及知识面太多.因此,在某些方面,如果程序员想要减少开发工作量或是缩短时间,降低成本等,使用框架便是一个很好的选择.而web开发框架的数量非常多,下面,IDC评述网整理了7个简单的开发框架,供大家参考. 1. EasyJWeb EasyJWeb是基于java技术,应用于WEB应用程序快速开发的MVC框架,利用Velocity作为模板页面引擎,实现了页面及代码完全分离的MVC开发框架.能实

简化IT程序员工作生活的4个窍门

如果可以简化你的生活--少做枯燥的任务,将时间真正地用于完成事情,你愿不愿意去尝试?下面就让我一起来学一下如何让程序员工作生活变得简单的小窍门. 如果你敢于倾听自己的心声,你会发现自己一天中的大多数时间所做的事情并不都是有趣的.然而,为了完成你喜欢的重要任务,你必须先完成那些单调又费 时的必要职责.所以,要是能够简化任务,少做那些无聊又耗时的事情,将时间真正投入到喜欢的事情上去,那该多好?通过以下几个简单的技巧,你或许可以得偿 所愿. 查找个人生活中的瓶颈 Stever Robbins,称自己为

J2EE方向二年工作经验,不知道南京二年java程序员工作环境薪水大约在一个什么水平上,谢谢

问题描述 J2EE方向二年工作经验,没有人讨论过南京的行情,不知道南京二年java程序员工作环境薪水大约在一个什么水平上,谢谢 问题补充:7454103 写道 解决方案 引用呵呵,顶礼膜拜了,学习,分数给你了 那我就先谢过了! (有机会还可以一起研究已经进步吗! 呵呵)解决方案二:引用说笑了,2年工作经验,其中还有一年是.net的.强到哪里去呢.net 不是也很疯狂的嘛! 只有你实干了一年 java 其实就没啥好担心的了!就看就 面试的当场发挥! 和技术经理聊的是否开心! 反正我是这么过来的!解

.net程序员工作两年总结

(2015年9月) 最近换了工作,面试了很多家公司想总结下,以便以后回顾知道自己是怎么走过来的. 入行背景: 我是半路转行做软件开发的,2011年7月大学专科毕业,大学专业是:机械制造及其自动化:2011年1月到8月底,在合肥格力电器工作多半年,2011年9月份开始接触编程. 本来只是看了<硅谷禁书><李开复自传>书上有个观点,一个人千万不能年纪不大,就落后了时代,一定要学会用这个时代的先进技术,那就是计算机互联网技术.我深信不疑! 本来我只是想学习下搜索技术,人人都是讲互联网是个

一点准程序员工作经验总结

程序|程序员 做asp程序开发工作两个多月,总结了一下开发过程中的经验以及从别人那里获得的间接经验,结合实际工作中的情况,随便写了一下.当然不可能把所有有用的经验都罗列出来的,但至少已经有一定的工作指导作用了,拉下的经验或者你自己的亲身经验,请回帖补充一下,谢谢 1.所有的超级管理员初始帐户为admin,初始密码为www.21hb.com:2.在发布之前要经过至少2个人的测试:3.对链接使用使用ALT和Title属性:4.设置IMG的width和height属性:5.对数据库的操作一般要包含增加

90后程序员工作经历

首先自我介绍一下,1992年生人,现任某家公司项目的单一模块设计与开发,Java语言.这里就是想谈谈我的面试之路,希望能给大家提供点经验.       2008年,我16周岁了,根据中华人民共和国未成年人保护法及中华人民共和国劳动法规定,我已经达到了法定工作年龄.在今年4月的清明节,在北京一个很成功的朋友开车带我回家时对我说了一些话,改变了我的近期人生目标.可以给大家看一下当时的对话       朋友:"现在还能自己赚钱吗?".       我  :"不能了,在专心学习.&q

程序员工作中会遭遇的天花板 工作中不由你控制的一些地方(转)

  在我看来,程序员做的是开创性的工作.互联网的发展不但推动了技术的发展,而且带来了技术的普及.因此程序员不比以前,现在要找某方面的资料是很easy的事情了.看过大量的资料,各种新颖的技术方案和解决思路,不心动那是不可能的.OK,想用某某某框架,想用某某某技术,但是,因为各种原因,没办法应用到自己开发的项目中.这就是一个天花板. 在工作中往往有各种各样的天花板,比如绩效考核,项目进度,被打断的思路,技术架构.因为你不是做决定的那个人,所以你就有天花板. 绩效考核 很多公司都有绩效考核,在我看来绩