伟大的开发者

如何成为一名优秀的开发者?你觉得自己算是一名优秀的开发者吗?如果是的话,你有没有考虑过,作为一名优秀的开发者,应当具备哪些优秀的品质?原文作者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 条评论
登录 后参与评论

相关文章

来自专栏大数据文摘

现实黑镜 | 面对死亡,你愿意将意识上传 获得“永生”吗?

1889
来自专栏JAVA高级架构

一个架构师谈什么是架构以及怎么成为一个架构师

582
来自专栏喔家ArchiSelf

雾里看花——IIoT

工业物联网(IIoT)正在从概念逐渐变成现实。廉价传感器, 从数据到云端, 以及在浏览器上的仪表盘可以看到更细致和更现实的模型,仿若无处不在。 一些文章通过对雾...

642
来自专栏大数据文摘

怎样匹配?6大婚恋网站帮你不再孤单

942
来自专栏灯塔大数据

数据的阴暗面:什么是暗数据?为什么暗数据很重要?

? 最近引起热议的术语暗数据,确切的说,就是来自于大数据的阴暗面。尽管暗数据这个名字听起来不吉利(让人联想到一个少年哥特乐队会取的绰号),但是或许更加的准确。...

3095
来自专栏黑白安全

国际刑警组织的新软件凭声音就能揪出犯罪分子!

一个新的平台旨在将语音录音与存储在海量数据库中的语音样本进行匹配来识别犯罪分子,但这也引发了隐私方面的问题。

563
来自专栏凌帅的阅读思考与实践

价值感知中币种选择的重要性及凌帅的选择

最近一直在学习三九老师的价值感知课程,非常认可。根据三九老师的教导,立马开始准备凌帅自己的价值感知练习。

682
来自专栏大数据文摘

[译]大数据的真正价值在哪里?

1776
来自专栏顶级程序员

桌面工作站也能执行超级计算?英伟达新一代GPU剑指深度学习和虚拟现实

英伟达今天发布了基于其最新的 Pascal 架构的新一代 Quadro 系列显卡。该公司宣称,新的芯片组可将桌面工作站转变成为具有突破性能力的超级计算机,为不...

3336
来自专栏about云

一个架构师谈什么是架构以及怎么成为一个架构师

问题导读: 1.架构的定义是什么? 2.什么是架构之美? 3.架构师都要会做什么? 新年新事,来点轻松的话题。我们调剂一下后再继续讲CAS SSO...

3175

扫描关注云+社区