http://news.csdn.net/a/20110612/299578.html
对于每个从事开发工作的程序员来说,成为一名优秀的开发人员或许是他们一直所最追求的目标。就如何成为一名优秀的开发人员,
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?
分享到:
相关推荐
是不是所有优秀的开发人员都能够成为优秀的测试人员?[1]软件测试所有的人都知道应该如何进行测试,但是却未必知道要成为一名优秀的测试人员,真正需要哪些素质。优秀的系统验证测试人员应该具备哪些素质?在8年多的...
【如何成为优秀的软件开发人员】 在当今信息化时代,软件开发人员是推动科技进步的重要力量,而如何从普通人成长为一名优秀的软件人才,是许多志在IT行业的人士关注的问题。本篇文章将探讨这一主题,分析现状,指出...
是不是所有优秀的开发人员都能够成为优秀的测试人员?[2]软件测试是可以工作,还是工作得更好?不久之前,一名测试人员向我解释她正在测试的新的安全会话特性,如何通过在每次调用中与信任服务器联系以便进行身份验证...
所有优秀的开发人员都能够成为优秀的测试人员吗?[1]软件测试所有的人都知道应该如何进行测试,但是却未必知道要成为一名优秀的测试人员,真正需要哪些素质。优秀的系统验证测试人员应该具备哪些素质?在8年多的软件...
事情犹如发生在昨天,那是在2000年,Pargas博士正在给我们数据结构班讲解有关数据结构方面的话题,当他讲解部署SSH应用时,一个同学问了他一个问题,当时他围绕“如果你想成为一个真正计算机科学家,你就要从学习vi...
所有优秀的开发人员都能够成为优秀的测试人员吗?[2]软件测试加速学习正如特性和产品无法单独工作一样,它们也无法保持一成不变。产品和技术以比以前任何时候都快的速度向前发展。优秀的测试人员将不断地学习,更重要...
所有优秀的开发人员都能够成为优秀的测试人员吗?[3]软件测试毫无疑问,编程技能对于中间件产品的测试人员来说非常重要,但是对于那些从事最终用户产品测试的测试人员来说,技术技能同样非常重要。所有的软件产品都在...
本讲座由林锐博士分享,旨在帮助软件开发人员认清自身实力,规划职业道路,从而成为优秀的软件人才。 首先,我们需要理解当前软件白领的现状。在改革开放后的中国,虽然经济有了显著增长,但软件行业的白领阶层仍...
- **测试技术并不高深**:并非所有开发人员都精通测试技巧,但这并不意味着他们不能成为优秀的测试者。通过培训和支持,开发人员可以在短时间内掌握基本的测试技能。 #### 开发人员需要理解测试人员 同样地,开发...
3. **计算机基础知识**:虽然非计算机专业的学习者也可以通过努力成为优秀的WEB前端开发者,但一定的计算机基础知识(如数据结构、算法等)对于理解复杂的前端原理和技术有着重要的作用。 4. **实践经验**:理论...
在IT行业的浩瀚海洋中,开发人员如同探险者,不断寻求新知,磨砺技能。在这一过程中,网络资源成为了他们不可或缺的宝库。本文将详细介绍一系列被公认为开发人员应当加入收藏夹的重要网站,这些网站覆盖了从编程语言...
至少掌握一门如Java、C#或C++的语言,并了解相应的开发工具,有助于测试人员更好地设计和实现测试脚本,确保测试的有效性和效率。 - 网络、操作系统、数据库、中间件知识:测试人员需要广泛的知识,包括基本的网络...
《DataStage_核心开发人员指南》是一本专为DataStage的高级用户和系统管理员准备的详细教程,旨在帮助...记住,不断学习和探索是成为优秀IT专业人员的关键,而《DataStage_核心开发人员指南》正是你旅程中的重要指南。
在2024年成为一名成功的Java开发人员,你需要掌握一系列技术、工具和实践。这份路线图将引导你走过这个过程,确保你在Java编程领域具备全面的技能和知识。以下是根据标题和描述提炼出的关键知识点: 1. **Java基础...
以上就是成为优秀营销人员的关键知识点,从职责、技能、素质到具体的营销策略,每个环节都至关重要。只有全面理解和熟练应用这些知识,才能在竞争激烈的市场环境中脱颖而出,成为一名成功的营销专业人士。
### Microsoft .NET开发人员职业规划蓝图与学习路线图 #### 第一部分:Microsoft .NET平台介绍 ...通过遵循上述蓝图和路线图,不仅可以成为一名优秀的.NET开发人员,还能为未来的职业发展打下坚实的基础。
成为优秀的高级C++程序员需要掌握多个方面的知识和技能。首先,C++作为一门有着近30年历史的语言,它的复杂性和学习难度较高,这导致了很多学习者在入门阶段就因为难以做出实用的程序而失去信心,最终放弃。尽管C++...
II 红帽实习生训练营-如何成为一名优秀的开发人员? 三级内部Packit研讨会Flock 2019讲座-一步将上游发布带到Fedora Rawhide 2018年OpenAlt-如何成为一名优秀的开发人员红帽开放日-如何成为一名优秀的开发商? 2016...
在成为一位优秀的.NET Web开发人员的过程中,学习的顺序至关重要,因为每一步都为你的技能树增添新的枝叶。首先,我们需要理解基础知识,这些是构建所有Web应用的基石。以下是建议的学习路径: 1. **编程基础**:...