良好的程序员与优秀的程序员究竟有何差异?

新闻
简言之,能否写出好的代码并不是区分良好程序员和优秀程序员的唯一因素。先从良好程序员开始。那么,良好程序员有什么特征?

如果写代码是一门科学,那么所有开发人员的表现几乎没有区别。

但事实并非如此。

如同一门艺术,在朝着同一结果努力时,两个开发人员不会有同样的思维或认知。尽管一些人很难达到想要的结果,但少数人却能水到渠成,就好像每当他们开始写代码或者解决问题时,就忽然顿悟了。

[[320210]]

软件工程专家史蒂芬·麦康奈尔(Steve McConnell)的一篇博客中,讲述了20世纪60年代后期由萨克曼(Sackman)、埃里克森(Erikson)和格兰特(Grant)展开的一项原始研究。他们发现,最好和最差的程序员的原始编码时间之比大约为20:1。最有趣的是,他们发现程序员的经验与代码质量或生产效率无关。

简言之,能否写出好的代码并不是区分良好程序员和优秀程序员的唯一因素。

先从良好程序员开始。那么,良好程序员有什么特征?

  • 具有优秀的技术技能,能写出干净整洁的代码。
  • 具有扎实的开发技术知识和解决问题的专业技术。
  • 了解编程的最佳实践以及何时使用它们。
  • 对编程有着持久的热情,并积极为团队做贡献。
  • 备受团队的其他成员尊敬和喜欢。

所以,如果你是一名程序员且具有以上特征,那么恭喜!你是一名良好的程序员。你应该感到自豪。

现在开始介绍优秀的程序员。

  • 罕见难有的人才。
  • 生产效率是良好程序员的3倍,是糟糕程序员的10倍。
  • 属于顶尖的1%,不仅写代码,还拥有一系列无形的特质,使其在众多程序员中脱颖而出。

简言之,优秀程序员=良好程序员+一系列无形特质。

虽然这并不容易,但是如果你足够努力,这里有一些无形的特质,可以帮助你实现从良好程序员到优秀程序员的转变。

优秀程序员具有突出的学习能力

[[320211]]

来源:Pexels

优秀程序员思维敏捷,这意味着他们有能力学习新技术,对此并不胆怯。

他们能将看似分散的信息整合起来,对其进行动态处理。每个程序员都会有不知道答案的情况。这时,优秀的程序员会找到不同的资源,与合适的人讨论,找到解决方案(不论这个方案看起来多么难以实现)。每个人都能拥有的最好的技能是知道如何学习,而优秀的程序员已经掌握了自学的技能。

优秀程序员不会让他的自我意识介入到工作和学习过程之间。如果需要知道什么,他会以从低到高的顺序接近公司中的任何一个人。

优秀程序员能平衡实用主义和完美主义

Etsy的首席技术官约翰·阿尔斯帕瓦(JohnAllspaw)在其文章《如何成为一名高级工程师》中提出了一个很棒的观点。他说,一流的开发人员是健康的怀疑论者,他们在工作中总会询问自己和同行问题。

“我还会遗漏什么吗?”

“这怎么会不成功呢?”

“能帮我找出我这个想法里尽可能多的漏洞吗?”

“尽管它在技术上是合理的,但组织的其他成员是否能充分理解它的操作、故障排除以及扩展呢?”

这些问题背后的思想是:他们完全理解同行评议的重要性,只有通过可靠的同行评议,才能做出好的设计决策。所以他们“乞求”批评意见。优秀的程序员往往在对自己的代码进行了广泛的测试后,才会信任它。

此外,他们还能理解市场动态和尽早交付产品的需求。因此,他们既能做出快速而糟糕的处理,也能提出优雅精致的解决方案,还能机智地选出适合当前特定情况的解决方案。

少数程序员缺乏对于一些问题所必需的细节关注,其他人则陷入了完美主义的模式。优秀的程序员则能完美地平衡这两者。

优秀程序员具有敏锐的直觉

《尼各马科伦理学》( TheNicomachean Ethics)第六卷中,著名的哲学家与政治家亚里士多德讨论了人们为获得真知而在任何领域实现成功所必备的五种能力中的第四种:直觉。

亚里士多德的观点很简单。直觉是我们开始认识一切的方式,通过直觉获得的知识必须锚定所有其他知识。事实上,这种获取知识的方法十分基础,以至于难以证明。因为由直觉获取的知识并不是建立在一系列事实或推理得出结论的基础之上。相反,我们仅仅通过内省和直接感知来获知直觉的真理。

