伟大的程序员是怎样炼成的?




近几周,一份反映 Netflix 公司企业文化的报告在网上广为流传。 这份报告里列举了不少Netflix公司里使人称赞的作法,包括这个公司是如何的招聘和辞退员工的。 里面有大量的信息是描述Netflix公司是怎样对待员工的,这使Netflix公司变成了一个颇有吸引力的工做场所。报告里面提到过有一个关于员工所期 望的内容的清单,但没有把清单列出来。 报告的开始部分就谈及了企业价值问题,并且是按照员工的立场角度写的,惋惜并无把这个问题展开。程序员

我并不在Netflix工做——你也知道 (我在 Yahoo!工 做)—— 但我深切的感受到,无论你在哪里工做,成为一个优秀的员工、优秀的软件开发工程师的过程是同样的。 下面所列举的都是伟大的程序员所具备的经验和品质。面试

只作正确的事

对于软件这一行的人,咱们有个很大的挑战,就是如何可以用正确方法的作事情。什么是正确的方法,这依赖于你在作什么和作给谁。而究竟所谓 “正确的方法”里都包括了什么内容,这并非重点,重点是你是否能坚持按照这种方式作事。初级程序员在这个问题是一般不能作到坚持,而资历较深的程序员却 能始终坚持原则。 也许会有一个“很是紧急”的项目,或者这个项目很特殊,不能按常规过程开发。这只是个假象。 好的程序员知道即便在任何状况和环境下都要坚持作正确的事情。 若是说按正确的方式开发将致使不能按时完成任务,那么,他们就会知道,这个项目是不能按时完工的。 不要妥协,工程质量是你做为一个优秀程序员的惟一终极证实。 确保你全部的代码都是在正确的方法下100%正确的写出的。要按一个优秀的程序员的标准来要求本身。编程

甘愿受苦

听起来很傻,但倒是真的,优秀的程序员都乐于承担工做上给他们带来的痛苦。 你说出一个伟大的程序员,我都能告诉你,在他或她的职业生涯里,各个阶段,都曾有花好几天时间去解决一个问题的经历。 优秀的程序员品味着困难给他们带来的挑战,这让他们日以继夜,他们明白,问题必需要解决掉。ide

不太优秀的程序员就不同了,他们在刚刚碰到有麻烦的迹象时就先想到要寻求帮助。 在问题面前,他们习惯于去寻求帮助,而不是本身去努力解决这个问题。 他们最喜欢的一句话是:“帮我看看这个问题”。 伟大的程序员的第一反应是我要本身解决这个问题。解决问题是种技能,是优秀的程序员很是看重的一种技能。学习

好的程序员是经过痛苦的磨练才成为伟大的程序员的。 痛苦的磨练是说当你对这个问题实在无能为力时才去请求外援。 求助就意味着认输, 全部尽可能减小这种处境的发生。 甘愿受苦。和问题作不懈的斗争。这就是你要学会的。spa

注意: 我并非说你不能寻求他人的帮助。我说的是,你首先要尝试本身去完成任务,若是你不能完成,再寻求帮助。 不要在本身没有努力过前就轻易的求助。你常常会发现,当你知道了解决方法后,你才认识到,你用本身的力量本也能解决这个问题的。.net

学无止境

若是有人敢声称他不须要再学任何新的知识,我是绝对不肯意和他共事的。 在有些行业,你也许不少年不学新的东西也能干的很好,但软件技术革新的如此之快,你不能不时刻关注。 你的老板是因为你有某些技能才花钱雇你的,若是你的技能已经落伍、过时了,那你也就没有价值了。 想成为一名伟大的程序员,你首先要认可你不是无所不知,你必须天天都要努力的寻找、学习新的知识。图片

在你如今的公司里或组织里寻找能让你学习、让你钦佩的人。在复杂的问题上征求他们的意见,看看他们是怎么思考的。 向他们介绍你的解决思路,请他们给予批评指点。 若是在你的周围你不能找出一个能做为你的导师的人,这要么是你尚未认真的寻找,要么是你留在了一个不应留的公司里。 若是你在如今的工做上不能学习进步,那是到了你该换个工做的时候了。开发

要阅读网上的博客。关注一些研讨会。与其余程序员交流。伟大的程序员从不中止学习。get

分享知识

有一些程序员认为,他们的惟一价值所在就是他们所拥有的知识,因而,分享出他们的知识就会让他们的价值下降。 这是大错特错了。让你有价值的不是你的知识,而是如何运用你的知识给公司创造价值。 难道还会有比分享知识给他人更能给公司创造价值的方法吗?

我曾经面试过一家公司,知识不共享、相互保密、相互提防的理念在这家公司里根深蒂固。 在这样的环境里,员工之间造成了一种恶性竞争的关系,这直接致使了勾心斗角和诬告中伤的产生。 我可不想在这样的公司里工做。若是每一个人都对本身知道的事情讳莫如深,那你什么都学不到。

伟大的程序员但愿他人也能知道本身所掌握的知识。他们并不担忧会所以而失去优点,由于他们相信你们都会这样作。 伟大的程序员乐意看到他们的同伴成长、成功。 一个公司,它应该被一群喜欢知识共享的人组成,就像人们在运动场上,让团队的每一个对员都强大起来,整个团队才会强大。

伸出援助之手

伟大的程序员历来不会说“这不关个人事”。他们老是愿意伸出援助之手。他们常常在作本身的工做之余,去帮助那些编程新手。 若是有件任务必须按时完成,而又没有其余人能胜任,伟大的程序员会主动承担起这项任务。 他们历来不嘲笑来请求帮助的人,即便问题是那么的小、那么无心义、无价值。 伟大的程序员重视他们的团队,愿意为团队作任何的事情。 不论是要去写1,000行的代码,仍是去编辑一个图片,伟大的程序员都会当即站出来帮助完成。

十年磨一剑

伟大的程序员不是天生的,是后天炼成的。他们是本文上面提到的那些因素造就的,加上还要经过努力的工做。 若是你是刚刚意识到这些,那还不晚,你仍然有充分的时间来成为一个伟大的程序员。耐心是关键。伟大的程序员不是在旦夕之间就能够成就的。有些人可能要花上 数年,有些人则须要十几年。 没有人为你写血泪史。 好的公司当发现你有成为伟大程序员的潜质时,会帮助你,为你提供舞台。而你会经过你的努力工做、让你的团队进步来证实本身。要坚决,要自律,通往伟大程序 员的道路会很长。