`
找不着北
  • 浏览: 316362 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

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

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

只做正确的事

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

甘愿受苦

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

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

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

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

学无止境

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

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

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

分享知识

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

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

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

伸出援助之手

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

十年磨一剑

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

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

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

 

来自 外刊IT评论

 

:)

16
7
分享到:
评论
11 楼 steafler 2010-06-03  
学习了,继续朝着伟大程序员的路前进
10 楼 luzl 2010-06-02  
我觉得说的很好:
   只做正确的事使得我们能够有原则可坚持,我必须让我的代码从我自己的角度来说是正确的,如果发现bug一定要改。
   甘愿吃苦,别人面试我们的时候总是要求工作经验,工作经验,解决问题的能力,这能力,经验就是来自多干活啊。
    分享知识能够让别人看到你的价值,光酒香还不行,还要赚吆喝啊,这类似于大家所提倡的树立自己的品牌,别人一提你就知道你是某一方面的专家。
    伸出援助之手使得你有领导力,什么是领导,领导是能够帮下属解决问题的人,领导不是只会发号命令的人,这应该跟分享知识是在一起在树立自己的品牌。
    学无止境,要求我们每天充实自己,十年磨一剑要求我们耐得住寂寞,难啊,不跳槽不涨工资啊,拿什么买房子,养活老婆孩子啊!
9 楼 黑暗浪子 2010-06-01  
刃之舞 写道
黑暗浪子 写道
我想知道的是,如果老板硬要你做不正确的事情,如果你不做就解雇你,你该怎么办?
甚至最严重的是每个公司的老板都是如此,你又该怎么办?

这是Nicholas C. Zakas写的一篇文章,关于员工和雇主之间的关系对国内不具参考性

哎~~
8 楼 刃之舞 2010-06-01  
黑暗浪子 写道
我想知道的是,如果老板硬要你做不正确的事情,如果你不做就解雇你,你该怎么办?
甚至最严重的是每个公司的老板都是如此,你又该怎么办?

这是Nicholas C. Zakas写的一篇文章,关于员工和雇主之间的关系对国内不具参考性
7 楼 黑暗浪子 2010-06-01  
我想知道的是,如果老板硬要你做不正确的事情,如果你不做就解雇你,你该怎么办?
甚至最严重的是每个公司的老板都是如此,你又该怎么办?
6 楼 superjie86 2010-05-31  
楼主是伟大的程序员吗?
5 楼 xieye 2010-05-31  
javascript高级程序设计

我有这书,好
4 楼 刃之舞 2010-05-31  
Nicholas C. Zakas的js书超赞。
3 楼 fengfeng925 2010-05-31  
Nicholas C. Zakas javascript高级程序设计作者
2 楼 hanamichi10 2010-05-31  
伟大的程序员是怎样炼成的?
1 楼 找不着北 2010-05-31  
伟大的程序员是怎样炼成的?

相关推荐

    程序员高手是怎样炼成的

    程序员高手是怎样炼成的

    伟大的程序员是怎样炼成的.docx

    以下几点是伟大程序员炼成的关键要素: 1. **只做正确的事**:在软件工程领域,选择正确的方法至关重要。这不仅包括遵循最佳实践,也意味着在面对压力和时间紧迫的情况下,依然坚守质量标准。优秀的程序员深知,...

    程序员如何防止颈椎病??

    程序员如何防止颈椎病程序员如何防止颈椎病程序员如何防止颈椎病程序员如何防止颈椎病程序员如何防止颈椎病程序员如何防止颈椎病程序员如何防止颈椎病程序员如何防止颈椎病程序员如何防止颈椎病程序员如何防止颈椎病...

    程序员是这样炼成的.rar

    综上所述,“程序员是这样炼成的”意味着程序员的成长是一个全方位的学习和实践过程,它涉及技术、工程、沟通等多个方面。在这个过程中,不断积累经验、勇于尝试新知,以及持续地自我提升是每一个程序员稳健前行的...

    Java 程序员是怎么炼成的

    Java 程序员是怎么炼成的,程序员必备呀

    【视频答疑】为什么做程序员头发还这么浓密?!

    【视频答疑】为什么做程序员头发还这么浓密?!

    程序员可以用ChatGPT做什么?

    程序员可以用ChatGPT做什么?

    程序员是不是只能吃年轻饭?

    程序员是不是只能吃年轻饭?

    为什么每个程序员都应该学习 C 语言?.pdf

    程序员之所以需要学习C语言,原因如下: 1. 理解计算机底层原理:C语言是一种低级语言,它与计算机硬件非常接近。通过学习C语言,程序员能够更深刻地理解计算机的工作原理,包括内存管理、指针操作、硬件接口等。...

    程序员的项目如何讲解?

    "程序员的项目如何讲解?" 程序员在面试时,如何讲解项目是非常重要的。很多程序员都忽视了这个问题,导致在面试时无法让主考官相信自己的项目经验。下面我们将从四个方面来讲解如何讲解项目。 首先,程序员在讲解...

    好买财富-王晔倞-面对职场变化和转型分岔路,程序员该如何设定目标?.pdf

    好买财富-王晔倞-面对职场变化和转型分岔路,程序员该如何设定目标?

    软件开发工程师(程序员)的就业前景如何?.pdf

    软件开发工程师(程序员)的就业前景如何? 软件开发工程师(程序员)的就业前景如何?这个问题是许多IT从业人员和学生关心的问题。随着软件业的快速发展,软件开发专业人才的人数逐年增长。但是,目前行业中紧缺的...

    ChatGPT火遍全球, 为啥程序员还要继续学习C#?

    然而,尽管人工智能领域的创新如ChatGPT等持续涌现,程序员们仍然需要关注和学习传统的编程语言,如C#。这究竟是为什么呢? 首先,C#作为微软公司主导开发的一种面向对象的编程语言,有着广泛的应用场景。在Windows...

    Java程序员应如何做职业规划?.docx

    1.目标分解: Java 程序员可以将大的目标分解成小的、可实现的目标,逐步实现自己的职业目标。 2.SWOT 分析: Java 程序员可以使用 SWOT 分析了解自己的优势、弱点、机会和威胁,制定更加实际的职业规划。 3.职业...

    为什么程序员是一个伟大的职业

    作为一个程序员,不仅意味着编写代码,更意味着在创新、协作、市场需求、薪资待遇以及职业发展的可持续性等多个方面展现其伟大之处。 首先,创新是程序员工作的重要组成部分。在软件开发领域,创新不仅仅是艺术和...

Global site tag (gtag.js) - Google Analytics