坎德人的小包包

欧剃,游荡的坎德人,在他的旅途中收集了许许多多有趣的东西。

发表日期:2018-12-26  精选文章

就算是Top程序员,也有可能沾染的10个坏毛病

—— 基本上,绝大部分的程序员在职业生涯中,多多少少都会染上些坏毛病,有些坏习惯甚至是在学习的过程中就养成的。今天优达菌给大家带来详细八一八我们身边最常见的一些...

作者:Brad Traversy


基本上,绝大部分的程序员在职业生涯中,多多少少都会染上些坏毛病,有些坏习惯甚至是在学习的过程中就养成的。今天优达菌给大家带来详细八一八我们身边最常见的一些坏习惯(其中有几个连优达菌自己也还没完全戒掉呢),希望大家互相勉励,也给刚入行的新朋友们提个醒,少走一些弯路。

那么,让我们开始吧!

#1 不注意适当休息

这第一点,我想很多人都会有的吧?对,就是在电脑前一坐就是一天,不到吃饭不站起来那种。我自己也经常控制不住自己,有那么一段时间,我从早上6点开始,一口气能坐到下午六七点下班,中间甚至连午饭也就在工位上随口扒一点,甚至喝一瓶饲料就过去了——这还不是一两天,甚至每天都这样。

没错,有的时候一些项目就是特别赶,正常时间不够用,大伙儿都不得不没日没夜加班,连喝水的时间都不够——但我说的不是那样的状况,我指的是你的日常工作习惯。

在日常工作中,我强烈建议你每天都试着多给自己几次“中场休息”时间。当然,这不是说还能像在中小学里那样准时下课活动什么的,毕竟社畜的生活各有各的不同,忙起来都没个准的。

我是希望,总体上,你得时不时给自己提个醒,每隔个把小时就站起来,活动活动腿脚,放松一下颈椎和肩膀,或者喝点咖啡,吃点零食什么的,顺便给自己的大脑一个喘息的时间。

对我自己来说,有的时候我的思路会卡在某个地方,费了几个小时都没法解决某个问题。这时,我会试着给自己喊暂停,站起来,动一动,让脑子放松一会,等我再次继续的时候,某个原来我没有想到的解决方案往往就会从某个特殊的角度冒了出来。

即使你觉得自己并不需要休息,你也可以试着给自己一个机会,说不定你会发现,在短暂放松之后,工作效率会提高不少呢。

#2 不愿意向别人寻求帮助

不管是在学习还是工作中,这第二点都很致命。是啊,我们常常不愿意向别人寻求帮助,原因有很多,但最大的原因往往就是脆弱的自尊心,也就是害怕显示出自己不知道自己在干什么。我们中的许多人,常常会不自觉地患上冒充者综合征(Impostor syndrome),也就是忍不住觉得自己并不胜任现在的工作。不管是在工位上写代码,还是和客户打交道,甚至在做课程的时候,我都经常会有这样的感觉——而向别人求助无疑会再加重这种“不胜任”的感觉。

但事实上,这完全是在浪费时间,而且会阻碍你自身的成长。其他同事/程序员和那些视频教程/书籍一样,是很好的知识来源。不,要我说,他们比教程更好,他们能直接回答你的疑问,指出你没有注意到的问题,帮助你真正理解它们。如果有人因为提问题这件事就对你评头论足,那说明这人本身人品就有问题,你只要避开他们就好了——记住,这并不是你的错。

当然,如果你不想问别人的理由是你希望自己找到解决方法,并从中获取经验教训,那当然也很好。但请务必给自己一个时间上限,当你发现自己在同一个问题上已经花费了过多时间的时候,你就应该考虑问问你身边的同事、老师或是同学,而不是日复一日地卡在原地。

#3 不肯保持学习状态

嗯,看到这条,有些人可能会想“可我已经在高级程序员岗位上干了20年了啊”,嗨,我才不管这些,你得不断地学习新知识,掌握新技能。要知道,编程这个行当比其他职业更需要不断学习,因为这份工作从诞生开始就一直不断地在进步和变革之中。没有哪个程序员会觉得自己已经通晓一切了。甚至当某个大佬真的什么都学会了的时候,一些更新的技术、更新的理念又已不断涌现,而 ta 将继续通过学习和实践,让自己保持在最前沿。如果你已经自满,觉得不用再学什么新东西了,你就注定会被淘汰。

