转载:http://coolshell.cn/articles/1081.html

之前本站发表过《优秀程序员的十个习惯》以及《程序员需要具备的基本技能》,那是我们需要去学习和培养的。这里,我们主要讨论十个糟糕程序员的特征,主要是需要让我们去避免和小心的。

1) 情绪化的思维

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

  • 我的程序不可能有这种问题。
  • Java就是shit。
  • 我最恨的就是使用UML做设计。
  • 需求怎么老在变,没办干了。
  • 受不了这些人,他们到底懂不懂啊。
  • …… ……

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

2) 怀疑别人

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

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

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

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

  • 对于一个客户的问题来说,首先应该想到的是如何先让用户正常工作,如何恢复正在“流血”的系统,而不是把用户放在一边而去分析问题的原因和解决方案。
  • 对于解决一个bug来说,重现bug,了解原来程序的意图是首先重要的事,而不是马上去修改代码,否则必然会引入更多的BUG。
  • 对于一个需求来说,我们需要了解的需求后面的商业背景,use case和真实意图,而不是去讨论如何实现。只有了解了用户的真实意图,实际使用的方式和案例,你才能真正如果去做设计。

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

4) 使用并不熟悉的代码

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

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

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

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

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

7) 滋生办公室政治

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

8 ) 说得多做得少

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

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

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

9) 顽固

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

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

10) 写“聪明”的代码

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

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

你是一个糟糕的程序员吗?欢迎你分享你的经历。

十个让你变成糟糕的程序员的行为相关推荐

  1. 十个行为把你变成糟糕的程序员

    十个行为把你变成糟糕的程序员 http://developer.51cto.com/art/201107/276255.htm 程序员当然也是分级别的,不是所有的程序员都是一个合格或是优秀的程序员.建 ...

  2. 十个糟糕的程序员的行为

    原文:http://cocre.com/?p=1081 之前本站发表过<优秀程序员的十个习惯>以及<程序员需要具备的基本技能>,那是我们需要去学习和培养的.这里,我们主要讨论十 ...

  3. 用什么心态对待水平糟糕的程序员[不靠谱的程序员、思路紊乱的程序员]?

    这些年遇到了很多糟糕的程序员,其实真正是写程序料的人,普通IT公司大概只占1/3左右吧,其实有2/3的人都太适合当程序员,还不如早点儿改行该干啥就干啥了,其中有1/10的人往往是相对比较糟糕的. 01 ...

  4. 优秀的程序员VS糟糕的程序员

    优秀的程序员和一般的程序员差别在哪里?怎么才能成为优秀的程序员?我们选择了这个职业就要把他做好! 优秀的程序员: 1.逻辑能力很强,这也是解决问题的关键. 2.分析能力.可以很好的解决复杂问题. 3. ...

  5. 十个最为戳心测试/开程序员笑话,念茫茫人海,该如何寻觅?

    目录:导读 前言 一.Python编程入门到精通 二.接口自动化项目实战 三.Web自动化项目实战 四.App自动化项目实战 五.一线大厂简历 六.测试开发DevOps体系 七.常用自动化测试工具 八 ...

  6. 糟糕的程序员并不愚蠢,只是……

    总有些程序员更为出色.事实上,据某一统计数据显示:他们之中少部分人着实优异,有部分还不错,大多数至少能胜任程序员的工作,而一些人几乎不能胜任,一些则令人敬而远之. 也就是说,优秀的程序员和糟糕的程序员 ...

  7. 如何成为一名糟糕的程序员?

    今天我想和你聊一聊优秀程序员的基本素养. 我想你肯定遇到过这样一类程序员:他们无论是写代码,还是写文档,又或是和别人沟通,都显得特别专业.每次遇到这类人,我都在想,他们到底是怎么做到的? 随着工作时间 ...

  8. 五个方法成为更好的程序员

    酷壳: http://CoolShell.cn/  原文: http://coolshell.cn/?p=2606  对我来说,一个好的程序员应该是努力去追求尽可能无错的高质量的符合需求的代码实现. ...

  9. 程序员十个糟糕的行为

    注:本文的出处并不清楚!!!原文为网上收集! 这里,我们主要讨论十个糟糕程序员的特征,主要是需要让我们去避免和小心的.     1) 情绪化的思维     如果你开始使用不同颜色的眼光来看待这个世界的 ...

最新文章

  1. [心情]说说作为新手的困惑
  2. dede后台title怎么修改的?去掉XXXX-织梦内容管理系统V5.7
  3. 打印modal框中在线生成的二维码
  4. liunx 常用命令-cut
  5. 微型计算机的主要硬件以及技术指标,微型计算机主要技术指标
  6. bci测试如何整改_EMC测试不合格,应该这样整改
  7. jquery基础选择器和层次选择器
  8. 自学Python6个月,你能找到工作吗?
  9. flutter尽然还能有这种操作!!!
  10. mysql常用的备份命令有哪些_Mysql常用命令及sql代码整理 非常实用值得收藏 - 文中之舞...
  11. 华为手机计算机快捷设置密码,华为手机首次重启绘制图案密码后让输入解锁密码。我没有设置呀?怎么办...
  12. oracle建表类型,oracle 建表类型以及约束
  13. 服务器安装cos系统,COS(国产操作系统)安装教程
  14. 广东省计算机学校,广东省计算机基础练习平台(高校版)安装设置方法
  15. 负熵作为非高斯的度量
  16. ESP8266+电能计量芯片
  17. 千图网爬图片(BeautifulSoup)
  18. CVPR 2021 | “以音动人”:姿态可控的语音驱动说话人脸
  19. Ubuntu 16.04 VCS+Verdi安装总结
  20. 分布式处理系统服务器配置,分布式解决方案

热门文章

  1. 优化网站性能 提高网站速度访问速度的14条实践(转)
  2. .net下导致Session失效的一种情况:js教本中使用window.open和window.showModalDialog时需要注意...
  3. App内存优化-实践
  4. jenkins ssh 部署 Can't connect to server 错误
  5. Unity+KBEngine实战系列1——棋牌(含完整教程与源码)
  6. mac terminal ssh client shuttle 免输密码
  7. centos7安装kubernetes 1.1
  8. 如何对CentOS FTP服务配置 - 51CTO.COM
  9. 完成端口与高性能服务器程序开发
  10. Oracle 函数大全(字符串函数,数学函数,日期函数,逻辑运算函数,其他函数)...