高效程序员的特征:聪明,懒惰

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

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

    • 不是指那些梦想家,那些永远只想不做的人
  • 聪明:能够周全的思考问题(不是那些耍小聪明的人)
  • 懒惰:就像是程序中的lazy-loading,是指延后写代码的时间(而不是无所事事的人)。

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

这里说的先把问题弄清楚,表现有:

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

    • 这些部门通常不给足够的时间来整理需求
    • 他们经常不是请教问题领域专家,而是顺从领导的意见
    • 他们通常无法提供前后一致或完整的需求意见。
  • 清楚跟团队中的其它程序员或其他团队中的程序员需要那些交互,如何交互,这包括:
    • 使用白板交流
    • 画流程图(UML或Visio)

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

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

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

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

  • 他们思考代码的时间增加而写代码时间减少
  • 对问题的透彻理解使调试代码的速度更快
  • 深思熟虑后的代码速度更快
  • 代码长度更短

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

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

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

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

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

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

[英文原文:Productive
Developers are Smart and Lazy
 ]

时间: 2024-12-09 21:27:47

高效程序员的特征:聪明,懒惰的相关文章

高效程序员的45个习惯

优秀来自好的习惯.怎样成为优秀的开发人员?图灵公司最近热销的<高效程序员的45个习惯>一书给 出了很好的解答,非常值得一读. 这 本书的英文原版荣获了有软件奥斯卡之称的Jolt生产效率大奖,在Amazon上也是好评如潮.第一作者Venkat Subramaniam博士是Agile Developer公司创始人,敏捷开发方面的权威人士,精通各种开发技术.第二作者Andy Hunt更是大名鼎鼎的人物,是敏捷宣言的创始人,著名图书出版公司Pragmatic Programmers的创始人.他有两本书

持续改进-《高效程序员的45个习惯》读后感

原书标题为<Practices of An Agile Developer>.中文名为<高效程序员的45个习惯-敏捷开发修炼之道>.敏捷这个词已经烂大街了,关于敏捷的书籍俯拾皆是.很多人是敏捷的狂热粉丝,而另一些人却讨厌敏捷,认为只是个噱头.我觉得很可能的原因之一是敏捷这个名字没起好.它的原名为"轻量型软件开发过程"("lightweight process"),但后来阴差阳错成了agile(敏捷). 既然书名是敏捷开发者的实践,那么就必须认

《高效程序员的45个习惯:敏捷开发修炼之道》

--敏捷开发入门经典-- [内容] <高效程序员的45个习惯:敏捷开发修炼之道(修订版)>总结并生动地阐述了成为高效的开发人员所需具备的45个习惯.思想观念和方法,涵盖了软件开发进程.编程和调试工作.开发者态度.项目和团队管理以及持续学习等几方面. <高效程序员的45个习惯:敏捷开发修炼之道(修订版)>适合所有程序员阅读. [作者] Venkat Subramaniam博士: Agile Developer公司创始人,敏捷开发权威人士.他培训并指导了美国.加拿大.印度和欧洲多国的上

《高效程序员的修炼》 读书笔记

         不得不说,这是一本非常赞的书,远远强于很多夸夸其谈的口水书.      程序员最重要的是学习能力和聪明,所以特别要求某项技能的公司一般是很low的.一个勤奋聪明的程序员,三个月工作的知识和经验,已经足够胜任这一领域普通的任务,能比得上很多在这里呆了很多年的碌碌无为的人.但是一些领域还是需要投入几千小时的专家人物.换到面试官的角度,考算法题是非常必要也是最合理的,因为它就能看出学习能力和是否聪明.      程序员需要双显示器,好的靠椅,安静的环境,以及良好的环境光,工具就像你的

如何使用搜索技巧来成为一名高效的程序员(很好的总结)

没有人是完全独立的孤岛,每个人都是整体的一部分.-- 约翰·多恩   对于缺乏编程知识的人来说,完全有可能编写一个网页或小程序.如果在用Google搜索相关示例时幸运的话,可以搜到现成的代码.即使是经验丰富的程序员,通常也会为了节省时间和精力而在网上搜索解决方案.   如果不借助搜索技术.网络及集体智慧,现代化高效编程是难以想象的.因此,搜索技巧对高效程序员变得愈发重要.   现在,我们不需要了解和记住如何解决众多的编程问题,可以采用搜索技术.我们正变得更加高效.高生产力,并能够解决更多的问题.

如何使用搜索技巧来成为一名高效的程序员(Google, Bing, Yahoo or Baidu)

没有人是完全独立的孤岛,每个人都是整体的一部分.--约翰·多恩  (至少你拥有95%以上的知识在网上都可以找到! 你遇到的问题中至少80%是别人也可能遇到过的!)   对于缺乏编程知识的人来说,完全有可能编写一个网页或小程序.如果在用Google搜索相关示例时幸运的话,可以搜到现成的代码.即使是经验丰富的程序员,通常也会为了节省时间和精力而在网上搜索解决方案. 如果不借助搜索技术.网络及集体智慧,现代化高效编程是难以想象的.因此,搜索技巧对高效程序员变得愈发重要. 现在,我们不需要了解和记住如何

优秀程序员的7大高效习惯,你&quot;中枪&quot;了吗?

Facebook首席执行官马克·扎克伯格(Mark Zuckerberg)有一个"怪癖":几乎每天都穿同样的衣服来上班.因为他觉得这样可以节省很多时间和资源,"我每天的工作为超过十亿人而服务,如果把精力全部浪费在穿衣打扮上,我觉得我的工作没有任何意义." 每个成功者的身上都有或多或少的东西值得我们学习,以下权威机构调查的高效程序员的7大习惯,你占了几条? 一.积极主动 生活中许多事情都是不可控的.你可能正在为签证问题失去一个出国深造的机会而烦恼;你的老板是个暴脾气,

如何成为一个高效、快乐、健康的程序员

只需每天做一些小改变,就可摆脱病痛.保持健康.....学会去积累工作经验和成果就会变得高效......具备这些小习惯就会保持快乐-- 一:高效 互联网发展日新月异,社会科技每天都在发生着翻天覆地的变化,而程序员已经成了这个时代的庞大群体,各种各样的程序员数不胜数,我们每天上下班,不 论你是坐公交还是乘地铁,在你的身边一定有程序员.本人我就是其中的一员,本人主修java语言,从事java类开发工作.由于本人工作时间不长,经验尚 浅,都是学着前辈高人的路子,在慢慢前行,下面我给大家分享下,如何从菜鸟

如何使用搜索技巧来成为一名高效的程序员

没有人是完全独立的孤岛,每个人都是整体的一部分.--约翰·多恩 对于缺乏编程知识的人来说,完全有可能编写一个网页或小程序.如果在用Google搜索相关示例时幸运的话,可以搜到现成的代码.即使是经验丰富的程序员,通常也会为了节省时间和精力而在网上搜索解决方案. 如果不借助搜索技术.网络及集体智慧,现代化高效编程是难以想象的.因此,搜索技巧对高效程序员变得愈发重要. 现在,我们不需要了解和记住如何解决众多的编程问题,可以采用搜索技术.我们正变得更加高效.高生产力,并能够解决更多的问题.但这是否意味着