白癜风前兆 http://m.39.net/pf/a_4577569.html全文共字,预计学习时长10分钟
如果写代码是一门科学,那么所有开发人员的表现几乎没有区别。
但事实并非如此。
如同一门艺术,在朝着同一结果努力时,两个开发人员不会有同样的思维或认知。尽管一些人很难达到想要的结果,但少数人却能水到渠成,就好像每当他们开始写代码或者解决问题时,就忽然顿悟了。
软件工程专家史蒂芬·麦康奈尔(SteveMcConnell)的一篇博客中,讲述了20世纪60年代后期由萨克曼(Sackman)、埃里克森(Erikson)和格兰特(Grant)展开的一项原始研究。他们发现,最好和最差的程序员的原始编码时间之比大约为20:1。最有趣的是,他们发现程序员的经验与代码质量或生产效率无关。
简言之,能否写出好的代码并不是区分良好程序员和优秀程序员的唯一因素。
先从良好程序员开始。那么,良好程序员有什么特征?
·具有优秀的技术技能,能写出干净整洁的代码。
·具有扎实的开发技术知识和解决问题的专业技术。
·了解编程的最佳实践以及何时使用它们。
·对编程有着持久的热情,并积极为团队做贡献。
·备受团队的其他成员尊敬和喜欢。
所以,如果你是一名程序员且具有以上特征,那么恭喜!你是一名良好的程序员。你应该感到自豪。
现在开始介绍优秀的程序员。
·罕见难有的人才。
·生产效率是良好程序员的3倍,是糟糕程序员的10倍。
·属于顶尖的1%,不仅写代码,还拥有一系列无形的特质,使其在众多程序员中脱颖而出。
简言之,优秀程序员=良好程序员+一系列无形特质。
虽然这并不容易,但是如果你足够努力,这里有一些无形的特质,可以帮助你实现从良好程序员到优秀程序员的转变。
优秀程序员具有突出的学习能力
优秀程序员思维敏捷,这意味着他们有能力学习新技术,对此并不胆怯。
他们能将看似分散的信息整合起来,对其进行动态处理。每个程序员都会有不知道答案的情况。这时,优秀的程序员会找到不同的资源,与合适的人讨论,找到解决方案(不论这个方案看起来多么难以实现)。每个人都能拥有的最好的技能是知道如何学习,而优秀的程序员已经掌握了自学的技能。
优秀程序员不会让他的自我意识介入到工作和学习过程之间。如果需要知道什么,他会以从低到高的顺序接近公司中的任何一个人。
优秀程序员能平衡实用主义和完美主义
Etsy的首席技术官约翰·阿尔斯帕瓦(JohnAllspaw)在其文章《如何成为一名高级工程师》中提出了一个很棒的观点。他说,一流的开发人员是健康的怀疑论者,他们在工作中总会询问自己和同行问题。
“我还会遗漏什么吗?”
“这怎么会不成功呢?”
“能帮我找出我这个想法里尽可能多的漏洞吗?”
“尽管它在技术上是合理的,但组织的其他成员是否能充分理解它的操作、故障排除以及扩展呢?”
这些问题背后的思想是:他们完全理解同行评议的重要性,只有通过可靠的同行评议,才能做出好的设计决策。所以他们“乞求”批评意见。优秀的程序员往往在对自己的代码进行了广泛的测试后,才会信任它。
此外,他们还能理解市场动态和尽早交付产品的需求。因此,他们既能做出快速而糟糕的处理,也能提出优雅精致的解决方案,还能机智地选出适合当前特定情况的解决方案。
少数程序员缺乏对于一些问题所必需的细节