退一万步说,就算你的工作不需要你掌握新的只是,比如说吧,你每天只要用同一种语言、同一个版本、同一个框架,来写同一类项目、同一种功能,所有东西都和以前一样,没有任何新变化,OK,不学习看上去似乎没有任何问题。但是,万一有一天你没法再做这份工作了(不要以为这永远不会发生,远的想想 Flash AcionScript,近的望望隔壁的 Object-C 吧),那你会发现自己已经远远跟不上时代了。所以,就算你的工作并不需要,我还是强烈推荐你利用业余时间学习新知识,了解新的语言、新的技术、新的框架甚至新的代码库,不要荒废了自己。

别以为我上面举的这个例子太极端,要知道,许多开发团队的领导都信奉“如果这没坏,你就别去修它”的理念。所以我们经常会看到许多团队还在使用过时而缺乏维护的技术,只因为这玩意“能用”。

如果你利用业余时间学习了新东西,你或许有机会说服你的团队,其实有更好的办法,能让项目速度更快、效率更高也更简单。你或许能影响他们,让他们也更新自己的技术,最终提升整个公司的效益。

#4 写出肮脏的代码

这一条更偏向于技术方面,也就是代码风格的习惯问题。代码风格涵盖了许多方面,但总的来说,好的代码风格能让你的代码干净、高效又安全。

对于自学入门的程序员来说,这往往是非常艰难的部分,因为你刚花了很大力气,啃下那些新手入门教程或是视频课程,来学习这门语言,而这些入门材料为了让新手更容易理解那些核心概念,往往并不会考虑代码的效率和安全性,甚至还包含了许多冗余的同义反复。所以,通过入门读物来规范代码风格是不现实的,你需要付出额外的努力,通过搜索和学习,找到最好的办法来整理你的代码。

我个人的建议有三点:

一是永远不要简单重复自己的代码。如果你发现自己总是用到类似的一段代码块,尝试建立一个类,或是一个函数,把这块功能固定下来,在需要的时候调用,而不是到处复制黏贴。这会让你的代码可读性更好,节省许多不必要的代码行,也让其他人更容易继续你的工作。

二是始终要注意代码效率。在必要的时候,你该压缩图片,精简JS库,清理CSS样式。你可以使用例如 gulp 之类的前端工作流管理工具,帮你自动构建项目,优化资源;如果你的项目很小,你甚至可以用 minifier.org 之类的工具手动压缩你的代码。同时,你还应该注意,减少不必要的 API 调用,合理安排你的 app,在保证功能完善的情况下,尽量精简向后端发送的请求数量。

第三是测试。这也是我的坏习惯经常发作的一个地方。我对自己的代码没有充分进行测试。没错,我确实知道单元测试的重要性,知道它能帮助我构造更稳定的 app,减少潜在问题出现的几率,但我还是从心里讨厌它。这是我最糟糕的一个坏习惯,也是我提高自己编程水平的过程中遇到的最大阻碍。有的时候,我们总会忍不住抄捷径,用些魔改的办法来节省时间,但在现实中,这往往会让程序表现不稳定,效率变差,代码可读性降低,在未来给你带来比正常情况多得多的麻烦。

所以,请务必清理好自己的代码。

#5 不能协调好工作和生活的平衡

这个习惯也许不仅仅影响你的程序员职业,甚至会影响到你的整个人生,特别是如果你已经组建了自己的家庭的情况下。成为一个程序员,不管是哪一种类型的,你都会发现工作会占用你相当多的时间。原因有很多,比如情况一直在变化,比如你会碰到一些不得不马上处理的问题,比如你需要学习和研究更新的技术……等等等等。因此,在很多时候,你不得不工作到很晚,早早地起来,周末还得加班……

这将占用你生命中的大部分时间,包括你陪伴家人,或是做其他业余爱好的时间。你可能喜欢运动,喜欢散步,喜欢去外面吃点东西,诸如此类;但如果你一直埋头在工作中,你就无法抽身去做那些能让自己快乐的事情。

这一点上,我可是深有体会。我有一个爱我的妻子,和两个孩子。有一个孩子患有自闭症,而我没有足够的时间来陪伴他们,即使我愿意。而且祸不单行的是,我除了要做许多编程方面的工作,还得定时给编辑供稿,不断地从自己脑子里榨出些新点子,记录下来,修改润色,应付催稿等等等等。

