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

这些年我曾和很多程序员一起工作,他们之中的一些人非常厉害,而另一些人显得平庸。不久前因为和一些技术非常熟练的程序员工作感觉很愉快,我花了一些时间在考虑我佩服他们什么呢?什么原因让优秀的程序员那么优秀,糟糕的程序员那么糟糕?简而言之,什么原因成就了一位优秀的程序员呢?
  根据我的经验,成为一个优秀程序员同年龄,教育程度,还有和你赚多少钱没有任何关系。关键在于你的做法,更深入地说,就是你的想法。我注意到我所钦佩的程序员都有一些相似习惯。不是他们所选语言的知识,也不是对数据结构和算法的深入理解,甚至不是多年的工作经验。而是他们的沟通方式,他们管理自己的方式,以及以他们精湛技术水平编程演讲的方式。
  当然成为一个优秀的程序员还要具备更多特质,我也不能单单依靠是否存在(或者缺少)这些特质来评判一个程序员。但是我知道当我看见它,当我看见一个程序员具备这些特质的时候,我认为,“这个人真的知道他们正在做什么”。
  他们做调查研究
  或者叫“三思而后行”,或者叫“谷歌一下”
  不论你怎么称呼它,大多数可能会遇到的编程问题已经以某种形式解决,传道书早就记载着世界上本来就没有什么新鲜事。优秀的程序员在解决问题之前知道通过GitHub图书馆、网络博客,或者通过与经验丰富的程序员交流等形式来做调查研究。
  我见过甚至是优秀的程序员可以快速找出解决方案,但是和我一起工作过的糟糕的程序员从来不求助于他人,结果做了大量的重复工作或者错误地解决问题,不幸的是,后来他们终将为自己犯下的错误付出了代价。
  他们阅读错误信息(并按照它们行事)
  这包括解析堆栈路径信息。是的,这是一件非常不幸的事情。但是如果你不愿意这么做的话,怎么才能知道哪里错了呢?我知道的高效程序员是不会害怕深究问题的。低效的程序员看见有错误,但就是不愿意甚至是去读这些错误信息。(这听起来很可笑,但你会惊讶我遇到它的频率)
  更进一步地说,优秀的程序员发现问题马上就解决它。读错误信息对他们来说仅仅是个开始,他们渴望深究问题并查出问题的根源。他们不喜欢推卸责任,而是愿意查找解决问题的方案,问题在他们这里止步。
  他们去看源代码
  文档、测试、团队,这些都会说谎。尽管不是故意的,但是如果你想确切地知道事情是怎么回事,你必须自己亲自看源代码。
  如果它不是你最擅长的语言,你也不要害怕。如果你是一个Ruby的程序员,你怀疑在Ruby的C语言库中有个错误,破解打开看看。是的,你可能拿不到源代码,但是谁知道呢?你只是可能而已,你有更好的机会,总比你根本不去尝试好吧。
  不幸的是,如果你处在一个封闭源代码的环境中,这会变得非常难,但道理是不变的。糟糕的程序员对于查看源代码没有丝毫的兴趣,结果问题困扰他们时间,要比愿意看源代码的时间长得多。
  They just do it
  优秀的程序员趋向于主动去做。他们的内心有着难以控制的冲动,当他们确定问题或者发现新的需求时他们立刻会实现解决方案,有时过早有时太过激进。但是他们对问题本能的反应是正面解决问题。
  有时这会令人很烦恼,但是他们的热情是他们做好事情的一个重要部分。一些人可能拖延时间回避问题或者等待问题自己能够消失,然而优秀的程序员一开始就解决它。简而言之(或者显而易见),如果你看见有人兴致勃勃地查找问题并在解决,很可能你的手下有位优秀的程序员。
  他们避免危机
  这通常是糟糕程序员的特点:他们轻易地从一个人为危机跳到另一个人为危机,在没有真正理解一个问题之前就进入到下一个问题。他们会把责任归咎于程序的错误,然后花费大把的时间调试已经运行良好的代码。他们让情感占据主动,相信直觉,而不是仔细严谨的分析。
  如果你匆匆忙忙地解决一个问题,甚至视每一个问题为震惊世界的灾难。你很可能犯错误或者没有解决潜在的问题。优秀的程序员花时间去了解发生了什么错误,哪怕灾难来临的时候;但更重要的是,他们对待平常的问题像是要解决的重要问题,因此他们更准确地解决更多的问题,并且这样做没有提高团队的紧张程度。
