十个糟糕的程序员的行为-程序员宅基地

技术标签: java  

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

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的美国人后来在其邮件中询问他某个单词的意思。呵呵。

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

转载于:https://www.cnblogs.com/px7034/archive/2010/09/10/1823353.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/anmu1361/article/details/102451543

智能推荐

【计算思维】第14届蓝桥杯省赛计算思维U8组真题试卷_计算思维u8省赛-程序员宅基地

文章浏览阅读1.3k次,点赞23次,收藏21次。70 个小朋友参加夏令营活动,老师们组织小朋友做游戏,让他们站成一排,从 1 开始顺序报数,报奇数的 小朋友出局;剩下的小朋友位置不变,再次从 1 开始报数,报奇数的出局......按照这个规则继续下去,直 到剩一个小朋友为止。维维坐在第 1 列火车的 10 号车厢,奇奇坐在第 2 列火车的 10 号车厢。当维维和奇奇正好相遇时,第 1 列 火车的 14 号车厢,与第 2 列火车的( )号车厢相遇。下图中每个圆圈代表一个小朋友。将一个表面涂有颜色的正方体,分割成同样大小的 27 个小正方体,如下图所示。_计算思维u8省赛

记录配置Visual Studio 2022环境变量以及找不到nmake.exe文件的问题_未找到文件nmake-程序员宅基地

文章浏览阅读2.1k次,点赞3次,收藏7次。作者:奇版权:本作品采用「」许可协议进行许可。_未找到文件nmake

MongoDB索引详解-03-程序员宅基地

文章浏览阅读3.9k次,点赞2次,收藏5次。索引是一种用来快速查询数据的数据结构。B+Tree就是一种常用的数据库索引数据结构,MongoDB采用B+Tree 做索引,索引创建在colletions上。MongoDB不使用索引的查询,先扫描所有的文档,再匹配符合条件的文档。使用索引的查询,通过索引找到文档,使用索引能够极大的提升查询效率。按照索引包含的字段数量,可以分为单键索引和组合索引(或复合索引)。按照索引字段的类型,可以分为主键索引和非主键索引。按照索引节点与物理记录的对应方式来分,可以分为聚簇索引和非聚簇索引,其。_mongodb索引

在 Elasticsearch 中删除索引的语法是什么?_elasticsearch删除索引数据-程序员宅基地

文章浏览阅读190次。请注意,在实际操作前,请确保你已经正确备份了要删除的数据,因为删除索引操作不可逆。此外,如果需要删除所有索引(这是一项非常危险的操作,应当极其谨慎),可以使用。例如,如果你想要删除名为。_elasticsearch删除索引数据

如何写出一份优秀的PRD-文档篇_在线教育prd文档-程序员宅基地

文章浏览阅读285次。要用“作为一个用户(As a user),我希望(I want)什么功能,以(so that)满足什么商业价值“的标准格式描述,以讲清楚该需求的目标用户、功能和价值。一个功能设计是否合理,能否被设计和开发团队读懂,设计、开发出满足用户需求和业务需求的产品,都要依赖需求描述的合理性。如果有专业的交互设计师,这反而是对他设计的一种限制,以你的不专业影响了他的专业。上回讲到PRD撰写前的准备工作,包括摸清PRD的目标用户的习惯,深入了解本次用户的需求,根据INVEST和MVP原则、按照业务流程做功能拆分。_在线教育prd文档

使用Taro开发鸿蒙原生应用——快速上手,鸿蒙应用开发指南_taro框架鸿蒙-程序员宅基地

文章浏览阅读1.3k次,点赞19次,收藏25次。在今年的敏捷团队建设中,我通过Suite执行器实现了一键自动化单元测试。Juint除了Suite执行器还有哪些执行器呢?由此我的Runner探索之旅开始了!随着鸿蒙系统的不断完善,许多应用厂商都希望将自己的应用移植到鸿蒙平台上。最近,Taro 发布了 v4.0.0-beta.x 版本,支持使用 Taro 快速开发鸿蒙原生应用,也可将现有的小程序转换为鸿蒙原生应用。本文将正式为开发者提供一份完整的鸿蒙应用开发指南,帮助大家使用 Taro 开发自己的第一个鸿蒙应用。_taro框架鸿蒙

随便推点

Features for configuring JSON-to-Java mapping-程序员宅基地

文章浏览阅读51次。Following on/off features are defined inDeserializationConfig.Feature(Jackson 1.x) orDeserializationFeature(Jackson 2.x):ACCEPT_EMPTY_STRING_AS_NULL_OBJECT (default: false) (since1.8)Deter..._fail_on_invalid_subtype

如何度过研究生生活(转)_课题题目要有延展性对一个课题来说,如果选错了题目,就是失败,题目选对了,还有-程序员宅基地

文章浏览阅读4.6k次,点赞2次,收藏2次。转自http://hi.baidu.com/fillysky/item/a579d20f2350afca74cd3c19笛卡尔说过:“最有价值的知识是方法的知识。”一、研究生与大学生的区别大学生基本上是来接受学问、接受知识的,然而不管是对于硕士时期或是博士时期的研究而言,都应该准备要开始制造新的知识,所以第一个我们必须要很用心、很深刻的思考,大学生和研究生是不同的。(一_课题题目要有延展性对一个课题来说,如果选错了题目,就是失败,题目选对了,还有

算法练习——翻转二叉树 leetcode 226 python-程序员宅基地

文章浏览阅读1.1k次。题目描述:给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。递归求解:class Solution: def invertTree(self, root): if not root: return None self.invertTree(root.left) self.invertTree(root.right) # def swap(left, right): .

解析开关电源32个测试项:测试所需工具、测试方法、波形_元器件开短路测试项目-程序员宅基地

文章浏览阅读1.1k次。测试S.M.P.S. 在规格耐压和时间条件下, 是否产生电弧ARCING, 其CUT OFF CURRENT 是否满足SPEC. 要求, 及是否会对S.M.P.S.造成损伤.(1). 依SPEC.要求: 输入条件(RATED VOLTAGE), 输出负载(FULL LOAD) 和操作温度(OPERATION TEMP.),通常温度为:(0℃).(2). TRIGGER SLOPE 设定为"+", TRIGGER MODE 设定为"AUTO", TIME/DIV 视情况而定1S/DIV 或2S/DIV._元器件开短路测试项目

求解二阶偏微分方程c语言,科学网—求解偏微分方程开源有限元软件deal.II学习--Step 3 - 亓欣波的博文...-程序员宅基地

文章浏览阅读679次。完整版见:qixinbo.info.deal.II的程序结构deal.II采用面向对象编程,其中包含了很多的Modules,各自实现不同的功能,并有机地结合起来。如上图所示。具体为:TriangulationTriangulations是单元及其更低维度的边界的集合。triangulation存储了网格的几何和拓扑性质:单元怎样接触,它们的顶点在哪里。triangulation不知道将要在它上面使..._c语言二阶微分运算

turtlebot技术参数_turtlebot 加速度-程序员宅基地

文章浏览阅读1.9k次。turtlebot2的IMU只有陀螺仪,没有加速度计。但是还好有编码器提供里程计信息。它们的技术参数如下:(参考)1.陀螺仪Kobuki硬件入门教程-陀螺仪 说明: 介绍陀螺仪的相关信息 规范 3轴数字陀螺仪 制造商:STMicroelectronics 部件名称:L3G4200D 测量范围:±250度/秒 偏航轴在出厂时在±20度/秒至±100度/秒的范围内校准2.里程计(参考)M_turtlebot 加速度

推荐文章

热门文章

相关标签