是什么成就一个伟大的程序员?

标签: 程序员 | 发表时间:2011-07-14 19:08 | 作者:ericwtou 小明
出处:http://www.yeeyan.org

原作者:
来源What Makes A Great Programmer?
译者ericwtou

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

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

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

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

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

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

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

以人为本

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

求知欲

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

技巧地问题模式匹配

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

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

一点点疯狂

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

坚持

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

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

原文链接:http://humblepg.com/chs/articles/what-makes-a-great-programmer.html

添加新评论

相关文章:

  人们最初厌恶编程的10个原因

  划分软件开发人员的两种尺度

  为什么新人不会编程

  技术面试能发挥多大效用呢?

  10年软件开发教会我最重要的10件事

相关 [程序员] 推荐:

普通程序员、文艺程序员、2B程序员

- 可可 - 宇宙的心弦
希望能引起广大苦逼的正在学或者已经学过c++人的共鸣和会心一笑吧. 如何辨别自己在现实还是虚拟世界.

如何面试程序员?

- bluesnail - 阮一峰的网络日志
你要面试一个程序员,应该问他什么问题. 有人在Hacker News的讨论区里,请求指点,怎么才能在面试中发现合格的人. 众人纷纷出主意,有很多高质量的回帖,我觉得挺有启发,就整理出了下面这篇文章. 首先,最重要的是,你自己一开始就应该想清楚:. 哪些途径和方法可以发现这样的人. 只有明确这些根本性的问题,才能正确高效地完成面试.

程序员的本质

- Allen - 译言-电脑/网络/数码科技
来源What do programmers really do?.   很多人(包括我岳母)认为计算机变得如此智能,所以在不久的未来将不再需要程序员. 另外一些人认为程序员是天才,他们在电脑前能不断地解决复杂的数学难题. 甚至不少程序员对他们是做什么的都没有清晰的概念.   在这篇文章中,我想给不知情的人解释一下程序员到底是做什么的:.

程序员人生之路

- myartings - 博客园-首页原创精华区
   程序员人生之路(强烈推荐,分析的透彻. ),某程序达人的人生感悟,估计没有半个甲子的时间,是绝对不可能感悟出来的.    相对同时刚出校门同学从事其它行业而言优厚的薪水,以及不断学习更新的专业知识不仅仅让你感到生活的充实,更满足了你那不让外人知的虚荣心. 在刚出校门的几年中,你经常回头看看被你落在后面的同学们,在内心怜悯他们的同时,你也会对自已天天加班的努力工作感到心里平衡:“有付出才会有回报”这句话在那几年中你说的最多,不管是对自已的朋友们还是自已的爱人.

程序员装B指南

- Qing-Run - 博客园-首页原创精华区
1.电脑不一定要配置高,但是双屏是必须的,越大越好,能一个横屏一个竖屏更好. 一个用来查资料,一个用来写代码. 总之要显得信息量很大,效率很高. 2.椅子不一定要舒服,但是一定要可以半躺着. 3.大量的便签,各种的颜色的,用来记录每天要完成的事务,多多益善. 沿着电脑屏幕的边框,尽量贴满,显出有很多事情的样子.

程序员收入报告

- diaoxsh - cnBeta.COM
最近,波兰的程序员Chris(也叫KreCi)公布了他的第十四期程序员收入报告. 数据显示,上月是目前为止他收入最多的一个月. Chris的收入并不是指他的工资或薪水,Chris是一个自由职业者. 他的收入也不是来自个人承包软件工程的收入,他更像是一个果农,种了优良的果树,只要不断的给这些果树施肥浇水,这些果树会给他带来源源不断的财富.

程序员的利器-SourceInsight

- Alex - 博客园-首页原创精华区
作为程序员,大部分时间是在已有的代码上代码工作. 要对已有的代码进行调整,首先就要搞清楚当前代码中蕴含的逻辑关系. 所以常常有程序员调侃说花了大半天时间看代码,最后写代码的时间只有几分钟. 所以,对已有代码的分析质量将影响(甚至会决定)最终代码修改的质量. SourceInsight在代码分析上给予程序员极大的帮助.

程序员?还是小丑?

- Vingel - cnBeta.COM
和你从不认识的人坐在一起,试图弄清楚他是个程序员还是个小丑. 我没有想侮辱任何人的意思,而且,我是第一个要感谢这么多年的教育和努力终于把我变成一个专业小丑的人. 对于程序员新手,我充满怜悯,为了和缓的帮他热热身,我给了他一道温和的问题来消解我们之间的陌生. 我让Ada写一段程序,在纸上,打印出“hello“这个词10次.

程序员必读经典

- - 搜索引擎技术博客
你面试微软前必须要读的十本书:. Code: The Hidden Language of Computer Hardware and Software (《编码的奥秘》). Computer System: A Programmer’s Perspective (《深入理解计算机系统》) /Windows via C/C++ (《Windows核心编程》 / 《程序员的自我修养》.