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

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

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

我可以很老实地说,这两种文本编辑器中的任何一个都没有使我成为一个更好的程序员。

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

所以,工具不能成就优秀的程序员,那什么可以呢?我认为成就一个优秀程序员需要诸多因素都依赖于你所工作的内容和与你一同工作的人。但我发现,在软件开发领域已取得巨大成功的人身上都存在一些共同的特征,值得分享。我不敢肯定这些特征你能否学得到或者与生俱来,但我十分强烈的感到,如果我更加注重这些特征的培养,而不总停留在文本编辑器的替换上,我一定能取得很大的进步。

用户第一

我认识的最好的程序员都会把用户放在第一位。他们意识到软开发出来是让用户用的,即便它是一个复杂系统的后台或一个协议,除了其他程序员不会再有别人用到它们。他们把文档说明书看得很重要并把它认真写下来。他们还会帮助用户去使用他们的代码。他们也愿意付出更大的努力以降低软件复杂度,从而让用户更好的使用他们的软件。

有强烈的学习欲望

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

问题匹配的能力

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

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

热爱软件开发工作

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

持之以恒

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

信息来源:如何成为优秀的开发人员?

相关推荐