`

十个行为把你变成糟糕的程序员(转载)

 
阅读更多

1) 情绪化的思维

如果你开始使用不同颜色的眼光来看待这个世界的话,那么你可能会成为一个很糟糕的程序员。情绪化的思维或态度很有可能会把自己变成一个怪物。相信你 经常可以看到很多很糟糕的程序会使用下面的这些语句:

我的程序不可能有这种问题。

Java就是shit。

我最恨的就是使用UML做设计。

需求怎么老在变,没办干了。

受不了这些人,他们到底懂不懂啊。

这些带着情绪化的思维和态度,不但可以让你成为一个很糟糕的程序员,甚至可以影响你的前途。因为,情绪化通常都是魔鬼,会让你做出错误的判断和决定,错误 码率的判断和决定直接决定了你的人生。

2) 怀疑别人

糟糕的程序总是说:“我的代码一定是正确的,我怀疑编译器有问题”,“我这应该没有问题吧,STL库怎么这么难用啊”。我曾经见过有程序员这样使用 STL类:map,当他发现这样放入字符串后却取不出来,觉得那是STL库的BUG,然后自己写了一个map!我的天啊!

某些时候,过早的下结论是一个很不好的习惯,任何事情都有其原因,只有知道了原因,你才能知道是谁的问题。一般来说,总是自己出的问题。

3) 过多关注实现,陷入问题细节

有些时候,当我们面对一个问题或是一个需求的时候,糟糕的程序员总是会马上去找一个解决方案或是实现,这是一个很不好的习惯。设计模式告诉我们, “喜欢接口,而不是实现”就是告诉我们,认清问题的本质和特性要比如何实现更重要。

对于一个客户的问题来说,首先应该想到的是如何先让用户正常工作,如何恢复正在“流血”的系统,而不是把用户放在一边而去分析问题的原因和解决方 案。

对于解决一个bug来说,重现bug,了解原来程序的意图是首先重要的事,而不是马上去修改代码,否则必然会引入更多的BUG。

对于一个需求来说,我们需要了解的需求后面的商业背景,usecase和真实意图,而不是去讨论如何实现。只有了解了用户的真实意图,实际使用的方式和案例,你才能真正如果去做设计。

糟糕的程序总是容易陷入细节,争论于如何实现和实现难题,以及问题的根本原因,而忽略了比这些更重要的东西。只有看懂了整个地图,我们才知道要怎么去走。

4) 使用并不熟悉的代码

糟糕的程序员最好的朋友是 Ctrl-C 和 Ctrl-V,有些时候,他们并不知道代码的确切含义,就开始使用它,有证据表明,由拷贝粘贴引发的bug占了绝大多数。因为,代码总是只能在特定的环境下才能正常地 工作,如果代码的上下文改变了,很有可能使得代码产生很多你不知道的行为,当你连代码都控制不住了,你还能编出什么好的程序呢?

5) 拼命工作而不是聪明的工作

对于糟糕的程序员,我们总是能看到他们拼命地修正他们的bug,总是花非常多时间并重复地完成某一工作。而好的程序可能会花双倍的时间来准备一个有 效的开发环境,工具,以及在开发的时候花双倍甚至10倍的时间来避免一些错误。好的程序员总是会利用一切工具或手段来让自己的工作变得更有效率,总是为在 开发的时候尽可能得不出错。后期出错的成本将会是巨大的,而且那时改正错误的压力也是巨大的。

所以,糟糕的程序通常会让自己进入一种恶性循环,他们看上去 总是疲惫的,总是很辛苦的,所以更没有时间来改善,越没有时间来改善,就有越多的问题。所以,拼命工作有些时候可能表明你不是一个好的程序员。

6) 总是在等待、找借口以及抱怨

当需求不明确的时候,当环境不是很满意的时候,他们总是在等待别人的改善。出现问题的时候,总是在找借口,或是抱怨这也不好,那也不好,所以自己当 然就没有做好。糟糕的程序员总是希望自己的所处的环境是最好的,有明确的需求,有非常不错的开发环境,有足够的时间,有不错的QA,还有很强的teamleader,以及体贴自己的经理,有足够的培训,有良好的讨论,有别人强有力的支持……,这是一种“饭来张口,衣来伸手”的态度,这个世界本来就不完 美,一个团队需要所有人去奋斗,况且,如果什么都变得完美了,那么,你的价值何在吗?driving instead of waiting,leading instead of following.

7) 滋生办公室政治

有句话叫“丑女多作怪”,意思是说如果一个自己没有真实的能力的话,那么他一定会在其它方面作文章。糟糕的程序员也是这样,如果他们程序编不好的 话,比不过别人的话,他们通常会去靠指责别人,推脱责任,或是排挤有能力的人,等等不正常的手段来保全自己。所以,糟糕的程序通常伴随着办公室政治。

8 ) 说得多做得少

糟糕的程序员总是觉得自己什么都懂,他们并不会觉得自己的认识和知识都是有限的。这就是所谓的夸夸其谈,是的,什么都做不好的程序员能靠什么混日子 呢?就是吹啊吹啊。

另一个表现方式是他们在评论起别人的程序或是设计,总是能挑出一堆毛病,但自己的程序写得也很烂。总是批评抱怨,而没有任何有建设性的意见,或是提 出可行的解决方案。

这些糟糕的程序员,总是喜欢以批评别人的程序而达到显示自己的优秀。

9) 顽固

当你给出一打证据说明那里有一个更好的方案,那里有一个更好的方向的时候,他们总是会倔强的认为他们自己的做法才是最好的。一个我亲身经历的事例就 是,当我看到一个新来的程序员在解决一个问题的时候走到了错误的方向上时,我提醒他,你可能走错了,应该是另外那边,并且我证明了给他看还有一个更为简单 的方法,有。然而,这位程序员却告诉我,“那是我的方法,我一定要把之走下去,不然我会非常难受”,于是,在三天后的代码评审中,在经过顽固地解释以及一 片质疑声中,他不得不采用了我最先告诉他的那个方法。

这些程序员,从来不会去想,也不会去找人讨论还有没有更好的方法,而是坚持自己的想法,那怕是条死路都一往直前,不撞南墙永不回头。

10) 写“聪明”的代码

他们写出来的代码需要别的同事查看程序语言参考手册,或是其程序的逻辑或是风格看上去相当时髦,但却非常难读。代码本应该简洁和易读,而他们喜欢在 代码中表现自己,并尝试另类的东西,以显示自己的才气。是的,只有能力有问题的程序员才需要借助这样的显示。

记得以前的一个经历,一位英语很不错的程序员加入公司,本来对我们这些英语二把刀来说,我们喜欢看到的是简单和易读的英文文档,然后,那位老兄为了 展示他的英语如何牛,使用了很多GRE中比较生僻的短语和词汇。让大家阅读得很艰苦。最有讽刺意味的是,有一位native的美国人后来在其邮件中询问他 某个单词的意思。呵呵。

转载地址:http://developer.51cto.com/art/201107/276255.htm

 

分享到:
评论

相关推荐

    十个糟糕的程序员的行为

    以下是从“十个糟糕的程序员的行为”这一主题中提炼出的关键知识点,旨在帮助程序员们避免这些常见的错误,提升自身编程技能。 ### 1. 缺乏清晰的思维模式 程序员在面对问题时,应具备清晰、逻辑性强的思维模式。...

    一个程序员的奋斗史

    其次,描述中的“从这本书中,你可以看到作为一个程序员,你未来的方向”意指文章不仅讲述了一个程序员的成长故事,还试图为读者提供一个参考,帮助他们了解程序员的职业生涯可能面临的各种情况,以及如何更好地为...

    程序员面试全攻略

    4. 行为面试:学习如何通过讲述过去的经历来展现你的团队合作、解决问题和领导力。 四、程序设计技能 1. 数据结构与算法:深入理解并能熟练应用各种数据结构和基础算法,如排序、查找等。 2. 编程语言:精通至少一...

    软件工程师十个“不职业”行为

     下面是软件工程师十个“不职业”行为。  如果程序员能够去努力克服这些不职业行为,其成长将会更加优异。  行为一:对外交付半成品  我们的态度反映在我们的工作上,职业化的人士从不从自己手上交出不...

    程序员表白专用程序

    "程序员表白专用程序"就是一个这样的创意项目,它利用JavaScript(简称JS)这门强大的前端编程语言来为程序员们提供一个独特的方式来向心仪的对象表白。JavaScript是Web开发的基础,广泛应用于网页交互、浏览器扩展...

    程序员必备.doc cmd

    这个文档可能涉及了注册表的高级修改技巧,对于定制系统行为或修复问题的程序员来说,这是一份宝贵的参考资料。 7. "Windows自动启动程序的十大藏身之所.doc" - 自动启动程序是许多恶意软件的常见隐藏地点,了解...

    程序员面试.pdf

    十四、让面试失败的十个坏习惯:列举了可能导致面试失败的十个坏习惯,帮助应聘者在面试时避免这些不良习惯。 十五、面试中要避免的肢体语言:讲解了面试中应该注意的非语言沟通技巧,例如眼神交流、坐姿等。 十六...

    怎样做一个优秀的程序员

    ### 如何成为一个优秀的Java程序员 在当今快速发展的信息技术领域中,Java作为一种强大的编程语言,不仅在企业级应用中占据着举足轻重的地位,也在移动应用、桌面应用等多个领域发挥着重要作用。对于想要成为一名...

    什么样的人适合做程序员?程序员应该具有什么样的素质程序员四大禁忌

    总之,成为一名优秀的程序员,不仅需要具备耐心、毅力、细心和勇于挑战的品质,还需要保持谦逊、热情和自我反省的态度,同时避免轻易放弃、浮躁自满、消极被动和推卸责任等行为。通过这样的自我修养和努力,才能在IT...

    程序员给女朋友做的精美3D相册

    这个“程序员给女朋友做的精美3D相册”项目是一个典型的HTML5技术应用案例,展示了Web开发中的创新和个性化设计。让我们深入探讨一下其中涉及到的技术和知识点。 首先,HTML5是现代网页开发的基础,它提供了更丰富...

    程序员分成几种不同的境界

    超级程序员的境界则超越了技术层面,他们通过代码影响人们的思想和行为。超级程序员不仅是技术专家,也是思想领袖,他们的影响力不仅体现在代码质量上,更在于他们对问题的独特洞察和深远影响。 总的来说,程序员的...

    程序员面试100问秘籍

    此外,《程序员面试100问秘籍》中也可能涵盖面试技巧,如如何有效地阐述自己的工作经验、如何回答行为面试问题(比如“你遇到的最大挑战是什么?”)、如何进行有效的自我介绍等。 总的来说,这本书提供了全面的...

    2018程序员上午题

    在这个题目中,提到了程序员考试的相关内容,这涉及到软件开发的基本知识。软件开发不仅仅是编程,还包含了需求分析、设计、测试等多个环节。试题中的错误分类,例如段落标题编号错误、语句不通顺、错别字、格式问题...

    程序员面试宝典 程序员面试宝典

    《程序员面试宝典》是一本全面覆盖编程语言基础、高级特性、设计模式及Web开发技术的面试指南。这本书旨在帮助程序员准备笔试和面试,提升在求职过程中的竞争力。以下是书中可能涉及的一些关键知识点: 1. **C语言*...

    程序员必学的1500个单词

    《程序员必学的1500个单词》这本书针对的是程序员和计算机专业人员,它汇集了计算机科学和编程中最常见的英语单词和术语。在当今全球化的科技环境中,英语作为国际通用语言,对于从事IT行业的专业人士而言,掌握这些...

    张辉-布道师-《程序员的credit 》

    它不仅包括你的工作成果和能力,还包括你的行为、态度和与他人互动的方式。通过不断地学习、提升个人技术、沟通和协作能力,以及有意识地展现个人特色,程序员可以在团队中建立起自己的良好credit,从而为职业生涯的...

    程序员相关资料

    【程序员相关资料】这个压缩包文件包含了丰富的程序员学习和备考资源,对于想要深入理解编程、提升编程技能或者准备程序员考试的人来说,是极有价值的参考资料。在这个压缩包中,我们可以期待找到各种与程序员工作和...

    程序员的表白神器

    这个项目利用了JavaScript库jQuery,来创造一个既有趣又富有创意的表白方式,给程序员的女友带来不一样的惊喜。 jQuery是一个强大的JavaScript库,它简化了HTML文档遍历、事件处理、动画设计以及Ajax交互。在这个...

    程序员英语词汇1700词.pdf

    这份"程序员英语词汇1700词"的资料为程序员提供了学习和掌握核心IT词汇的机会。以下是一些重要的词汇及其含义: 1. **file** - 文件:在计算机系统中,文件用于存储数据或程序。 2. **command** - 命令:指计算机...

Global site tag (gtag.js) - Google Analytics