初级、中级或高级开发人员之间的区别不仅仅在于编程经验的多少。有些初级开发人员的年龄甚至可能超过了高级开发人员。说到底这一切都取决于技术力。虽然这并不意味着高级开发人员必然是面面俱到的专家,但我可以肯定地说,高级开发人员的技术熟练度高于初级和中级开发人员。
如果高级开发人员与初中级开发人员之间的区别不仅仅是编程技能,那么究竟还有什么?
知识储备
显然,高级开发人员的知识储备远远超过了初中级开发人员。初中级开发人员可以通过了解设计模式、架构、自动化测试、性能、安全性等知识,来缩小与高级开发人员之间的差距。
掌握软件开发中应当完成的工作内容和方式非常重要。但仅凭掌握这些知识还不足以成为高级开发人员。知识积累不是开发人员之间最大的区别,只是其中一个因素。
编程技术
不管大多数人怎样认为,但编程实际上并不是与计算机进行交流。编程的本质是与人交流,并给计算机下达指示。最终,代码会通过编译转换为0和1。
我们编写的代码必须能够方便后来开发人员的理解。即便是一个从未见过这些代码的新团队也应该能够打开代码,然后立即开始编写新功能或修复bug。在这方面,初级和高级开发人员之间存在巨大差异。
在这个比较中,让我们先把中级开发人员置之度外,因为在编程技术的话题中,中级开发人员是一个灰色地带。很显然,中级开发人员介于初级与高级开发人员之间,可能更加倾向于高级开发。这主要与经验有关,中级开发人员参与过整个开发周期——至少一次。他们犯了很多简单的错误,并从中吸取了教训。
如何鉴别初级开发人员?
初级开发人员缺乏经验。有些刚毕业,刚找到第一份全职工作。初级开发人员的心态通常是让代码正常运行。他们认为正常工作的软件就是优秀的软件。
编写简单易懂的代码很难,这也是初级开发人员无暇顾及的方面。初级开发人员倾向于编写酷炫的代码。如果你看到某些古怪的代码或过于复杂的抽象,那么十之八九这位作者就是初级开发人员。初级开发人员希望通过这种方式炫耀自己,让其他开发人员知道他们写的代码多么好。然而,他们大错特错了。
初级开发人员过于关注代码面向计算机的一面,却牺牲了人性化的一面。
高级开发人员怎么样呢?
在翻看高级开发人员写的代码时,你可能会想:就这么多?其余的代码呢?高级开发人员编写的代码看上去简单、直接、甚至还有点愚蠢。然而,这正是开发人员在编程中应当具备的最优秀的品质之一。高级开发人员都会遵循KISS原则:保持简单和愚蠢(Keep It Simple, Stupid),换句话来说,简单就是美。
高级开发人员思考代码的方式与初级开发人员不同。高级开发人员在编写代码时会考虑到可维护性和可伸缩性。这是一种与初级开发人员完全不同的心态:高级开发人员会考虑到使用代码的人,而初级开发人员只考虑如何让代码运行。
不仅仅是编程技术
除了编程技术之外,你还可以通过其他因素判断某位开发人员属于哪种类型。
一般而言,初级开发人员所承担的都是最简单或影响较小的任务。他们不会承担任何架构设计的工作。中级开发人员也不会参与设计解决方案,他们只是负责执行任务。他们与初级开发人员的不同之处在于,他们可以在没有监督的情况下完成常规的任务。而高级开发人员则可以凭一己之力开发整个应用程序。
但这并不意味着高级开发人员在此过程中不会遇到任何问题。开发人员每天都会遇到很多问题,这是万古不变的真理,对高级开发人员来说也一样。
不同之处在于,高级开发人员知道如何正确地提出问题以及如何处理这些问题。中级开发人员在面对常见的任务时也能提出正确的问题,但遇到复杂的任务就需要一定的帮助。
高级开发人员永远不会迷失方向,他们知道如何用正确的行动来跟进问题。但这并不意味着高级开发人员不能向其他开发人员寻求帮助。有时,最好的方法是向其他有这方面经验的开发人员寻求帮助。
只要没有分到需要深入知识的高难度任务,中级开发人员也能提出正确的问题。
你不能指望一位初级开发人员立即提出正确的问题。由于初级开发人员缺乏经验,他们需要有经验的开发人员指导。你需要为初级开发人员提供必要的资源或推动他们向正确的方向前进。
向下一级晋级
作为开发人员,我们都希望提升自我,做越来越好的自己。那么,为了提升自己的水平,我们究竟该做些什么呢?
初级到中级
由于初级开发人员缺乏经验,所以经历几次完整的开发周期非常重要。你可以通过这种方式,遭遇大量开发中的陷阱,并学会如何在下次避免。
在写代码的时候,你应该学习如何编写简单易懂的代码。设身处地为下一个接手这段代码的人着想。你还应该学习调试的技术,因为这可以让你更好地了解代码运行过程中的实际情况。
此外,你还应该学习最佳实践,并了解架构、性能、安全性等等方面的知识,努力缩小自己与中级开发人员之间的差距。
中级到高级
从中级晋级到高级可能会非常困难。有些开发人员的整个职业生涯都处于中等水平。
高级开发人员知道哪些捷径可以走,而哪些捷径则不可以。这些都是从过往的错误中吸取的经验教训。
如果你想晋级高级开发人员,则必须准备好承担没人知道如何解决的任务。你的工作内容不应该仅限于完成任务。
作为高级开发人员,你应该帮助经验不足的开发人员。当他们不知所措时,你就是他们坚强的后盾。
高级开发人员不仅掌握了编程技术,还掌握了他们的技术栈,这也不足为奇。此外,高级开发人员还应当了解公司内使用的所有工具和应用程序。
总结
初级、中级和高级开发人员之间的差异并非全部来自多年的经验。当然,可以肯定地说,高级开发人员的技术熟练度高于初级和中级开发人员。但知识不是最重要的因素。
高级开发人员编写的代码简单易懂,而且他们与初级开发人员的思维方式不同。但这不仅仅是编程技术的问题,知道问哪些问题以及如何跟进这些问题都很至关重要。只有经验丰富的高级开发人员才掌握了这些技巧。
作为初级开发人员,你应该专注于编写简单易懂的代码,并争取多经历几个开发周期。如果你想从中级晋级到高级,则应该专注于学习,而不仅仅是完成日常任务。你必须承担最艰巨的任务,并努力成为技术栈的主人。而高级开发人员的另一个责任是成为所有缺乏经验的开发人员的坚强后盾。
最后以Martin Fowler的一句话结束本文:“任何一个傻瓜都能写出计算机可以理解的代码。惟有写出人类容易理解的代码,才是优秀的程序员。”
原文:https://medium.com/better-programming/the-differences-between-a-junior-mid-level-and-senior-developer-bb2cb2eb000d