82

什么原因成就了一位优秀的程序员?

 5 years ago
source link: http://www.10tiao.com/html/292/201806/2651197235/1.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

(点击上方蓝字,快速关注我们)


编译:伯乐在线/sy


这些年我曾和很多程序员一起工作,他们之中的一些人非常厉害,而另一些人显得平庸。不久前因为和一些技术非常熟练的程序员工作感觉很愉快,我花了一些时间在考虑我佩服他们什么呢?什么原因让优秀的程序员那么优秀,糟糕的程序员那么糟糕?简而言之,什么原因成就了一位优秀的程序员呢?


根据我的经验,成为一个优秀程序员同年龄,教育程度,还有和你赚多少钱没有任何关系。关键在于你的做法,更深入地说,就是你的想法。我注意到我所钦佩的程序员都有一些相似习惯。不是他们所选语言的知识,也不是对数据结构和算法的深入理解,甚至不是多年的工作经验。而是他们的沟通方式,他们管理自己的方式,以及以他们精湛技术水平编程演讲的方式。


当然成为一个优秀的程序员还要具备更多特质,我也不能单单依靠是否存在(或者缺少)这些特质来评判一个程序员。但是我知道当我看见它,当我看见一个程序员具备这些特质的时候,我认为,“这个人真的知道他们正在做什么”。


他们做调查研究


或者叫“三思而后行”,或者叫“谷歌一下”


不论你怎么称呼它,大多数可能会遇到的编程问题已经以某种形式解决,传道书早就记载着世界上本来就没有什么新鲜事。优秀的程序员在解决问题之前知道通过GitHub图书馆、网络博客,或者通过与经验丰富的程序员交流等形式来做调查研究。


我见过甚至是优秀的程序员可以快速找出解决方案,但是和我一起工作过的糟糕的程序员从来不求助于他人,结果做了大量的重复工作或者错误地解决问题,不幸的是,后来他们终将为自己犯下的错误付出了代价。


他们阅读错误信息(并按照它们行事)


这包括解析堆栈路径信息。是的,这是一件非常不幸的事情。但是如果你不愿意这么做的话,怎么才能知道哪里错了呢?我知道的高效程序员是不会害怕深究问题的。低效的程序员看见有错误,但就是不愿意甚至是去读这些错误信息。(这听起来很可笑,但你会惊讶我遇到它的频率)


更进一步地说,优秀的程序员发现问题马上就解决它。读错误信息对他们来说仅仅是个开始,他们渴望深究问题并查出问题的根源。他们不喜欢推卸责任,而是愿意查找解决问题的方案,问题在他们这里止步。


他们去看源代码


文档、测试、团队,这些都会说谎。尽管不是故意的,但是如果你想确切地知道事情是怎么回事,你必须自己亲自看源代码。


如果它不是你最擅长的语言,你也不要害怕。如果你是一个Ruby的程序员,你怀疑在Ruby的C语言库中有个错误,破解打开看看。是的,你可能拿不到源代码,但是谁知道呢?你只是可能而已,你有更好的机会,总比你根本不去尝试好吧。


不幸的是,如果你处在一个封闭源代码的环境中,这会变得非常难,但道理是不变的。糟糕的程序员对于查看源代码没有丝毫的兴趣,结果问题困扰他们时间,要比愿意看源代码的时间长得多。


They just do it


优秀的程序员趋向于主动去做。他们的内心有着难以控制的冲动,当他们确定问题或者发现新的需求时他们立刻会实现解决方案,有时过早有时太过激进。但是他们对问题本能的反应是正面解决问题。


有时这会令人很烦恼,但是他们的热情是他们做好事情的一个重要部分。一些人可能拖延时间回避问题或者等待问题自己能够消失,然而优秀的程序员一开始就解决它。简而言之(或者显而易见),如果你看见有人兴致勃勃地查找问题并在解决,很可能你的手下有位优秀的程序员。


他们避免危机


这通常是糟糕程序员的特点:他们轻易地从一个人为危机跳到另一个人为危机,在没有真正理解一个问题之前就进入到下一个问题。他们会把责任归咎于程序的错误,然后花费大把的时间调试已经运行良好的代码。他们让情感占据主动,相信直觉,而不是仔细严谨的分析。


如果你匆匆忙忙地解决一个问题,甚至视每一个问题为震惊世界的灾难。你很可能犯错误或者没有解决潜在的问题。优秀的程序员花时间去了解发生了什么错误,哪怕灾难来临的时候;但更重要的是,他们对待平常的问题像是要解决的重要问题,因此他们更准确地解决更多的问题,并且这样做没有提高团队的紧张程度。


他们善于沟通交流


说到底,编程是一种形式的沟通交流。写代码和写散文创作一样,能够简洁地表达你的想法很重要。我发现那些可以写简洁邮件,优雅的状态报告,或者甚至只是一个有效的备忘录的程序员也将会是优秀的程序员。


这能应用在写代码还有英语上。用圆括号、括号和单个字母的函数写出一行代码当然是有可能的,但是如果没有人理解它,有什么意义呢。优秀的程序员会花时间以各种渠道交流他们的想法。


他们激情四射


我认为这可能是优秀的程序员最重要的方面(也许这点也适用于除计算机科学领域的其它领域)


如果你真的在乎你所做的事情,如果不把它当成工作,当作一个业余爱好、兴趣或一件很有吸引力的事情,那么在该领域你比其他人更有优势。优秀的程序员一直不断编程。普通程序员一天工作八小时,并且没有业余项目,也没兴趣回馈社区。他们不会不断地尝试新方法,而只是为了看看它们是如何运行而执着于编程语言。


当我看见一个程序员利用周末的时间做自己喜欢的项目时,参与创作他们每天能用到的工具时,执着于新的有意义的事情时:那个时候我确信我眼前的是一个令人惊奇的人。最后,优秀的程序员视他们的职业不仅仅是赚钱的途径,更是让生活变得有些不同的方法。我认为那就是成就最优秀程序员的真正原因。对于他们来说,编写代码是改变世界的一种方法,也是我非常尊敬崇拜他们的原因。



看完本文有收获?请分享给更多人

关注「伯乐在线」,看更多精选 IT 职场文章


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK