关于程序员开发效率的悖论

标签: 综合新闻 | 发表时间:2014-03-28 07:27 | 作者:
出处:http://www.oschina.net/?from=rss

程序员看起来应该都是一帮非常高产的人。

你总能看到他们在电脑桌前噼里啪啦的敲着键盘;他们焦急的等待会议结束,希望马上能回去编程。当被问起,他们总是说没有足够的时间编写出这些程序,需要立刻开始编码,这样才能及早完成。

看来,敲代码一定是最重要的事情了,不是吗?

如果一个普通水平的程序员每天能写出50行代码。一个5万行代码的程序将会需要1000人/天来开发。把5万行代码输入电脑里,一个程序员每天能录1000行,也就需要50人/天。

那么,剩下的950天这些程序员都在干什么?

在搞清楚这个问题前,让我们先看一些简单的资料。 Capers Jones研 究了数万个软件项目,他通过比较其中的各种软件开发方法(RUP,极限编程,敏捷开发,瀑布开发等等)和各种编程语言,发现,一个程序员每月平均写出的代 码大概是325行到750行,比我们上面说到的每月1000行还要少。就算是程序员不是每天只写50行代码,但下面两点是清楚的。

  • 开发方法的差异不能解释程序员代码生产量上的不平衡

  • 使用的编程语言无关程序员代码生产量上的不平衡

combinations2

实际情况是,只有很小一部分的程序员的时间是花在写代码上的。如果一个程序员的所有时间都在敲代码,那他一定是在尝试不同的代码组合,直到找到好用的代码组合。

更准确的说法是,找到看起来是符合需求的“代码组合”——如果测试人员或业务分析师不来告知说这些代码是有问题的。

这 就是为什么在把手放到键盘上前喜欢先计划代码如何写的程序员会比其他程序员效率高的原因。事实上,不仅仅只有很少数的程序员在写代码前先计划,很多即使有 多年编程经验的老程序员也不知道这个道理。一项持续40年的研究表明,程序员的开发效率并不会随阅历的增加而增加。(参考 No Experience Required!)

多年的编程阅历并不是必然导致高开发效率

十分有趣的是,各种强调 编码前先计划的软件开发方法论都已经存在很长时间了。比如Personal Software Process (PSP),创始人 Watts Humphrey根据统计数据说:

PSP能提高21.2%的生产效率和31.2%的质量水平

jquery-whiteboard-marker-no

像这样优秀的实践方法有很多。总之,就像作家动笔前先要构思好文章的结构和内容一样,程序员在按动键盘前如果不先琢磨一阵,很可能发生的情况是他的开发效率不会很高。

[英文原文: The Programmer Productivity Paradox ]

相关 [程序员 开发 悖论] 推荐:

关于程序员开发效率的悖论

- - 开源中国社区最新新闻
程序员看起来应该都是一帮非常高产的人. 你总能看到他们在电脑桌前噼里啪啦的敲着键盘;他们焦急的等待会议结束,希望马上能回去编程. 当被问起,他们总是说没有足够的时间编写出这些程序,需要立刻开始编码,这样才能及早完成. 看来,敲代码一定是最重要的事情了,不是吗. 如果一个普通水平的程序员每天能写出50行代码.

Web 开发程序员招聘

- GLORY - 云风的 BLOG
前两天在 blog 里提到了 web 前端程序员招聘的消息 , 结果这两天收到了好多热情洋溢的 email , 真是受宠若惊. 上次说的不详细,其实也没完全想好,只是之前在讨论公司架构的时候提到了这个岗位. 昨天晚上又讨论了一下,把需求细化了一些. 我个人,作为程序员,对 web 前端开发领域没有太多了解,很惭愧.

[程序员] Web开发入门(原创)

- Xinyu - V2EX
这篇文章最早发在水木web开发和IT业界板,都加精了. 原文在我的博客上,不定期会更新下内容. 顺便说下我创建的喜分分 http://www.xifenfen.com 也公测了,是一个个性化阅读,分享与收藏社区. 我读过的相关书籍发布在豆列(已更新):程序员的自我修养 http://book.douban.com/doulist/1268022/.

