伟大的开发者

如何成为一名优秀的开发者?你觉得自己算是一名优秀的开发者吗?如果是的话,你有没有考虑过,作为一名优秀的开发者,应当具备哪些优秀的品质?原文作者Gregor Riegler 发表了一篇博文《 What makes a great Developer》,文中提到了成就优秀开发者的九大品质,译文如下:

一、激情

  开发者往往会因每一次成功完成任务后而感到欣喜,这是因为当你已经掌握并且拥有智能的解决方案时,这些对你来说都是非常的有利。

  编程不只是一份工作,它还是一门艺术、是诗歌。因为激情和动力才成就成功。软件开发行业不仅巨大,而且发展也相当的快速。一名好的开发人员能够跟得上时代的步伐,因为他知道任何事情都可以做得更好。不断学习新的方法,以满足饥渴(意思是学习永无止境)。

二、好奇心

  通常程序是确定的,因为在计算机领域里不存在所谓的事故。每一个结果必定有其原因。一个伟大的开发者不允许有事故发生。这是因为他宁愿搜索和调试众多的软件层,在开发环境中找到原因。正因为如此让他积累了丰富的经验知识,让他更好地理解、阅读并解释应用程序“怪异”的行为。

  “The important thing is not to stop questioning. Curiosity has its own reason for existing.”重要的是不要停止提问。好奇心有它存在的理由。——Albert Einstein

  "The most likely way for the world to be destroyed, most experts agree, is by accident. That's where we come in; we're computer professionals. We cause accidents."许多专家认为,导致世界毁灭最可能的原因是意外事件。那正是我们在做的;我们是计算机专业人士,我们正在制造意外事件。——Nathaniel Borenstein

三、认知

  编程是解决问题的行为。问题可以分解成多个组成部分,最终成为一个整体组合在一起。在大脑里寻找问题并作出反应,让它们相互作用这就需要具备真正的技能。

四、一丝不苟

  编程到处充满着陷进,哪怕只是一个细节也会导致软件开发崩溃。细节就是魔鬼,即使是很小的懒惰也可轻易地摧毁项目。这就是为什么说完美是如此的强大、强调高质量的重要性,直至走向成功。

  如果你能容忍第一个缺陷,那么第二个、第三个就会接踵而来,直到最后你得到了一个烂摊子。一名好的开发人员是不会容忍任何缺陷,这就避免了陷进从而提升了项目质量。这就好比一个“ 破窗理论”,意思是说一个房子如果窗户破了,没有人去修补,隔不久,其它的窗户也会莫名其妙地被人打破最终导致毁坏了整栋房子。

五、时间

  伟大来源于经验。是的,你可以简单地遵照建议、模式和最佳实践。但这与学识无关,这是由于错误和迭代演变而来的。

六、谦虚

  伟大的开发者知道他所不知道的,并且深知永远都不会知道所有的事情。他要知道,总会有改进的空间,这同样适用于自己的工作,他敢承认自己的错误并接受批判。

七、韧劲

  好的开发者会向解决方案宣战,他会跟其叫板,即使是让他奋斗数小时、一夜、甚至是到天亮。也有的开发者在遇到问题时,第一时间内他不会考虑问题,但是他把这个当做挑战,除非它不是个反模式。来之不易的成功来源于自信。

八、视野

  在软件开发行业中,开发者经常会在小项目上花费很长时间,虽然很集中,但很容易迷失方向,而忽略对系统其他部分的影响。好的开发者在技能上应该眼观大局,根据现状有预见性地作出判断。

九、懒惰

  这个听来很愚蠢,懒惰应该摆在首要位置,但并非如此,懒惰导致了许多改进。最重要的是懒惰导致了许多自动化。每次当你成功拒绝手动而采用自动,或许你已经获得了改进。

  自动化是通向完美无缺、高效及进步的关键。完美无缺,因为理想中的计算机是不会犯任何错误的(并不适用于每个方面),但是人类却容易产生错误。效率,从长远来看这是在投资节约时间。你越早使用自动化,越能节省时间。进步,每一次进步都会给做其它事情留些空间。

  好的开发者太懒散以至于:

  • 编写完整的API文档,他让JavaDoc做这项工作;
  • 正确格式化代码,让IDE做这项工作;
  • 一遍一遍地测试功能,他使用单元测试进行自动化;
  • 遇到阅读复杂的方法,所以他利用好的命名编写简短易读的方法;
  • 重复编写同行代码,他需求方法来重构以避免这样呆板的代码,因为他太懒不想重复自己(DRY);
  • 没人要求实现该功能(适可而止_YAGNI原则);
  • 使用位运算和移位做减法运算,保持简单原则(KISS);
  • 让同事帮他别写代码(结对编程)。

原文地址:http://tech.it168.com/a2013/0620/1497/000001497364.shtml

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-07-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据架构师专家

七字诀,不再憋屈的运维

1613
来自专栏java一日一条

优秀的前端开发工程师简历是怎么样的?

在阿里常年招聘,筛过各式各样的简历,每到招聘季,筛简历、面试过程非常耗精力,当然,原因之一是我想招非常优秀的人,宁可多花些时间,另一方面,除了那些不合格的简历之...

311
来自专栏ATYUN订阅号

人工智能平台Jane为企业提供高效信息检索

筛选旧文件对于一个人来说耗时耗力,而对于拥有数千名员工的大型组织和企业来说,更如同噩梦一般。这就是前Answers.com首席执行官David Karandis...

1112
来自专栏喔家ArchiSelf

PHP 是最好的语言吗?

最近被朋友们拉入了几个技术社群,有微信群,也有QQ群,尤其对一些年轻的朋友,大家乐此不疲的问题居然是 PHP 是最好的语言么?

912
来自专栏猿天地

招聘季来临 如何写好一份让你薪资翻倍的技术简历

金九银十,对应届毕业生来说又到了一年一度的校园招聘黄金季了。估计很多人都开始准备自己的面试简历了。今天就简单聊聊如何打造一份好的面试简历吧。

1041
来自专栏大数据钻研

稀土

致每一位加入稀土团队的你,我们到底在为怎样的一群人服务? 每一个公司、每一个产品都有它创立的意义,这篇文章只是希望帮助加入稀土的你们了解我们是一个怎样的公司,在...

2915
来自专栏Java帮帮-微信公众号-技术文章全总结

怎么才算一个合格的程序员?【大牛经验】

产品经理经常改需求这是程序员最头疼的事情,作为程序员应该也站在PM的角度思考,帮助PM分析出本质的需求,这也许可以减少需求的变更。当然,前提是得干一行爱一行,...

862
来自专栏云计算D1net

美国国防部正在试验软件定义网络 进展十分有限

软件定义网络(software-defined networking)有很大的希望提高设置和控制网络的效率,将引发信息技术的这一关键方面发生根本性的改变。虽然国...

3608
来自专栏Crossin的编程教室

学习编程的七个阶段

第1阶段:机会 你很开心,你一直想学这个新的内容,比如说某编程语言,无论是规划还是环境所迫,总之你终于有这个机会学习了。 第2阶段:没有根据地乐观 谷歌搜索——...

3118
来自专栏IT派

这么多编程语言,而我为什么要学 Python?

今天分享的4个关于Python编程语言的故事,来看看人工智能时代爆发的Python。 每个人都知道Python是“AI时代最好的编程语言”。 ? 言归正传,我们...

4115

扫码关注云+社区