如果你有做过自由职业的经历,你就会知道,给自己打工其实并没有想象中那么好,能不能吃上饭就全都指望你自己能不能把事情搞定。只有把这玩意写出来,你才能拿到钱。和自由职业带来的自由和回报相比,未来不确定性带来的焦虑感,落后于时代的恐惧感,可是一点都不会少。于是,在这样的压力之下,许多不那么紧要的事情,就从你的生活中被挤了出去。

当然,我也不是说那些在公司里工作的人就不会经历这样的压力,但“给老板打工”和“所有事情只有自己扛”可是完全不同的压力水平呢。有的时候,我也真的挺羡慕那些有固定工作的人。

但这并不意味着你要让工作控制你的全部生活。你应该尽可能为家人、朋友,以及你自己留下足够的时间,要知道,生活并不只眼前的代码,还有诗和远方。珍惜你所爱的事物,好好把握吧!

#6 糟糕的办公室政治

接下来这一条要给那些在公司里工作的人。

人和人之间的协作,总是伴随着各种各样的冲突、争论以及难以统一的意见。许多程序员大牛总是很傲慢,总是觉得自己是对的;就算他们犯了什么错,他们往往也不会承认。我不是说所有人的程序员都这样,但我想,每个人身边多少起码都会有一个这样的人吧。

当然,也有很多人说,他们的团队很棒,相互之间关系都很好——没错,这样当然是最好的,但对大部分的企业来说,这种状态并不寻常。在大多数时候,你们都将面对各种意见相互碰撞擦出的火花。

试着保持礼貌和尊重,但同时也别轻易就被说服——特别是你对自己的观点很有信心的时候。

不要乱喊乱叫,更不要骂人什么的,这只能起到反效果。

如果他们这样对你,那你只需要转身走开,大人有大量嘛。不过,如果很不幸你的团队里有那么一个彻头彻尾的混蛋,根本没法讲道理的那种,那你除了避开他们,似乎也没什么好做的了。

有些时候,你可能不得不把一些情况报告给你们的上级,但我还是建议你在这之前,私下里和那个人先谈一谈。

#7 不从错误中吸取教训

作为一名程序员,你注定会犯下各种各样的错误,这是每个程序员注定的命运,没有什么不好意思的,大家都这么过来的。但问题在于,如果你不从错误中吸取教训,而反复犯下同样的错误,那你可就糟糕了。

我个人的建议是,如果你犯了个错误,不要紧张,不要逃避,你首先得:①努力找出导致这个错误的根本原因,②寻找如何避免再出现此类错误的方法或机制,③确定一下,如果这个问题比实际更早被发现,你是否可以阻止后果的产生?

就算某次你真的捅出了大娄子,通过认真思考这三个问题,你还是有机会修复问题,避免问题再次出现,或者,起码你下次能更早发现此类问题。

最后,别对自己太严苛,即使是最优秀的程序员,偶尔也会犯错的。

#8 太早就放弃努力

正如犯错一样,挫折也是编程的一部分。我曾经做过几个关于应对挫折,关于如何处理在学习和工作中遇到的障碍的视频。我见过很多人因为挫折,就早早地放弃了自己的项目,甚至从此告别了编程。

没错,有些程序确实非常难,看起来似乎你修好了这里,那边又故障了,一重重的问题叠在一起,似乎永无止境。然后你可能会对自己产生怀疑,觉得自己没有能力解决这个问题,觉得自己应该去做点别的事情,甚至觉得自己在浪费时间和金钱,产生各种负面的情绪,等等。但如果你就这样放弃了,扔掉了这个项目,辞掉了这份工作,告别了编程,那么,你在之前付出的这么多努力就全部付诸东流了。

我不是说你得认死理钻牛角尖,一个项目一辈子抱着不放,但我见过太多太多次,从旁观者的角度来看,很多人其实只需要再坚持一下下就能解决问题,然而他们还是早早地就放弃了,就此和成功擦肩而过。

所以,在你决定放弃之前,请务必确认你已经穷尽了所有可能的方法。你经过了详细的搜索,咨询过别人,尝试推倒重来,用过其他技术,休息一下重整思路,甚至可能的话把它放在一边,冷静一下。在按下“放弃”按钮之前,你需要绝对确定自己已经试过所有的可能性。

如果这样还无法达到目标,那或许确实应该抛弃这个问题,继续前进。但这只是无路可走时的最后一步,毕竟,如果成功就在转角那边,你在这时候放弃就太可惜了。

