十个糟糕程序员的特征,主要是需要让我们去避免和小心的。
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. 缺乏清晰的思维模式 程序员在面对问题时,应具备清晰、逻辑性强的思维模式。...
3. 糟糕设计的特征: - 僵化性:代码间耦合度过高,导致任何改动都需要大规模修改,延长开发周期。 - 脆弱性:微小改动可能导致意想不到的错误或崩溃,关联性不易理解。 - 牢固性:软件难以拆分和复用,阻碍模块...
Linux 之父 Linus Torvalds 在最近的一篇文章中炮轰 C++,称其为糟糕的语言,认为它会导致非常糟糕的设计选择和低效的抽象编程模型。Torvalds 认为,C++ 的所谓优点只是巨大的错误,并且会导致项目中的混乱和垃圾...
通过以上对《程序员的八重境界》的解读,我们可以发现,无论处于哪个阶段,每个程序员都应该清楚自己的定位和目标,并为之不懈努力。更重要的是,每个人都应该找到自己真正热爱的东西,并为之付出努力。在这个过程中...
10. **技术过时**:技术更新迅速,程序员需要不断学习新技能以保持竞争力,这既是一种挑战,也可能带来压力,尤其是在面对不断涌现的新框架、工具和语言时。 总之,了解并尊重程序员的工作特性,提供支持和理解,...
在这个科技日新月异的时代,程序员作为推动技术发展的重要力量,他们的工作方式和性格特点往往与常人有所不同。然而,无论是同行还是其他职业的人,都可能对某些程序员的行为感到难以忍受。以下将列举一些程序员普遍...
如果数学不好,是否可以成为一名程序员呢?答案是肯定的。 本书最适合:数学糟糕但又想学习编程的你。没有晦涩的公式,只有好玩的数学题。帮你掌握编程所需的“数学思维”。日文版已重印14次!编程的基础是计算机...
这个项目也用到了模型驱动产生器,但重新从头实现一个电子表格功能的框架是很不切实际的——甚至是更加糟糕的,应该尽量“产生”这样的功能。 ... 测试驱动开发全攻略 ...千万不要把“测试”和“除虫”...
本书最适合:数学糟糕但又想学习编程的你。没有晦涩的公式,只有好玩的数学题。帮你掌握编程所需的“数学思维”。日文版已重印14次!编程的基础是计算机科学,而计算机科学的基础是数学。因此,学习数学有助于巩固...
自从我读了Johnny von Neumann的传记,我已经为弥补我糟糕的数学技能花了15个月了。读了大量的数学书籍,不过呢,似乎我还有更多没有读,当然我会接着做的。 Let me tell you about it. 现在我就来告诉你这些。
然而,我们常常看到一些效率低下的程序员仍然能在职场上立足,这看似违背了“优秀的程序员效率是差的程序员10倍”的论断。这个问题可以从多个角度来解析。 首先,一些成功的公司,如Apple和Google,他们依赖的不...
在编程世界中,调试是每个开发者必经的过程,尤其对于疲惫的程序员来说,高效便捷的调试工具至关重要。本文将深入探讨Python中的一些快速且实用的调试输出方法,帮助你优化开发流程,提升工作效率。 首先,Python中...
然而,某些程序员可能倾向于在一行中编写多个操作,以减少代码行数。这样的做法在某些情况下可能使代码更紧凑,但也会降低可读性,尤其是在需要调试时。强制性的单一操作一行可能导致代码过于分散,反而增加了阅读和...
文件中提到的“糟糕界面集锦—界面设计考虑要点”以及“批判索尼爱立信的手机设计”等内容,突出了用户体验设计对于软件成功的重要性。好的用户体验设计不仅能够提升用户的满意度,还能增加产品的竞争力。因此,在...
一些糟糕重新实现,由非 C 程序员用 C 编写。 建造 make 公用事业 catshit一个catshit的、不完整的cat重新实现 falseshit一个falseshit的、不完整的false重新实现 shithead一个shithead的、不完整的head重新实现 ...
开发人员生活在一个充满不确定性的世界中,而不确定性会给您带来压力,并可能让您感觉很糟糕。 如果您的团队不开放并就这种不确定性进行沟通。 这是不健康的,你应该可以说,在公开场合。 我刚刚遇到了这个高阶函数...
无论是程序员还是其他职业的面试,虽然都是提交简历、电 话面试、面谈、拿到 Offer 等这一系列过程,但是每一步都很重要! 首先简历要精炼、漂亮、大方,尽量突出自己的优势,避开自己 的劣势。电话面试还好,因为...
这篇文章讲述了作者遇到的一段极其糟糕的程序代码,这段代码在一个大型公司的商业系统核心模块中,由一名被解雇的程序员负责维护。代码的特殊之处在于所有的函数和变量名都以食物来命名,如"匹萨"、"西红柿"等,使得...
* 面试感悟:作者觉得面试不是一般的糟糕,是非常的糟糕。 * 面试结果:作者没有通过面试。 知识点四:面试反思 * 面试经验:作者认为腾讯的面试问题还是比较基础的,但后面的面试却有深度了。 * 面试感悟:作者...