有一种说法是,"一个伟大的程序员相当于10个平庸的程序员"。
没有人愿意被贴上了糟糕程序员的标签,但一个可悲的事实是,很多开发人员没有意识到他们自己就属于这一群体。没有人愿意问自己:我是一个糟糕的开发人员吗?
糟糕的开发人员
如果你还是编程新手,并且担心自己编写的是糟糕的代码,那么可能你还不是高手。
不过,你也不用因此灰心丧气,因为只要你不是无可救药的,那就都还有改进的余地。
首先让我们先来了解关于糟糕的开发人员的两种主要类型:
牛仔/女程序员(为了阅读方便,后面我会统称"牛仔"来指代这种类型)
平庸的开发人员
从本质来看,这两者是相同的,但是它们通常表现出不同的行为。
牛仔程序员
牛仔程序员会毁掉一个团队,他们喜欢单枪匹马的做项目,并且项目往往都很短命。
那些从来没有受到过任何编写可用代码的指导,自学成才的程序员通常会有成为牛仔程序员的危险,并且很多优秀的,有经验的程序员有可能在他们的编码职业生涯的初期,就是一个牛仔程序员。
那么,什么是牛仔程序员的关键属性呢?
1.编码速度非常快
通常,这种类型的不良开发者开发新功能的速度要远远快过平均值,然而,不幸的是,那么不懂代码的人,因此会认为这些"快枪手"很牛掰(这只会进一步让这些牛仔程序员在自我膨胀的道路上越走越远)。
这类开发人员在独自工作的时候最佳,在客户对时间要求特别紧迫只要尽快实现功能的时候最适合。
牛仔程序员编码速度非常快——这意味着,他们的代码没有对可维护性有任何规划。所以这就会导致……
2.凌乱、不可读的代码
快速代码设计创建出来的项目常常会乱得一塌糊涂(或者更确切地说,他们就没有进行代码设计)。这种混乱的代码,通常被称为"意大利面条式代码",这指的是它的形状,而不是味道。
意大利面条式代码难于理解,并且通常没有必要那么庞大和复杂,从而导致了其他人难于理解程序员的所作所为,因此这种代码通常是维护的噩梦。这意味着如果有人不幸和一个牛仔程序员一起工作,那么整体生产力就会大幅度下降。
凌乱的代码会导致……阿里的《Java开发手册》建议好好学习下吧。也可以在Java核心技术后台发送手册直接下载。
3.Bug,无处不在的bug
如果一家公司的软件在变大和变得更加复杂之后,他们的代码仍然是一堆意大利面条,那么它就会成为一个等待爆炸的定时炸弹。在最坏的情况下,其后果甚至会像丰田汽车意外加速一样严重。众所周知,丰田汽车召回是一场灾难。
更重要的是,意大利面条式代码是不可扩展的。这意味着如果增加新功能,那么这种代码就像行走在雷区上——不知道什么时候,就会爆炸。这通常是因为牛仔程序员将每个功能都混合在一起,于是任何变化都可能会破坏软件。如果有更好的代码设计和/或单元测试,或许就能阻止这种情况,但是,牛仔程序员不在乎他们的代码是否是可用的,也不想编写测试(因为需要时间)。
更甚者,从糟糕的设计决策衍生出的代码结构方式,通常是不可测试的,甚至是无法调试的。在牛仔程序员身上,还有一种常见的情况是,在他们迅速"修复"一些bug的同时,创造出了更多的bug。因此他们总是感觉很忙,就像英勇的消防员,疲于到处灭火。
总而言之,每一个糟糕开发人员创造的bug和错误都会导致消耗生产力。哪怕刚开始的时候,他们看上去很牛,总是能按时完成其他开发人员不敢轻易允诺的编码任务,但是这是以各种意外错误频频降临为代价的,而这原本可以通过优秀开发人员的精心设计和简洁代码编程扼杀在襁褓中。
如果你超过80%的开发时间都花在了调试自己的代码上,并且调试过程像一场噩梦的话(即这边解决了一个bug,那边又出来了另一个bug),那么说明代码库不佳,并且你需要改进你的代码。
自大
有的牛仔程序员并不坏,因为他们只是根据管理/客户不可能的期限要求,才生产出了意大利面条式代码(但是,那些重视自己代码的开发人员会选择离开这样的公司或拒绝这样的客户)。
很多初学者和初级开发人员是因为没有编码计划,因而生产出了一堆有bug的代码,但有时是因为他们缺乏问题的经验,从而做出了错误的决定。
这些初学者通过接受来自于资深的优秀的开发者的指导,是可以改正的。但是,如果他们的身边尽是和他们一样或平庸的开发人员,那么他们就会陷入自我感觉良好的错觉中。
只要你愿意为自己的错误承担责任,只要你愿意从错误中学习,那么你就不算是一个糟糕的开发人员。
使得这些程序员变得糟糕的最重要的属性,是自大。
糟糕的程序员认为他们的代码是完美的,只会归咎于是客户的愚蠢导致了程序的崩溃,而不是反思——为什么他们做的软件会崩溃。牛仔程序员通常是自私的开发者,因为他们不会对那些不得不为他们"擦屁股"的开发人员抱有一丝同情心。
更为重要的是,这些自大的程序员总是认为自己的智力高人一等,总是自认为别人没有注释不行,总是认为那些不明白他们代码的人是因为太愚蠢,但从来不曾想想为什么大家不理解他们的代码。这种一直坚定不移地认为他们自己是对的,总是认为自己高人一等的结果就是,没有与人好好沟通就自作主张地构建了可能会给团队带来很多问题和麻烦的功能。还有的人由于(毫无正当理由地)深信自己的代码更好,因而有时候甚至会回避"最佳做法"或"标准"。
最糟的是,糟糕的程序员都不愿意听别人说教,不愿意从错误中学习,因为他们不承认他们犯了错误,正如前面提到的,他们通常会推卸责任。
请注意,这并不意味着牛仔程序员在现实中就是难相处或低智商的人——也许他们就是你遇到过的最和蔼亲切的人——但是,在他们面对批评的时候,却有着一种根深蒂固的自大和不愿意承担过错责任的心态。
平庸的开发者
这里我指的平庸意味着"不能胜任"。
在某些方面,平庸的开发者比牛仔程序员更糟,因为他们知道自己不能够胜任,却不愿意去努力,满足于停留在技能阶梯的底层。
不像牛仔程序员,平庸的开发者通常对编程缺乏兴趣,因此在理解编程概念方面有困难。他们需要很长的时间来创建一些东西,同时生产的代码欠佳并且充满问题。他们通常对编码毫无没有激情/兴趣可言,他们在学习新技术时进展缓慢,或通常没有实际的操作经验。
也许平庸的开发者不像牛仔程序员那样具有破坏性,这是因为他们处在一个团队中,但他们绝对不会为团队带来任何好处,并且他们提出的解决办法总是劣于优秀的开发人员(他们常常会因为错误的决策,导致满是bug/低效的代码)。
关于平庸的开发者,我就不再多说什么了。最差的估计是,他们可能会拖累整个团队,最好的情况是,他们勉勉强强也算是在最后期限内完成了任务。
问题的核心
促使开发者盘踞"糟糕"宝座的核心是因为他们缺乏成为一个更好的程序员的愿望。糟糕的程序员对目前的行为方式感到满意和舒适。更糟的是,牛仔程序员和平庸的程序员通常自认为知道那些其实他们不知道的东西。
更重要的是,糟糕程序员往往对学习新事物不感兴趣,因此不会有意地去改进自己。
这也是为什么在糟糕程序员的代码上经常可以发现大量复制&粘贴的东西,因为他们基本上不会去搞清楚为什么有些地方这些代码奏效而有些地方不奏效。复制&粘贴本身并不是坏事,但只有在下面这些情况下:
- 你知道你正在在做什么(很多糟糕的开发人员会自以为他们知道自己在做什么)
- 确信复制&粘贴的代码会有效工作
- 只用于测试/检验
糟糕的开发者通常只会复制粘贴StackOverflow代码,而不是去理解它,或者调整解决方案以匹配他们自己的代码。
此外,那些始终坚持所谓的"最佳做法"而不去理解为什么这些做法会被认为是"最好"的程序员也可以被归类为糟糕的程序员。
总而言之,也许你并不需要知道一个大型的复杂框架的每一个细节的工作原理。但是,你至少应该弄清楚你使用的部分是如何工作的。
糟糕的程序员从来不会从自己的错误中吸取教训,要么是因为不承认他们犯了错误,要么是因为他们缺乏学习的欲望,要么两者皆有。
每个人都会犯错,每个程序员都会制造bug,这没有什么大不了。但是,如果你总是在重复相同的错误,那就意味着你是一个不学习的糟糕的开发者。
优秀的开发人员
经过漫谈有关与糟糕开发者的相关特征,你可能对是什么造就了优秀开发人员已经有了一个模糊的想法。优秀的开发人员是开发队伍的中坚力量,并且他们通常具有以下特征。
有着一种山外有山人外有人的谦逊认识,愿意为错误承担责任,从错误中学习,写出的代码是可读的、结构化的、经过可靠设计的、可被轻松调试的,努力理解事物的工作原理,和团队中的其他人有着良好的沟通/协作,虚心接受批评和开放对待不同的方法,保持学习新技术的心态,乐于解决问题等等。
的确,关于何为高质量代码是很难衡量的(这就是为什么我没有将它包含在特征中,但是这确实是组成开......
原文转载:http://www.shaoqun.com/a/832913.html
跨境电商:https://www.ikjzd.com/
大森林:https://www.ikjzd.com/w/2268
欧舒丹:https://www.ikjzd.com/w/1756
贝贝官网:https://www.ikjzd.com/w/1321
有一种说法是,"一个伟大的程序员相当于10个平庸的程序员"。没有人愿意被贴上了糟糕程序员的标签,但一个可悲的事实是,很多开发人员没有意识到他们自己就属于这一群体。没有人愿意问自己:我是一个糟糕的开发人员吗?糟糕的开发人员如果你还是编程新手,并且担心自己编写的是糟糕的代码,那么可能你还不是高手。不过,你也不用因此灰心丧气,因为只要你不是无可救药的,那就都还有改进的余地。首先让我们先来了解关于糟糕的开
r标:https://www.ikjzd.com/w/1070
曝!亚马逊开始暂停供应商的账户,One Vendor真的要来了?:https://www.ikjzd.com/articles/18104
亚马逊排名上不去?巧用Facebook广告推广亚马逊产品!:https://www.ikjzd.com/articles/18105
一个集装箱里竟然涉嫌4个品牌侵权!那什么是仿牌?:https://www.ikjzd.com/articles/18106
Wish海外仓的打造流程和运营:https://www.ikjzd.com/articles/18108
好湿好紧好浪好大好爽 老师在教室猛烈要了我:http://lady.shaoqun.com/a/247591.html
口述:尴尬 丈母娘洗完澡从不穿内衣:http://lady.shaoqun.com/m/a/17380.html
口述:郊游那夜色妻和老外挤帐篷妻子老外郊游:http://www.30bags.com/m/a/249533.html
肮脏的小段落(一):http://lady.shaoqun.com/a/389498.html
一个据说是历史上最黄的笑话,但是它让人想哭:http://lady.shaoqun.com/a/389499.html
富阳青龙峡漂流需要带什么?注意事项?:http://www.30bags.com/a/459334.html
2021年富阳青龙峡漂流开放了吗?开放时间:http://www.30bags.com/a/459335.html
No comments:
Post a Comment