| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx

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

1
程序员 C/C++ Go 5954 次浏览
 英文原文:What makes a great software engineer?

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

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

  只做正确的事

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

  甘愿受苦

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

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

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

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

  学无止境

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

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

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

  分享知识

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

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

  伟大的程序员希望他人也能知道自己所掌握的知识。他们并不担心会因此而失去优势,因为他们相信大家都会这样做。 伟大的程序员乐意看到他们的同伴成长、成功。 一个公司,它应该被一群喜欢知识共享的人组成,就像人们在运动场上,让团队的每个对员都强大起来,整个团队才会强大。

  伸出援助之手

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

  十年磨一剑

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

  更新 (5 Sep 2009): 针对“甘愿受苦”段内容增加一个声明。好像很多人都误解了我的观点。

  声明: 本文里的所有观点和立场都是来自 Nicholas C. Zakas 本人 ,跟 Yahoo!, Wrox 出版公司, O’Reilly 出版公司, 或其他人没有任何关系。我只代表我自己,不代表他们。

作者: Nicholas C. Zakas  来源: 外刊IT评论

5个答案

0


To become a great programmer you need more than an understanding of object-oriented ideas, a love of arithmetic, a better understanding of logic, and a thorough understanding of programming languages. Technical abilities are vital, but in order to advance in your profession, you must also build skills and experience that will set you different from others in your field. Another thing, please visit PlayPC - PC Magazine Website to download the game Talking Ben PC.
 

 

 

0

Yes, Practice makes us better.

Anyror Gujarat Website

0

程序员不是天生的,经验和实践造就了他们。

程序员可以创造一些东西,如网站、移动应用程序、在线控制面板或数字产品。一些程序员的工作是开发软件,帮助人们更有效地完成他们的工作。其他人可能在计算机系统的服务器方面工作,以保持其顺利和安全地运行。

无论你想成为哪种类型的程序员,都必须从计算机编程的基础知识开始。

SpeedyPaper 折扣 帮助你节省论文写作服务,专注于编程任务。

0
不错
0
不错。