www.5197.com-澳门新蒲京娱乐场官网

热门关键词: www.5197.com,澳门新蒲京娱乐场官网

关于程序员开发效率的悖论【澳门新蒲京娱乐场

澳门新蒲京娱乐场官网 1

澳门新蒲京娱乐场官网 2烂程序员不喜欢去修改已经写成的烂代码。相比起优化自己的代码,他们更愿意简单的增加更多的代码,以此来弥补之前的缺陷。更糟糕的是,他们喜欢把责任归咎于他人。最终,一堆不好用的代码上在来另外一堆不好用的代码,整个系统变得到处是bug,极不稳定。

程序员看起来应该都是一帮非常高产的人。你总能看到他们在电脑桌前噼里啪啦的敲着键盘;他们焦急的等待会议结束,希望马上能回去编程。当被问起,他们总是说没有足够的时间编写出这些程序,需要立刻开始编码,这样才能及早完成。看来,敲代码一定是最重要的事情了,不是吗?如果一个普通水平的程序员每天能写出50行代码。一个5万行代码的程序将会需要1000人/天来开发。把5万行代码输入电脑里,一个程序员每天能录1000行,也就需要50人/天。那么,剩下的950天这些程序员都在干什么?在搞清楚这个问题前,让我们先看一些简单的资料。Capers Jones研究了数万个软件项目,他通过比较其中的各种软件开发方法和各种编程语言,发现,一个程序员每月平均写出的代码大概是325行到750行,比我们上面说到的每月1000行还要少。就算是程序员不是每天只写50行代码,但下面两点是清楚的。开发方法的差异不能解释程序员代码生产量上的不平衡使用的编程语言无关程序员代码生产量上的不平衡实际情况是,只有很小一部分的程序员的时间是花在写代码上的。如果一个程序员的所有时间都在敲代码,那他一定是在尝试不同的代码组合,直到找到好用的代码组合。更准确的说法是,找到看起来是符合需求的“代码组合”——如果测试人员或业务分析师不来告知说这些代码是有问题的。这就是为什么在把手放到键盘上前喜欢先计划代码如何写的程序员会比其他程序员效率高的原因。事实上,不仅仅只有很少数的程序员在写代码前先计划,很多即使有多年编程经验的老程序员也不知道这个道理。一项持续40年的研究表明,程序员的开发效率并不会随阅历的增加而增加。多年的编程阅历并不是必然导致高开发效率十分有趣的是,各种强调编码前先计划的软件开发方法论都已经存在很长时间了。比如Personal Software Process创始人Watts Humphrey根据统计数据说:引用PSP能提高21.2%的生产效率和31.2%的质量水平像这样优秀的实践方法有很多。总之,就像作家动笔前先要构思好文章的结构和内容一样,程序员在按动键盘前如果不先琢磨一阵,很可能发生的情况是他的开发效率不会很高。英文原文:The Programmer Productivity Paradox / 译文:外刊IT评论

澳门新蒲京娱乐场官网 3当 代码中有需要优化或需要重写的地方时,时间拖的越久,你就越难回头解决这些问题。因为对这些代码依赖的程序会越来越多,越来越深,当你优化这些代码时,相 关的依赖也需要进行相关修改。当积累的问题越来越多时,轻松的优化/重新这些代码已经变得不可能。而使用继续增加代码的方式来弥补之前代码问题,会让系统 变得越来越不稳定。

  • 程序员:有积极活力的,专注于用代码解决真实世界里的问题

    • 不是指那些梦想家,那些永远只想不做的人
  • 聪明:能够周全的思考问题(不是那些耍小聪明的人)

  • 懒惰:就像是程序中的lazy-loading,是指延后写代码的时间(而不是无所事事的人)。

你需要花大量的时间调研,来确保需求符合实情,来做工作让你和同事的交流有共同的语言语义。然而,程序员都喜欢立刻冲上去编程,喜欢在电脑前不停的敲代码。

高效的程序员总是不断检查他对需求的理解,确保他们的代码和需求是同步的。高效的程序员是频繁的和产品经理/业务人员沟通交流,你可以经常看到他们使用白板与同事和架构师交流讨论。程序员的阅历和经验都是用来提高开发效率,这最优秀的程序员:

程序员从心理上讲都是喜爱自己的代码的。

  • 真正的理解需求,让产品部门(业务分析部门)弄清楚他们真正需求的是什么。

    • 这些部门通常不给足够的时间来整理需求

    • 他们经常不是请教问题领域专家,而是顺从领导的意见

    • 他们通常无法提供前后一致或完整的需求意见。

  • 清楚跟团队中的其它程序员或其他团队中的程序员需要那些交互,如何交互,这包括:

    • 使用白板交流

    • 画流程图(UML或Visio)

  • 他们思考代码的时间增加而写代码时间减少

  • 对问题的透彻理解使调试代码的速度更快

  • 深思熟虑后的代码速度更快

  • 代码长度更短

这里我使用了聪明懒惰程序员这几个词。我说的这几个词的意思是:

英文原文:Productive Developers are Smart and Lazy

如果脑子里没想清楚,那就懒一些,把写代码的时间往后推。

优秀的程序员经常也会写出烂代码,但他们能看到那些代码需要优化,哪些需要重写。优秀的程序员和不优秀的程序员的区别就在于对有问题的代码的态度,优秀的程序员的做法是:

译文来源:

澳门新蒲京娱乐场官网 4在真正的软件开发中,只有5%的开发时间是有效率的(你可以参考《程序员开发效率悖论》)。如果你发现一个程序员用100%的时间都在盯着屏幕,那么,你看到的这个程序员是最糟糕的程序员。

澳门新蒲京娱乐场官网 5这里说的先把问题弄清楚,表现有:

【编辑推荐】

正确的软件开发应该是懒惰式开发,也被称作忍耐式开发;这种开发方式的表现是,在真正动手写代码前,程序员要花大量的时间通盘考虑所有可能的解决方案和途径。这可以看作是延缓写代码,在没有完全理解问题前绝不动手写代码。先把问题理解清楚,确保将要写的代码能真正的解决问题,这将会避免之后写出大量无用的代码。

如果一个程序员总是在电脑前编码,这绝对是一个不好的信号。

  • 如果代码整体上好的,那就重构代码。

  • 如果代码整体上有问题,那就重新代码

本文由www.5197.com发布于web前端,转载请注明出处:关于程序员开发效率的悖论【澳门新蒲京娱乐场