自己保存起来FROM :http://news.cnblogs.com/n/64712/

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

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

  只做正确的事

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

  甘愿受苦

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

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

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

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

  学无止境

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

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

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

  分享知识

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

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

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

  伸出援助之手

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

  十年磨一剑

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

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

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

  英文原文:What makes a great software engineer?

转载于:https://www.cnblogs.com/sanjia/archive/2010/05/22/1741685.html

伟大的程序员是怎样炼成的?相关推荐

  1. 优秀程序员是怎样炼成的?

    随着软件技术不断发展,从事软件行业的人员日渐增多.你发现身边多了这么一群人,他们有的西装革履,有的穿着随意,有的不苟言笑,有的风趣幽默,有的博学多才,有的质朴木讷,唯一的共同点是,他们的名片上都印着& ...

  2. 蓝筹程序员是如何炼成的?

    "蓝筹"一词恐怕很多人还不知道它的含义,我先来和大家普及一下知识,它最重要的概念指的是"长远来看越来越值钱"的意思.作为一名程序员,我想你们都想通过实际行动让自 ...

  3. 程序员是这样炼成的(2)-选择成熟的柿子还是生柿子

    今天做项目加班到了10点,下班后在office里面编码的效率要比平日高很 多. 昨天我们说了要把职业当做生意和投资, 今天就跟大家分享投资的方向性问题,前几天我们组一个新来的同事问我:"你觉 ...

  4. 盲人程序员是怎样炼成的

    摘要: 一个星期前,本网站根据劳工部残疾人就业政策办公室(Office of Disability Employment Policy)的报道,编发了一篇文章"通讯手段为所有人提供机会&qu ...

  5. 好程序员分享大势所趋 HTML5成Web开发者最关心的技术

    为什么80%的码农都做不了架构师?>>>    好程序员分享大势所趋 HTML5成Web开发者最关心的技术,最近,在Stack Exchange上出现了一个比较热门的问题:Web开发 ...

  6. 程序猿里面的“一阳指”,一个合格的程序猿是怎样炼成的?

    thinkpad笔记本~ 一个合格的程序猿是怎样炼成的? 当我学会第一个"Hello, World"的时候,我想我一定是喜欢电脑的. 当我第一次听到老师敲键盘的声音,我感觉不可思议 ...

  7. 零架构项目经验的程序员,如何升级成架构师

    先说目前关于架构师的一些是实际情况. 1 要成为Java架构师,单纯靠学知识一定不行,得靠在项目里积累经验. 2 如何判断程序员是否已经成为java架构师?不是看程序员掌握的技能,更不是看程序员干的活 ...

  8. 360年会三娘逆袭 女程序员戴假发化妆成-搜狐滚动

    临近年关,各大公司忙年会,正可谓"你方唱罢我登台".自从去年的"度娘"刘冬一炮走红之后,一年一度的年会上那些们便成为关注的焦点.近日,360年会上"三 ...

  9. 程序员,怎么就成了一碗青春饭?

    青春饭,这个现象在许多行业都存在,但在程序员身上显得尤为突出,大龄程序员普遍会遭遇晋升天花板,薪酬待遇上涨乏力,在就业市场散失竞争力.在经济周期.贸易战等因素的影响下,经济增长放缓,行业泡沫破裂,资本 ...

最新文章

  1. windows 下实现函数打桩:拦截API方式
  2. canvas制作随机验证码
  3. Zuul:路由转发,排除和自定义
  4. java类体_计算机二级考试Java类之类声明以及类体
  5. 如何设置mysql表中文乱码_php mysql表中文乱码问题如何解决
  6. linux系统中安装python_2. Linux 下安装python
  7. 2.6 子窗口赋值给父窗口并关闭子窗口 我的程序猿之路:第十六章
  8. 漫步微积分二十三——重力作用下的运动 逃逸速度和黑洞
  9. AWS服务器上安全组端口设置和访问的问题
  10. 【java笔记】继承
  11. Linux硬链接与软链接的区别
  12. oracle 流标和sql效率,Oracle 中流标使用实例
  13. 添加 identity impersonate=true userName=username password=password/,解决问题!
  14. rlm sql mysql.so_安装freeradius
  15. arm nodejs_nodejs是如何和libuv以及v8一起合作的?(文末有彩蛋哦)
  16. GoLang语言:邮件群发器
  17. 基于Springboot和Idea的医院管理系统(挂号、缴费、取药、住院) 毕业论文+项目源码及数据库文件+包远程安装配置+代码讲解
  18. 2.1 被隐藏了的过程
  19. 天气预报技术这些年有没有发展?什么时候才能准一点?
  20. HDFS——JN扩容的正确姿势

热门文章

  1. 2015-FCN论文解读
  2. java设置日历_java – 设置日历实例的时间
  3. freemarker java静态方法_java Freemarker页面静态化实例详解
  4. MR Mapper类
  5. 架构师成长之旅_第一篇:插件与框架是什么?
  6. StorAge存储库
  7. 阿里云物联网平台体验(NetGadgeteer+C#篇)
  8. Java_String_01_由转义字符串得到其原本字符串
  9. struts一个action处理多个方法
  10. react native 之setState