开发人员的技能范围很广——资历往往不能决定一个人的能力。那么,是什么让一些人比他们的同龄人更优秀呢?是什么将他们与平庸的人群区分开来?
拥有五年、十年甚至十五年的「工作经验」并不一定能保证你是一个高效的高级开发人员,甚至不一定会拥有这个头衔。当然,也有一些成功的高级开发,他们往往年纪更大,也不是很具有代表性。年轻的高级开发也不会到处都是,但高级开发人员有一些共同的特点和技能。
这不是一个商业秘密,而是一个可以发展知识点和思维方式的方法。以下是一些很容易区分真正的高级开发人员的特征。
程序设计范式
程序化、面向对象和函数式编程是三种编程范式。面向对象设计的可靠方法、简洁的编码技术,这些技术构成了代码创建背后思维模式的一部分。
很多初级开发人员在编码过程中会忽略的事实是,编程是一种语言——这意味着它超越了语法规则。它是一个可以以多种方式构建的通信工具,编程范例有助于规范代码的通信方式。
任何人都可以写代码——就像任何人都可以在亚马逊上写一篇评论短文一样。但这种写作方式与 Stephen King 的小说不同。编程范例的作用和小说作家的情节结构一样,它们是高级开发人员代码背后的指导力量。所有的语言都是由公式组成的,高级开发人员在一个内部化的层次上理解它们,许多初级和中级开发人员还没有体验过。
创造能力
当我们第一次接触 for 循环和 if else 语句的世界时,我们倾向于以复制和粘贴代码的形式找到答案。初级和低水平的中级开发人员对此的理解是不同的。
然而,高级开发人员更进一步。他们能够在无需谷歌知识库帮助的情况下就创造出简洁的代码。他们知道自己在做什么,也知道自己行动的意义。他们看到了意外情况,或者至少预见到了意外情况,并且理解了代码中的漏洞以及如何改进它。
如果他们的知识有缺口,他们就会不仅仅看表面,而是会去深入理解它。他们会对工具箱中的所有内容都有更深的理解。对于高级开发人员来说,它们眼中的代码世界是不同的。
客观评价
每个人对于问题出现的原因都有着不同的看法。初级和中级开发人员倾向基于个人经验而不是与代码相关的推理来得出结论。他们的建议基本上都是基于他们编码的个人偏好、风格、命名惯例和思维方式。
这没什么错,因为这都是成长过程的一部分。在有足够多的差异化的经验之前,是很难达到真正的客观性的。没有正确的编码方法,只有基于不同情况和场景的有效方法。高级开发人员理解这一点。他们接受他们的代码可能不是最好的,并且还有改进的空间这一事实。
高级开发人员经常是有力的代码审核者,他们标记出同事制造的混乱的代码,并标记出体系结构中的薄弱部分。他们能够退后一步观察全局,看到未来可能发生的意外事件,同时根据这些事件带来的最不可预期的负面影响做出选择。它们不受任何一种类型的编码或范式的约束,专注于解决方案而不是工具。
好软件和可用软件的区别
作为开发人员,我们编写可以运行的代码。我们当中的有些人会在一些地方停下来,止步不前。其他人则更进一步,试图编写更加简洁高效的代码。最好的开发人员应该是这样:他们会接受错误和失败,并尽快改进代码,因为他们知道好软件和仅仅是可以工作的软件之间的区别。
大多数老板只关注软件是否能用,但优秀的高级开发人员更清楚什么软件更好。他们了解技术和混乱代码的隐藏成本。他们了解如何平衡可以工作的软件和优秀软件的需求——把握项目的准时交付和延期谈判的底线。
他们广博的知识和对框架和语言的理解使他们擅长分辨优秀软件和可以工作的软件之间的区别——以及如何产出这两种软件——并使他们能够在形势需要时提出创造性的解决方案。
教学能力
「平庸的老师讲述,好的老师解释,上等的老师示范,伟大的老师激发灵感。(The mediocre teacher tells. The good teacher explains. The superior teacher demonstrates. The great teacher inspires)」—William Arthur Ward
真正的高级开发人员有着足够的热情,这会激励他们在该领域经验不足的同行,帮助打磨出下一代钻石。
编程本身就是各种想法的集合,高级开发者有能力将这些想法转化为简洁易懂的东西。他们在不同的界面和媒介之间交流和编写代码的能力证明了他们对自己所掌握的语言的深刻理解。
成为任何领域的老师都需要对这个领域的知识有一定程度的精通。虽然「经验」可能以项目的形式出现在他们的简历和在不同公司的在职时长上,但教学是一种只有真正了解这些领域的人才能掌握的技能。
总结
真正的高级开发人员是多面的,有时,在其熟悉的领域之外他们只是初级或中级开发人员,但他们在编程方面都有很强的基础。
然而,上述特征表现在他们的个人特质和知识深度上,这使他们能够比一般程序员更快地熟悉未知的代码。他们通常是掌控大局,以开明的心态看待代码。
他们将提倡干净的编码习惯,并引导他们的同龄人也朝着这个方向努力。他们善待同龄人的错误,虚心地接受自己的错误——这一切的目的是学习和进步,而不是打击和摧毁。
高级开发者可以是任何年龄,来自任何背景,拥有任何数量的「经验」。他们是真正的问题解决者和长期的思想家。你认为呢?
via:https://medium.com/better-programming/the-marks-of-a-true-senior-developer-d5f3b11c3375
雷锋网雷锋网雷锋网