`

程序员十个糟糕的行为

阅读更多

转载自:http://topic.csdn.net/u/20091113/20/2592CCEF-C274-4C68-9CF7-B61516D37A64.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的美国人后来在其邮件中询问他某个单 词的意思。呵呵。
    你是一个糟糕的程序员吗?欢迎你分享你的经历。

分享到:
评论

相关推荐

    十个糟糕的程序员的行为

    良好的编程习惯时一个程序员所具备的基本条件

    程序员行为研究调查问卷

    本人是一名北京大学计算机系研究生,所在实验室正在从事程序员行为的研究,希望通过了解程序员编程时的行为,从而为编程开发提供辅助的工具。为些设计了了个调查问卷,希望得到一些统计数据来验证我们的猜想。  感...

    体育运动类APP对程序员体育锻炼行为的影响研究.pdf

    体育运动类APP对程序员体育锻炼行为的影响研究.pdf

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

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

    统计思维:程序员数学之概率统计

    运行实验检验统计行为特征,如生成服从各种分布的样本 通过模拟理解数学上艰涩的概念 学习贝叶斯估计等实用内容 用Python导入各种来源的数据 运用统计推断解决真实数据问题《统计思维:程序员数学之概率统计...

    统计思维-程序员数学之概率统计【百度云】

    运行实验检验统计行为特征,如生成服从各种分布的样本 通过模拟理解数学上艰涩的概念 学习贝叶斯估计等实用内容 用Python导入各种来源的数据 运用统计推断解决真实数据问题《统计思维:程序员数学之概率统计...

    Java程序员面试宝典

    面向对象计算始于这个基本概念, 即现实世界可以被描绘成一系列完全自治、封装的对象, 这些对象通过一个受保护的接口访问其他对象。 (4).多态性:多态性是指: 允许不同 类的对象对同一消息作出响应。多态性包括...

    java程序员面试技巧

    抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了 解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象...

    经典《程序员》杂志(2009年9月版)

    经典《程序员》杂志(2009年9月版) 《洛杉矶时报》:失去李开复的Google,中国之路更艰难(9月23日) 9月刊上市:绩效考核的五种...软件工程师的十个“不职业”行为 学做程序经理 云计算对21世纪IT人才的挑战 架构实践

    基于Java Swing实现的程序员计算器【源码包+jar包+exe可执行文件】

    第2行为十进制输入,第3行为2进制转换结果,第4行为8进制转换结果,第5行为16进制转换结果; 3. 当前不支持括号运算和已输入运算符的情况下改变运算符; 4. 左移和右移运算符都是对二进制进行移一位; 5. 不支持键盘...

    10种阻碍程序员职业生涯发展的行为

    在这个过程中他发现并总结了十种程序员无法意识到自己潜力的原因,意在让更多程序员发掘出自己的潜力,从而成为强大的程序员。  AaronStannard是新创公司MarkedUp的CEO,他最近花费大量时间雇佣、评估很多不同的...

    编程之禅(程序员的哲学 )

    毫无疑问,古老的编程艺术在西文人的脑海里通常会被误解,...这是计算机所带来的--禅师程序员的行为方式。 有人说,掌握了禅机的程序员也就掌握了生命。这样的程序员是以一种永不疲倦的童稚的欢乐来看待这个世界的。

    java程序员-面试技巧

    包含我所搜集的所有程序员面试心得和作为程序员的基本行为规范,希望能帮助求职人员

    java程序员面试宝典

    程序员面试之葵花宝典 、面向对象的特征有哪些方面? 1. 抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时...

    一份合格的程序员简历的自我介绍

    主修课程:基础会计学、货币银行学、统计学、经济法概论、财务会计学、管理学原理、组织行为学、市场营销学、国际贸易理论、国际贸易实务、人力资源开发与管理、财务管理学、企业经营战略概论、质量管理学、西方...

    JAVA程序员面试宝典

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

    程序员面试金典 第5版

    程序员面试金典 第5版全面详尽介绍如何成功通过程序员面试,内容涉及面试过程、面试官的幕后决策及可能提出的问题、特定场景的面试过程(大型公司)、面试前准备工作及行为准备、技术问题的准备和复杂算法的解决方法...

    2019 大数据揭秘京沪程序员的爱情代码 WIFIPIX.zip

    2019年推出的《大数据揭秘京沪程序员的爱情代码》文档(以下简称“爱情代码”),正是基于大数据分析手段,探索中国两大都市北京和上海中程序员群体的爱情观与行为模式的一份研究报告。该报告由WIFIPIX团队精心编制...

Global site tag (gtag.js) - Google Analytics