【译文】是什么成就一个伟大的程序员?

 

http://www.yeeyan.org/channel/tech 一个很好的网站

 

You are here【译文】是什么成就一个伟大的程序员?

【译文】是什么成就一个伟大的程序员?


By Eric Tou - Posted on 14 七月 2011

原文:What Makes A Great Programmer?

  按:有很多人不关心自己天天使用的工具,这是一个阶段。有一部分人开始关注工具,但却容易忘记使用工具本来的目的。有一段时间确实迷失在各种工具之中,所以文章的开头部分让我很有感触。希望大家能够警惕类似的思维陷阱,分享此文共勉。

  我记得仿佛是昨天。那是2000年,Pargas博士站在我们的数据结构课堂上谈论着一些Y数据结构的话题,同时一个SSH会话被投影到我们面前的墙上。有人问了个问题,而他说了些类似于“好吧,如果你成为一个真正的计算机科学家你需要开始使用vi编辑器”。我想当他说这话时他在微笑,而且事后看来他的说法完全不对,但像我当时那样年轻又易受影响,回到宿舍就立即着手训练自己如何使用vi。这大概持续了一阵子,但一旦我开始掌握窍门我发觉我在vi中工作真的很快。

  快进6年,我被TextMate迷住了。我当时在做一份Java开发的工作,但同时在空闲时间学习Rails和开发Rails项目。当时感觉似乎我读的每篇文章和我看的每个视频都在展示如何使用TextMate实现文本编辑之禅。事实上当时每天使用Eclipse让我充满了怒火。于是我买了台Mac,在打开它的十分钟内购买了TextMate。

  我能坦诚地说没有哪次文本编辑器的改变使我成为了更好的程序员。

  强大的工具只是不能使你变得“那么”好。你使用的工具确实重要,它们确实很棒。但老虎伍兹使用俱乐部里的垃圾装备仍然能击败我们所有人,梅西光着脚也会胜过我们,纳达尔也许能用一副60年代的经典木质球拍在网球场上击败我们全部,他也许用乒乓拍就能击败我。

  你积累的技巧、知识和经验才是方程式中最重要的部分。

  那么工具无法成就程序员,又是什么呢?我想成就一个伟大程序员的很多方面取决于你从事的工作以及和你共事的人,但我也看到了已经在软件开发领域获得大量成功的人们身上存在的、我认为值得分享的共通品质。我不确定这些是你能够掌握的技巧还是你与生俱来的东西。但我很强烈地感觉到如果我少花时间在换文本编辑器,多花精力在这些品质上,我会处于一个了不起的位置。

以人为本

  我认识的最好的程序员把人放在第一位。他们认识到他们编写的软件是面向人的,即使这只是某个复杂系统的后端或是除了开发者没人会使用的协议。他们编写文档因为文档是重要的。他们帮助人们使用他们的代码。他们愿意加班处理更复杂的问题,以给予使用他们软件的人正确的解决方案。

求知欲

  了不起的程序员对知识的饥渴令人惊讶。他们总是告诉你新的、有趣的东西。他们愿意大量阅读(无论线上线下)并且尝试事物获取经验。他们不担心尝试新的编程语言或新的平台。

技巧地问题模式匹配

  一旦你编写软件一段时间,你开始发现出现的问题非常相似于你曾经处理过的其它问题。能够识别这些问题,并转化过去的解决方案,使之有效于当前的局面是一种真正有价值的技能。能够每次改进解决方案则更好。

  注意,但这并不意味着你盲目地说因为一个过去的方案有效它就一定有效。这正是有技巧地应用问题模式匹配登场的地方。你必须能够分辨何时应当应用一个过去的方案,何时不行。

一点点疯狂

  我的兄弟在高三上过Python课程,当我问他是否喜欢时,他告诉我我成为程序员真是疯了,这是他做过的最无聊的事情之一。某种程度上,我认为他是对的。大部分日子我和计算机交谈多于和人交谈。我得一行行地把人们的叽里咕噜转化为可用的软件,这个事实让我大为震惊。不是这里的每个人都爱做这种事,但我遇到过的最好的程序员绝对热爱开发软件。

坚持

  软件开发总是比人们预期得更慢,这很花时间。有时你不得不足够耐心才能鼓捣出你需要写的代码。有时作为开发者我们能写出非常有意思的代码,但有时我们得写很多以前差不多已经写过一百遍代码的代码,得到的只有不爽。我认为最好的开发者能继续前进,因为他们能看到他们正在从事的事物的大局,而且他们热爱一点一点完成最终结果的过程。

  还有一些我认为能够成就一个真正的好程序员的品质,但这不是一个一网打尽的列表,我希望听到你的选择。你认为是什么成就一个伟大的程序员?

你可能感兴趣的:(程序员)