从史蒂夫·乔布斯到理查德·布兰森(RichardBranson,英国亿万富翁),再到沃伦·巴菲特,他们都是直觉型的人,通常不论做什么都能够成功。因为他们能更清楚地看待事物,能比别人更快地找到解决问题的最佳方案。毋庸置疑,这些人都具有充足的专业知识和经验储备。但是他们似乎还有与生俱来的丰富直觉,使他们能领会复杂问题的本质,找到出人意料的正确的解决方案。

通常,优秀的程序员基于自己广泛的涉猎和良好的开发直觉,对于算法、技术以及软件架构表现出一种直觉的理解。他们只需看一眼,就能知道他们的“装备库”中哪项工具最适合解决手头的问题。其直觉能力远超出了开发和编程范围。这使得他们在向外行人和专业人士阐述技术和非技术问题时能很好地灵活应对。

优秀程序员富有远见,喜欢挑战,追求卓越,经常试图抢先别人一步打破自己的代码。

[[320212]]

来源:Pexels

优秀程序员是沟通大师

达米恩·菲利亚特罗(Damien Filiatrault)说得没错:

“良好的沟通技巧与良好的开发技能直接相关。”

为了让别人理解你的想法,你必须使其简单化,并且尽可能清楚地进行表达。这听起来很简单,不是吗?但不幸的是,表达清晰度的缺失是造成所有工作问题的根本原因。这是因为一种名为“知识诅咒”的现象。

1990年,斯坦福大学心理学研究生伊丽莎白·牛顿(Elizabeth Newton)通过对一个简单游戏的研究,阐述了“知识诅咒”这一现象。这个游戏将参与者分为两种角色:敲击者和倾听者。要求每个敲击者选取一首大众歌曲,如“生日快乐歌”,然后在桌子上敲出这首歌的旋律,让倾听者来猜歌名。

牛顿的这项实验过程中共敲击了120首歌曲,倾听者只猜对了其中三首:成功率为2.5%。但在他们猜之前,敲击者预测倾听者猜对的概率为50%。敲击者原以为成功传递信息的比例能达到1/2,但实际上只达到了1/40。为什么呢?

当敲击者敲击时,他(她)会情不自禁地听到自己的敲击声所伴随的曲调。与此同时,所有倾听者只能听到一段奇怪的莫尔斯代码。倾听者需要十分艰难地识别曲调,这让敲击者感到十分惊讶。

问题在于,一旦我们知道某件事(如一首歌曲的旋律),我们很难想象自己不知道它。我们的知识“诅咒”了我们。因为我们很难再现他们的心理状态,所以难以将自己的知识分享给别人。

这就是为什么优秀的程序员在将信息传达给团队之后总要进行确认。他们也能清楚地理解问题,把他们分解成假设,并提出解决方案。他们能快速地理解概念或者为了理解而提出适当的问题,尤其是他们不需要事无巨细都写进文件中。

所以,如果想成为一名优秀的程序员,你需要确保你和你的团队之间保持有效的沟通。这不仅使你保持在更高的承诺水平,还向上级表明了你对交付高质量的产品是真正感兴趣和投入的。

[[320213]]

来源:Pexels

如你所见,要想在所在领域出类拔萃,你不需要任何花哨的学位,甚至不需要钱来投资。

你所需要的是学习的态度,疯狂的求知欲和基于多年积累的知识将事情联系起来的直觉力。培养一种健康积极的态度,抛弃自我,宽容地接受反馈并采取行动,这些也同样重要。一旦做到了这些,我保证你能成就一番事业。

正如鲍勃·马利(Bob Marley)所说:

“一个人的伟大之处不在于他获得了多少财富,而在于他的正直和积极影响周围人的能力。”
责任编辑:赵宁宁 来源: 今日头条
相关推荐

2014-08-29 11:09:44

程序员

2009-02-23 13:00:17

程序员职业习惯

2012-11-08 09:49:30

C++Java程序员

2017-11-14 21:30:15

2018-05-31 15:22:53

程序员女程序男性程序员

2020-03-09 11:14:25

程序员技术设计

2013-08-20 09:33:59

程序员

2009-09-15 16:16:35

代码习惯

2011-05-13 14:34:02

程序员

2012-11-22 14:00:26

程序员

2015-10-12 08:56:37

程序员成长法则

2012-05-25 10:54:24

程序员

2021-05-29 07:32:14

优秀程序员代码

2015-06-17 14:24:48

优秀程序员整洁代码

2009-09-11 21:23:21

敏捷开发敏捷中国大会

2012-03-06 09:22:46

程序员

2013-07-15 13:45:16

程序员

2013-04-15 10:55:09

程序员

2018-06-14 09:59:48

程序员代码大公司

2022-04-08 14:38:43

程序员习惯终端
点赞
收藏

51CTO技术栈公众号