日期:2019-09-17 10:04作者:北大青鸟西安华清校区
有些程序员比其他程序员更优秀。事实上,程序员群体也符合一个普遍的统计分布规律:只有少数人真的是聪明绝顶,有一些人很优秀,而大多数人至少算是能力尚可,有一些人几乎没啥能耐,还有一些人真的糟糕透顶。
这也就是说,一个优秀的 程序员 和一个糟糕的程序员,它们之间的差别并不一定是编码技能。事实上,这个差异存在于一些更基本的东西中,即个人的坏习惯。众所周知,人们在生活和工作中的确很难改掉坏习惯。
也就是说,我们开发人员常常会养成一些坏习惯,同时又时时被那些麻烦的代码所打击,这些因素加在一起,最终阻碍了我们发挥自己的全部潜能。虽然有些习惯可以帮助我们加快工作速度,但也有些习惯(比如我在打字的时候往自己脸上涂薄荷油……)只会给我们的工作和个人生活带来麻烦。
通常,我们并未察觉自己有这些坏习惯,我们需要的是有其他人来为我们指明这些问题。就像生活一样,编程也没有固定不变的严格规则。有时候,人们即兴发挥反而能意外获得成功。所以,让我们来谈谈程序员应该尽快改掉的一些编程坏习惯。
一、我的代码是最好的
尼采有一句名言:“每当我向上攀爬的时候,总有一只叫‘自负’的狗紧随身后。”
所有团队都欢迎的那种人,它的特征是:谦逊有礼、求知若渴、聪明睿智。谦逊有礼就是放下自负,更多地去关注队友而不是自己。求知若渴意味着他们有强烈的职业道德意识,有决心一定把事情做好,并尽自己所能做出一份贡献。聪明睿智,无关智商的高低,而是内在人格的聪慧。
不要随意去批评别人的 代码,因为说不准什么时候就轮到你的代码放在聚光灯下被大家审视。请试着做出客观专业的观察,但不要轻易做出评判。请务必谦虚,试着向周围的人学习。
永远记住,你的自负会成为你工作的障碍。如果你开始盲目地相信自己的伟大,那就意味着你的创造力开始消失。当你开始认为自己无所不知,没有什么可学的时候,你的学习自然就停止了。
二、我立刻就能修好
Angela Duckworth(美国心理学家)曾经说过:“通往真正的卓越并没有捷径。”
奉劝你还是为自己着想吧,充分利用生活中的每一秒时间。如果你把所有的时间都花在用牙刷去擦洗无关紧要的边边角角上,那只能说你没有抓住生活的重点。欲速则不达,走捷径往往并不意味着能更快地得到最终结果。
走捷径确实很诱人,可能每个人都这么做过。实际上有些情况是必要的,但总得来说,走捷径是危险的,真的非常危险,所以应该尽可能避免。一条走错的捷径可能会为你节省几个小时,但可能会带来长达数月的麻烦和额外的名誉损失。
请认真对待我的建议。我明白了走捷径和不劳而获并不是真正的不用付出任何代价。
三、我记性很好,不需要文档
Dick Brandon 有句见解正好给这个观点当头一棒:“文档就像性,当它质量好的时候,它真的是妙不可言,当它质量差的时候,也聊胜于无。”
文档就像是编程的蓖麻油。管理人员们认为它对程序员不无裨益,但程序员们却总是对它心生厌恶!
话虽如此,那些优秀的开发人员往往将文档视作日常工作不可分割的一部分。
因为优秀的程序员会意识到,与任何其他业务功能一样,软件开发团队总是处于变化中。比如,程序员可能会换工作,从一个部门转到另一个部门,甚至退休。在最坏的情况下,疾病、受伤或死亡都可能会在你最意想不到的时刻让成员突然离队。
此外,代码也会逐渐“衰老”的。如果开发人员一年或更长时间没有接触一段代码的话,他们也很容易就忘记自己的代码当初是如何工作的。
在任何这些场景中,访问设计文档、API 规范、说明手册和代码注释都可能成为项目的制胜关键,决定着最终是成功交付产品还是错失最终期限。
这种态度也使得这些优秀程序员成为团队的宝贵资产。一个程序员不会因为故意不记录任何东西而变得“不可替代”,相反地,这样的程序员最终会成为团队“不可弥补”的负担。
四、这不是我干的!
李小龙有句话说得很对:“只要有勇气承认错误,错误总是可以被原谅的。”
也许上面这句话并不是放之四海而皆准,但这确实是一个真正伟大的开发人员最重要的特征之一。
我们总是找得到借口……这就好像我们说在正常情况下我们永远不会犯错,老实说,这很难让人真正信服。
糟糕的开发人员常常会责怪客户没有“正确地”使用产品。一个糟糕的程序员无法做到对整个产品和 bug 全身心投入和承担应有的责任。相反地,当其他人出了一个 bug 时,他们会确保每个人都清楚地知道这个 bug 该由谁负责。
而将责任归咎于别人到底能获得什么呢?其实根本什么都得不到。
如果有一个健康的态度,我们可能会这样说:“是的,对不起,现在我们需要做这件事来解决这个问题,这是我的错”。这样的处理方式将帮助你打造一个良好的声誉,也会让你的同事对你高看一眼。你越早承认错误,你就有越多的时间去学习和改正错误。事情真的就是这么简单!
五、你的“完成”其实并未真正完成
Rick Lemons(美国 IT 人士)有句话说得好:“不要让用户提供系统已经知道的信息。”
如果把编程比作性,那么一定会有很多并不满意的电脑。你可以不做,或做了一半就睡着了。好吧,我发现你正在纠结的一个概念是怎么才算“完成”。
记住,“完成”的意思是,根据用户的需求完成了测试和所有相关审查。并不是你觉得“完成“了就真的完成了。
一个优秀的开发人员 总是渴望学习新东西。他们努力地去理解系统架构的所有部分是如何协同工作,以及它们处于何种状态。他们会去质疑特性背后的设计和思想,以找到更好的解决方案。他们明白什么是好的用户体验。
而另一方面,一个糟糕的开发人员会依附于他们喜欢的技术。他们认为单一的方法或流程才是“理想的”,用户体验和实际情况永远不应该去驱动决策。他们将不必要的依赖关系引入到项目中,以满足他们自己的偏好。
这样糟糕的开发者,其行为就像一头闯进瓷器店的公牛。最终只是浪费时间、消耗精力和损失声誉罢了。
最后的想法
那么,能概括以上所有坏习惯的一个词是什么呢?这个简单的答案是:态度。
拥有良好的态度比拥有多年的经验更重要。仅仅工作是不够的,你必须有端正的工作态度,而不是拥有正确的技能,端正的态度远比技能更为重要。
在工作中,端正积极的态度和乐观的想法将会反映在你所做的事情中,并使你成为一名更有效率的员工。这决定你会怎样去完成你的项目,以及影响其他人对你的看法。良好的工作态度是有感染力的,会带动整个工作场所的气氛。
正如 Zig Ziglar(美国作家、演讲家)所总结的那样:“决定你高度的不是你的天资,而是你的态度。”