您的位置:首页 > 理论基础 > 数据结构算法

如何成为优秀的开发人员?

2011-06-13 08:59 471 查看
于每个从事开发工作的程序员来说,成为一名优秀的开发人员或许是他们一直所最追求的目标。就如何成为一名优秀的开发人员,Alan Johnson发表了一篇博文《What Makes A Great Programmer?》,CSDN对此文进行了翻译,全文如下:

事情犹如发生在昨天,那是在2000年,Pargas博士正在给我们数据结构班讲解有关数据结构方面的内容,当他讲解部署SSH应用时,一个同学问了他一个问题,当时他围绕“如果你想成为一个真正计算机科学家,你就要从学习企业VI视觉设计开始。”说了一些事情。因为他说这些话的时候,面带微笑,事后我并不觉得他的话正确。但当时由于年轻、易受影响,回到宿舍中,我就立即开始学习VI。这样持续了一段时间后,我意识到一旦我掌握了一些东西,我就可以快速在VI中实现。

六年前,我迷上了TextMate编辑器软件。当时我正从事Java软件开发工作,并在业余时间学习Rails并做一些Rails项目。那时几乎所有我读的文章和观看的视频都是说明和演示如何使用TextMate来完成文本编辑工作的方法技巧的。事实上,我当时每天用Eclipse,它总会让我的心情变得很遭。所以我买了一台Mac电脑,并在开机后的10分钟内就购买了TextMate软件。

我可以很老实地说,文本编辑器的改变并没有使我成为一个更好的程序员。

仅仅靠好的工具,并不能使你成为更优秀的程序员。所选用的工具确实很重要。实际上,他们也很棒。正如Tiger Woods即便使用低劣的球棒也会击败我们,Messi不穿鞋照样可以击败我们,Rafael Nadal在网球场用60年代的木制球拍也可能击败我们一样。你所积累的技术、知识和经验才是其中最重要的部分。

既然工具不能成就优秀的程序员,那什么可以呢?我认为成就一个优秀程序员需要诸多因素,这些因素主要依靠你所工作的内容和与你一同工作的人。但我发现,在软件开发工作中已取得很多成功的人中都有一些共性,值得借鉴。我不敢肯定你是否能选用这些技巧或你是否与生俱来这些个性,但我十分强烈的感到,如果我更加注重这些个性的培养,而不总停留在文本编辑器的替换上,我就可以提升到一个很满意的位置。

用户第一

我认识的最好的程序员都会把用户放在第一位。他们都意识到软开发出来是让用户用的,即便它是仅供其他开发者使用的、一个复杂系统或一个协议的后台。他们把文档说明书看得很重要并把它认真写下来。他们还会帮助用户使用他们的软件。他们也愿意做一些额外的工作,降低软件复杂度为用户提供合适的解决方案。

有强烈的学习欲望

令人称奇的程序员都对知识如饥似渴,他们总会告诉你一些新鲜有趣的事。他们喜欢大量阅读(无论在线上阅读还是线下阅读)。他们也喜欢动手尝试,并从中获取经验。他们从不害怕尝试新语言或新平台。

匹配问题的能力

从事软件开发工作一段时间后,你就会发觉,在开发过程中遇到的问题有时和你以前曾解决的问题极其相似。能迅速意识到这些,并把以前解决问题的方案迅速迁移到当前问题上是一个很重要的能力。更好的就是在每次解决问题的过程中能够不断优化解决方案。

但仍要注意,这并不意味着你可以盲目地说以前的解决方案对本次问题一定奏效。此时巧妙地进行问题类型匹配显得很重要。什么时候用以前的解决方案可行,什么时候不行,对此你要有一定的判断力。

热爱软件开发工作

我哥在高三时学习Python语言,当我问他喜欢这门语言到什么程度时,他对我说,我极想成为一名程序员,但这对他来说是件最无聊的事。从某种程度来说,我认为他是对的。绝大部分时间里,我面对计算机的时间远远超过和人交谈的时间。我常常因为把一行行“唧唧歪歪”的话转化成可工作的软件而兴奋。从事软件开发的每个人并不是都喜欢做这个工作,但我曾见过的最优秀的程序员绝对是喜欢开发软件的。

持之以恒

软件开发的推进过程往往比计划慢很多。它需要花费时间来完成。有时你必须耐心地去完成你要写的代码。作为开发者,有时我们会写一些确实很有趣的代码,但有时我们也会因为大量写重复的代码而失落。我认为最好的程序员是可以一直坚持到最后的程序员,他们可以预见他们所从事工作的远大前景,他们乐于享受一步步构建工程直到最终完成的过程。

以上是我认为可以造就优秀程序员的几个个性特征,但并不意味着这是全部。所以我想听听你的看法。你认为什么造就了成功的程序员呢?

原文链接:What Makes A Great Programmer?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息