他们善于沟通交流
  说到底,编程是一种形式的沟通交流。写代码和写散文创作一样,能够简洁地表达你的想法很重要。我发现那些可以写简洁邮件,优雅的状态报告,或者甚至只是一个有效的备忘录的程序员也将会是优秀的程序员。
  这能应用在写代码还有英语上。用圆括号、括号和单个字母的函数写出一行代码当然是有可能的,但是如果没有人理解它,有什么意义呢。优秀的程序员会花时间以各种渠道交流他们的想法。
  他们激情四射
  我认为这可能是优秀的程序员最重要的方面(也许这点也适用于除计算机科学领域的其它领域)
  如果你真的在乎你所做的事情,如果不把它当成工作,当作一个业余爱好、兴趣或一件很有吸引力的事情,那么在该领域你比其他人更有优势。优秀的程序员一直不断编程。普通程序员一天工作八小时,并且没有业余项目,也没兴趣回馈社区。他们不会不断地尝试新方法,而只是为了看看它们是如何运行而执着于编程语言。
  当我看见一个程序员利用周末的时间做自己喜欢的项目时,参与创作他们每天能用到的工具时,执着于新的有意义的事情时:那个时候我确信我眼前的是一个令人惊奇的人。最后,优秀的程序员视他们的职业不仅仅是赚钱的途径,更是让生活变得有些不同的方法。我认为那就是成就最优秀程序员的真正原因。对于他们来说,编写代码是改变世界的一种方法,也是我非常尊敬崇拜他们的原因。

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-08-24 17:38:15

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

想成为优秀的程序员这些码德不能缺

我把这些看成是作为一个程序员的基本素质,多数是编码之外的事情: ●代码每天备份:(预防意外导致的任何损失) ●上传代码时写清楚log信息:(为维护这个模块的人着想,有可能是你自己) ●提供接口时不要把问题抛给使用接口的人,升级或者变更接口时不要删掉原来的接口:(为使用你接口的同事着想) ●变量命名要见名知意:(起码不能误导别人) ●在工程中新建一个doc文件夹将项目相关的文档放在该目录下,方便后面维护的人员理解项目和代码:(为维护这个模块的人着想,有可能是你自己) ●签署bug或者转办bug时写

★漫画:优秀的程序员具备哪…

漫画:优秀的程序员具备哪些属性? 东方头条12-2717:20 很多人问我,你是一个优秀的程序员吗? 我还差得远,但我在朝这个目标努力. 那么,怎样才能成为一个优秀的程序员呢? 优秀的程序员往往具有几方面的特点,这些特点里有的更重要,有的作用略低,我以个人的见解,为这些特点从低到高划分了5个星级. 1.兴趣 重要程度: 毋庸置疑,无论是IT还是其他领域,兴趣都是成功的第一推动力. 或许有人会问了:我对所有正经事都没兴趣,天生就喜欢吃喝玩乐,那我该怎么办啊? 没办法,对自己狠一些吧,想一想努力事业

寻觅优秀Java程序员何其难

Java开发者供大于求,找一个优秀的开发者犹如大海捞针.这该赖谁?赖程序员对Java没兴趣吗?还是赖瞎了眼的招聘?抑或是语言本身?不管你同意与否,下面就列举了和这个问题相关的答案. 问题非语言,而是程序员自身 大多程序员都想做与众不同的人,大家都喜欢尝试.但除此之外,更多的程序员想要一个薪水丰厚的工作.最简单的方式就是学习Java--不管自己喜不喜欢写,这就是为什么众多无工作激情的程序员都沦为了Java程序"猿". "我不是指所有的Java程序员都是无能之辈",博客

★漫画:优秀的程序员具备哪些属性?