#9 觉得自己无所不知

还记得上面我提到某些程序员特别傲慢吗?我觉得让他们如此傲慢的主要原因之一,就是他们觉得自己无所不知。

确实大牛们一般都很厉害,但这些傲慢的程序员并不一定都是大牛,他们只不过觉得自己什么都懂了,牛逼到原地起飞了,所以根本不会听哪怕一句其他同事的意见。这样的家伙不但给周边的人带来许多负面影响,而且也无形中伤害了自己。因为既然你觉得自己无所不知,你就不会主动去学习新技术,提升自己的姿势水平。我保证,这样的人终究有一天会因为这个原因搞砸某件事情,而被狠狠地从自大的梦境中敲醒。

另一方面,这类人的“友善度”水平也相当堪忧。他们会对 StackOverflow 上的新人冷嘲热讽,挖苦别人的答案,一有机会就给别人点颜色。

我非常讨厌这种家伙。

有的时候,我忍不住会想,这些人是不是很多都在学校里被霸凌过,所以现在利用他们取得的一点点知识来欺负其他需要帮助或缺少经验的新人。他们似乎已经忘记了被霸凌的痛苦,或是用欺负别人来抚慰自己曾经受伤的小心灵?好吧,个人观点,比较片面。

然而,不管这类人为什么要这样做,我觉得如果他们能够更开放,更友好地面对其他人提出的想法,尊重别人,他们自己其实可以过上更快乐的生活,而不是每天只有我对你错。他们本来可以成为团队里经验最丰富,知识最渊博的主力干将,然而现在成为了整个团队避之不及的负能量黑洞——因为没人愿意跟他们合作,没人能和他们好好沟通。

一个团队想要成功,良好的沟通,紧密的团结必不可少,而“无所不知”的家伙们将会同时摧毁这两点。所以,如果你发现自己也变得无所不知,请试着放下自己牛逼哄哄的气场,以更开放、更尊重人的态度面对其他同事,这会让你的工作和生活都变得更好。

#10 听不进别人建设性的批评

“良药苦口,忠言逆耳”,吸取别人的批评和建议从来就不是一件容易的事。

要注意的是,善意的意见和建设性的批评,和上一条说的那种嘲笑挖苦别人可是完全不同的两种行为。有的时候,我们也很难区分这二者,因为有人直接指出你的错误,告诉你其实你在某个地方做的还不够好,听起来总是让人不舒服,感觉像自己受到了攻击——然而实际并不是这样的,这往往只是别人在告诉你一个更好的办法,或只不过是在分享 ta 的意见。

在我刚拿起笔写稿的时候,我有段时间也难以区分谁在嘲笑我,而谁又在帮我。刚开始,我发现自己对一切外来的评价都抱有强烈的敌意,但不久之后,我就意识到,许多人其实是怀着好意在帮助我。如果他们并不是在藐视我,不是在故意挑刺,并不是凭着个人喜好在对我评头论足的话,那我就应该认真对待这些评价,把它们视为能提升我个人能力和知识的有益信息。

建设性的批评其实是学习过程中的珍贵资源,因为它非常具有针对性。建设性的批评会直接指出问题所在,甚至提供具体的解决思路,这简直是无价之宝。

事实上,业界通行的代码审查制度正是为此而生的。代码审查的好处在于,你能直接从其他人那边获得针对代码的意见和建议,让你获得优化代码,提升自己所必须的许多细节信息。所以,你必须以就事论事的态度来吸取这些经验教训,除非你遇到的是故意的攻击、恶意的嘲讽和侮辱。

因此,克服困难,直面自己的错误,听取别人的意见,积极吸收、分析,将会从根本上帮助你提升自我,成为一名更好的开发者。


那么,今天分享的这些经验也算告一段落啦,不论是老鸟还是新兵,希望这些建议能对你们有用。

最后,欢迎大家踊跃留言,说说自己在编程上都有哪些坏毛病,互相勉(tu)励(cao)一下吧!

(本文已投稿给「优达学城」并发表。 原作: Brad Traversy 译者:欧剃 转载请保留此信息)

编译来源: https://medium.com/@traversymedia/10-bad-habits-to-avoid-as-a-developer-64a1677c60fe

标签:UdacityTranslate

Powered by Jekyll on Github.io
2022 © 欧剃