Javascript程序员也可以开发iOS原生应用

- - php.js.cn
    主要方向是前端的我曾经也想过学学iOS的Object-C或者Android的Java. 但是写习惯Javascript这种弱类型的脚本语言,突然去写严谨的C和繁琐的Java变成一件很煎熬的事情. 所以这个学习过程就逐渐被搁浅了.     HTML5在移动设备上的普及使得前端程序员开心了. 自己的网站稍微改改,使之能够适应移动设备上较小的屏幕,然后再加上几个meta信息,就可以通过iOS上Safari的“添加至主屏幕”功能在桌面上添加一个叫做"Home screen app"的App了.

Python超级程序员使用的开发工具

- - 外刊IT评论网
我以个人的身份采访了几个顶尖的Python程序员,问了他们以下5个简单的问题:. 你在项目中使用的电脑是怎样的. 有什么给Python程序员的建议. 就是这几个问题,我找了几个顶尖的程序员和编程书籍作家,问他们这几个相同的问题. 下面是他们的回答,希望在他们的回答中你能找到一些可以让你的开发更便捷的工具.

10年DotNet老程序员推荐的7个开发工具

- - 程序师
做.NET软件工作已经10年了,从程序员做到高级程序员,再到技术主管,技术总监. 见证了Visual Studio .NET 2003,Visul Studio 2005, Visual Studio Team System 2008, Visual Studio 2010 Ultimate,Visual Studio 2013一系列近5个版本的变化与亲自使用.

Stack Overflow 2017 开发者调查报告(程序员必看)

- - CSDN博客综合推荐文章
最近,Stack Overflow 发布了一篇 2017 开发者调查报告,此次在全球有超过 64,000 名开发者参与调查,分别对其技能、工具、学习趋势等数据进行了统计,比较遗憾的是中国参与调查的开发者很少,只有大概 300 人左右,所以有些调查结果可能跟中国环境不太相符,不过毫无疑问,这几乎代表了全球技术的趋势,这份数据有很多有意思的点值得我们关注.

无代码开发,站到了程序员鄙视链顶端

- - InfoQ推荐
“无代码”不是在“淘汰”开发者,而是给予开发者更大挑战、更多机会. 疫情进一步推动了“无代码”行业的爆发. 微软称无代码是它的“Next Big Thing”,谷歌说无代码是下一代的变革和提升. 也有越来越多的企业开始进入“无代码”领域. 所谓“无代码”,并不是“不存在代码”,无代码平台的开发对后台的支撑能力提出了更高的要求,需要更为强大的技术团队.

😍 数仓规范篇、02.开发规范 - 白程序员的自习室

- -
HIVE SQL 作为数仓操作语言,良好的代码习惯能我们高效地完成数据分析工作. 除了根据 SQL 执行顺序上的优化外,按以下规范编写 SQL 代码既能使代码更加清晰,方便自己后期维护,也方便其他同事接手. 注释内容要清晰明了,含义准确,避免歧义. 应对不易理解的分支条件表达式加注释. 过长的函数实现,应将其语句按实现的功能分段加以概括性说明.

是谁动了程序员的尊严续-也谈谈软件开发团队的管理

- ooxx - 博客园-首页原创精华区
 其实质是对一些遭受挫折的程序员的勉励,对热爱技术的肯定,以及小部分对以前疯狂追求技术状态的缅怀. 居然在回复里有小部分人拿管理手段和管理艺术说事,弦哥想说的是本质上无所谓有什么管理,核心或中层人员往往目标明确,很大程度上是自我管理,底层人员其实只需要扔几个管理工具即可,不起决定性作用. 打个比方:你第一个次和MM开房,装13的人会告诉你那是艺术,需要很多技巧和花招,弦哥只会笑而不语,临走前告诉你:“跟随你的心...”.