漫画:优秀的程序员具备哪些属性? 东方头条12-2717:20 很多人问我,你是一个优秀的程序员吗? 我还差得远,但我在朝这个目标努力. 那么,怎样才能成为一个优秀的程序员呢? 优秀的程序员往往具有几方面的特点,这些特点里有的更重要,有的作用略低,我以个人的见解,为这些特点从低到高划分了5个星级. 1.兴趣 重要程度: 毋庸置疑,无论是IT还是其他领域,兴趣都是成功的第一推动力. 或许有人会问了:我对所有正经事都没兴趣,天生就喜欢吃喝玩乐,那我该怎么办啊? 没办法,对自己狠一些吧,想一想努力事业

★漫画:优秀的程序员具备哪…

漫画:优秀的程序员具备哪些属性? 东方头条12-2717:20 很多人问我,你是一个优秀的程序员吗? 我还差得远,但我在朝这个目标努力. 那么,怎样才能成为一个优秀的程序员呢? 优秀的程序员往往具有几方面的特点,这些特点里有的更重要,有的作用略低,我以个人的见解,为这些特点从低到高划分了5个星级. 1.兴趣 重要程度: 毋庸置疑,无论是IT还是其他领域,兴趣都是成功的第一推动力. 或许有人会问了:我对所有正经事都没兴趣,天生就喜欢吃喝玩乐,那我该怎么办啊? 没办法,对自己狠一些吧,想一想努力事业

想要成为真正优秀的程序员是不是真的很难?

很多人认为要想成为一名优秀的程序员,那就需要一天24小时每天不断地编程--睁开眼睛要编程,闭上眼睛睡觉的时候还要梦到编程--我认为这是一种矫枉过正的方法.沿着这条路走,只会让你精疲力尽,犹如夸父逐日一般,死在半道上. 我觉得问题的关键是要想明白你为什么要编程.坦率地说,我编程是因为我喜欢别人用我的程序,这也是我之所以在读书的时候成绩不怎么优秀的原因(我并 不热衷于参加编程竞赛以及类似事情).因此,我也不喜欢参与纯研究的项目--只在论文上讨论各种点子,而不付诸于行动不去写代码(除非恰巧碰到的是研究

深入理解你的代码才能成为优秀的程序员

为什么有些程序员似乎有着一种神奇的能力,能够在眨眼间提取代码的意思? 为了回答这个问题,我先从科学的角度来研究我们理解代码的过程. 事实证明,理解代码是有其心理过程的,我们可以利用这方面的知识成为一名更优秀的程序员.它能有助于你理解开发过程中的各个环节,这样你就不会因为编程中的技术瓶颈而裹足不前. 本文将对有关编程理解的知识略有涉及,并从三个方面来讨论如何利用这些知识成为一名更优秀的程序员. 关于成为更优秀的程序员的方法有三种: 首先,你得知道理解代码的能力取决于三个方面: 知识--解决问题所需

优秀的程序员该如何更上一层楼

关于我们这个行业,"是什么品质使得优秀的程序员区别于其他程序员?"是最难回 答的问题之一.最近我阅读了 Eran Galperin 的<What Makes a good programmer>,很有感触,于是想和大家分享一下我认为团队中每个人都需要具备的基本技能和特质. 1. 适应性和灵活性 很多开发团队都在喊我们需要灵活的开发人员--尤其是在软件开发初期这类人才更为重要.如果你平时是搞 UI 编程的,那么我们希望你能深入到数据持久层.我们甚至可能还会要求你去做一些测试.

依靠 IDE 会让你变成一位差劲的程序员吗?

一位在Web开发领域工作了近20年的资深程序员发表博文谈论了他的编程语言选择和.NET开发经验.他说,如果选择PHP的话他应该不会像.NET那样过于依赖集成开发工具(IDE)如Visual Stuidio..NET开发者Matthew Mombrea反驳了他的观点,认为使用一个优秀的IDE将使你的工作更有效率,称Visual Stuidio是最优秀的IDE.Mombrea的论点是,成为一名优秀的程序员不是熟记语言的特定调用,而是知道解决问题的既有方式,尽可能的用最好的技术或工具解决它.依靠IDE