`
zhoushuping
  • 浏览: 44135 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

文来自Totango的联合创始人兼CEO盖伊?尼尔帕兹(Guy Nirpaz),他在本文中列出了优秀的开发者和差的(或还需努力的)开发者之间的区别。

如果你认为使用“优秀”和“差”来区分开发者不妥的话,也可以将这些看作是初级开发者和资深开发者之间的区别。但无论如何,多看看其他的优秀开发者(或资深开发者)是如何做的,对于自身技能、工作方式的提升有很大的帮助。

文章内容如下:

优秀的开发者是一个艺术家,一个享受创作过程的工匠。差的开发者只将自己当作负责产生代码的码农。

优秀的开发者了解客户的问题。差的开发者只了解手头的技术问题。优秀的开发者会不断努力去理解“为什么”,然后去实现,同时能够把握大局。差的开发者专注于构建类、方法和配置文件,而不理会大局。

优秀的开发者了解产品的完整架构。差的开发者只知道他写的组件。优秀的开发人员充分理解在产品中使用的技术,了解它们的用途,以及它们在内部如何工作。

优秀的开发者不害怕新技术,并能够很快掌握。差的开发者只坚持他目前掌握的技术,对于任何技术变化持否定态度。

优秀的开发者通过不断学习来提高自己的技能,他们经常阅读技术文章和书籍。差的开发者没有时间来学习,他们总是太忙了,以致于不能干其他事情。

优秀的开发者关心产品的质量,同时也非常关注过程质量,他们努力创造无缺陷的代码。差的开发者将bug留给QA去发现,然后再修复。

优秀的开发者为客户开发能够创造价值的功能,差的开发者只是想完成任务。优秀的开发者不会声称需求描述是不完整的,并确保充分理解这些特性。差的开发者会等到需求细节完善后才开始工作。优秀的开发者总是确保拥有产品功能的相关信息,一旦信息丢失,他会想办法再得到它。

优秀的开发者不害怕在产品中加入其他人的代码,而差的开发者会担心别人使用他的代码。优秀的开发者认为不应该花费过多的时间来写不言自明(self-explanatory)和显而易见(well-documented)的代码。差的开发者总是需要分配额外的时间来记录和简化代码。

优秀的开发者永远不会觉得自己的代码已经足够好,相反会持续不断地整理和修复。他们始终致力于创造优雅的解决方案,认为他的工作是向客户提供价值。差的开发者只考虑自己代码是否优雅,将创造价值的工作留给别人。

 

Good Developer, Bad Developer
Posted on June 11, 2012 by guynirpaz I recently read Ben Horowitz’s piece on the importance of training people in startup companies. At the end of this article he put together a document “Good Product Manager, Bad Product Manager”. Here’s my spin on it: Good Developer, Bad Developer. Enjoy, I look forward to your comments!

Good Developer, Bad Developer

Good developer is an artist, a craftsman who enjoys the process of creation. Bad developer considers himself as a programmer, responsible for generating lines of code.

Good developer understands the problems of the customers. Bad developer understands only the technical problem at hand. Good developer does not define the why, but constantly strives to understand why. He’s responsible for the how, and still sees the big picture. Bad developer is focused on building classes and methods and configuration files, but does not get the big picture.

Good developer understands the complete architecture of the product. Bad developer knows only the components he’s written. Good developer fully understands the technologies that are used within the product. He understands what they are used for, and how they work internally.

Good developer is not afraid of new technologies but embraces them by quickly getting a grip. Bad developer only sticks to what he knows. His immediate reaction to any technical change is negative.

Good developer is constantly learning and improving his skills. Good developer reads technical articles, and finishes several technical books a year. Bad developer does not have time to learn. He’s always too busy with other stuff.

Good developer cares about the product quality. He is also very much concerned with the process quality. Good developer pushes himself to create bug-free code; bad developer leaves it to QA to find bugs to fix.

Good developer develops features which create value for customers. Bad developer completes tasks. Good developer will never claim the requirements are incomplete, and will make sure to fully understand the features he’s working on. Bad developer will wait until the finest details are available. To emphasize: good developer is the CEO of the feature – he’s going to make sure he always has the information needed to accomplish the feature, and in case information is missing he’ll make sure he gets it.

Good developer is not afraid to go into anyone’s code. Bad developer is afraid of others looking into his. Good developer understands that it shouldn’t take more time to write self-explanatory and well-documented code. Bad developer always needs to allocate extra time to document and simplify.

Good developer will never feel his code is good enough, and will always continue to clean and fix. Good developer always strives to create elegant solutions but understands that his job is to deliver value to customers. Bad developer thinks only about the elegance of his code and leave the job of delivering value to others.

Is that all? Did I miss anything or got some of these wrong? Feel free to chime in the comments below!

Guy Nirpaz
Co-Founder & CEO, Totango

分享到:
评论

相关推荐

    【程序员从初级到中级10个秘密】

    【程序员从初级到中级10个秘密】【程序员从初级到中级10个秘密】【程序员从初级到中级10个秘密】【程序员从初级到中级10个秘密】

    初级程序员 vs高级程序员有什么区别

    初级程序员 vs高级程序员有什么区别

    迅雷java高级程序员-面试归来-2010-05-21

    现在记录一下互联网公司与一般软件公司的区别,其中一点就是互联网应用在性能上要求很高,一个小时小时的技术面,大部分题目感觉都在谈论性能问题,自己在方面还是有差距! 仔细回忆了一下整个面试过程的题目,记录...

    程序员眼中的电脑

    程序员眼中的电脑,介绍服务器的概念,服务器与PC机的区别等。

    dm7程序员手册

    适用于DM7开发程序员使用,各种开发环境都有涉及,如window,linux,mac部分细节使用区别。

    Java程序员面试宝典 PDF 参考资料.rar

    Java程序员面试宝典 pdf,内容涉及String、Servlet、int 和 Integer的区别、、String 和StringBuffer的区别、运行时异常与一般异常有何异同、Servlet的生命周期、、EJB的技术实现、、Collection 和 Collections的...

    揭秘微软亚洲研究院 程序员必看

    揭秘微软亚洲研究院 程序员必看! 很有帮助!

    Java程序员(软件工程师)必读

    java 程序员 软件工程师必读,前辈的经验总结,可以帮助我们少走许多弯路

    EOS5.1程序员培训教程

    学习普元的EOS的官方学习资料,是EOS5.1为例子的,与EOS6有点区别

    Java程序员面试宝典

    3、int 和 Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 booleanBoolean char...

    java程序员面试技巧

    3、int 和 Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为 int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 ...

    Python之高级函数-高级程序员与普通程序员的区别

    普通程序员: 高级程序员: 2、filter函数 3、给定一个数列[1,3,5,6,7,9,10,435],求数列中每一项相乘的结果 普通程序员 高级程序员: 4、函数的递归和嵌套 通过生成菲波那切数列来演示: python的高阶函数 1...

    黑马程序员_Webservice公开课源码和笔记

    学习本次公开课你将收获和体会到什么: 学习完本次公开课,你将深入理解Web Service,快速上手...Web Service和Web服务器的区别? 在什么情况下你应该使用Web service? Web Service快速入门 Web Service企业开发实例

    C/C++程序员面试指南.杨国祥(带详细书签).pdf

    C、C++语言是IT行业的主流编程语言,也是很多程序员必备的软件基本功,是软件开发行业招聘考查的重点。本书以流行的面试题讲解为主要内容,介绍了C、C++语言基本概念,包括保留字、字符串、指针和引用、结构体、...

    程序员面试题九阴真经

    程序员面试之九阴真经 谈谈final, finally, finalize的区别: final:::修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又...

    程序员SQL金典(杨中科)

    一本非常适合初学数据库的书籍。各种数据库的语法的区别,非常适合作为参考书籍。

    Java面试题深入解析:在互联网公司面试程序员需要留意的六个问题.docx

    # Java面试题深入解析:在互联网公司面试程序员需要留意的六个问题 在互联网公司中,Java程序员是极为重要的角色,因此Java面试题也是非常重要的一环。无论是初级Java程序员还是高级Java程序员,都需要留意以下六个...

    JAVA程序员面试宝典

    JAVA程序员面试宝典 1、String是最基本的数据类型吗? 基本数据类型包括byte、int、char、long、float、double、boolean和short。 java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高...

Global site tag (gtag.js) - Google Analytics