[译]初-中-高级开发人员之间的差异

原文: The Differences Between a Junior, Mid-Level, and Senior Developer

初、中、高级水平的开发者之间的差异,并非只在于其有多少年的编程经验。一个初级开发者甚至有可能比另一个高级开发者更年长。这一切都取决于技能。这并不意味着高级开发人员必须是一个在任何方面的专家,但是可以肯定地说,高级开发人员比初、中级的开发人员拥有更多更熟练的技能。

代码能力只是区分初、中、高级开发者的一部分因素,那么ta们之间到底有什么不同呢?

知识度

显然,高级开发者比初、中级开发者拥有更多的知识以及熟练度。了解设计模式,架构,自动化测试,性能,安全性等是初级开发人员和中、高级开发人员缩小知识差距的好方法。

了解软件开发中的事情应该如何完成是很重要的。但仅仅知道这些并不能使你成为一个高级开发人员。知识度并不是开发人员之间最大的差异,它只是其中一个因素。

编码

不管大多数人怎么想,编码并不是与计算机通信。编码是关于与人类交流和指导计算机的。最终,代码被编译转换为0和1。

代码必须对将来使用它的其他开发人员有意义。以前从未见过代码的新团队(开发者)一打开代码就应该能够开始处理新特性或修复bug。这就是初级和高级开发人员之间的巨大差异。

在这个比较中,我将省略中级开发人员,因为在编码技能方面,中级开发人员是一个灰色区域。很明显,中级开发者介于初级和高级之间。这主要与编程经验有关,因为中级开发者至少已经经历一次完整的开发周期。ta们可能已经犯过许多简单的错误并从中吸取了教训。

如何辨别初级开发者

初级开发者缺乏经验,大多是毕业之后才有了ta们的第一份全职工作。初级开发人员的心态通常是让代码工作。在ta们看来,能正常工作的软件和良好的软件并没有多大区别。

编写简洁直白的代码是困难的。大部分初级开发者不会这样做。初级开发人员经常编写花哨的代码。您可以通过一行古怪代码和过于复杂的抽象来识别初级开发人员。这是初级开发人员炫耀的方式,为了让其他开发人员知道他们的代码有多好。这是错误的。

初级开发人员专注于计算机方面的代码,而忽略了人的方面。

高级开发人员是什么样?

当查看高级开发人员的代码时,您可能会想:就这些吗?其余的代码在哪里?高级开发人员通常编写简单、直接、甚至可能是愚蠢的代码。这是开发人员在编程时拥有的最大品质之一。高级开发人员遵循KISS原则:保持简单、愚蠢。

高级开发人员以不同于初级开发人员的方式考虑他们的代码。高级开发人员编写代码将考虑可维护性和可伸缩性。这与初级开发人员的心态完全不同——高级开发人员考虑的是使用代码的人,而初级开发人员只考虑让代码在计算机上工作。

不至于编程技能

除了编程技能以外,还有一些其他的因素能够区分你哪种类型的开发者。

初级开发者,总的来说,做的是一些简单的或者影响较小的任务。ta们不会做任何架构设计。中级开发者也不会设计解决方案,ta们只是执行一些任务,与初级开发人员的不同之处在于,ta们在较少的监督下就可以完成一些相对常规的任务。高级开发人员可以完全独立地开发应用程序。

这并不意味着高级开发者在开发过程中没有任何问题。每个开发人员每天都会遇到很多问题,这是无法避免的。即使对于高级开发人员来说也一样。

区别在于高级开发人员知道如何问正确的问题以及如何处理这些问题。当涉及到相对常规的任务时,中级开发人员可以问正确的问题,但是在更复杂的任务上需要帮助。

高级开发人员永远不会迷失方向,并且知道如何用正确的操作跟踪问题。这并不意味着高级开发人员不能向其他开发人员寻求帮助。有时候最好的方法就是向其他在该领域有经验的开发人员寻求帮助。

一般来说,只要是不涉及到需要深入知识的高复杂度的任务,中层开发人员也应该能够提出正确的问题,

您不应该期望一个初级开发人员能够立即提出正确的问题。由于初级开发人员缺乏经验,他们需要更有经验的开发人员的指导。初级开发人员需要获得必要的资源,或者在正确的方向上大力推动。

进入下一个级别

作为开发人员,我们都希望提升自己变得更优秀。但是,您可以采取哪些步骤来达到下一个级别呢?

初级到中级

由于缺乏经验,所以对于初级开发者来说重要的是去经历几次完整的开发周期。通过这种方式,您将遭遇大量陷阱并学习如何在下次避开它们。

在编码方面,初级开发者应该学习如何编写简单的代码。考虑下一个将要处理这段代码的人。您还应该学习如何调试,因为这将使您更好地了解过程中发生的情况。

此外,您应该熟悉最佳实践并了解架构,性能,安全性等。缩小达到中级开发者所需的知识差距。

中级到高级

中级到高级是很难的。一些开发者在自己整个职业生涯中一直都停留在中级水平。

高级开发人员知道什么地方可以偷工减料,什么地方永远不应该偷工减料。这些都是从过去的错误中吸取的教训。

如果你想进入高级水平,你必须准备好接受那些没人知道如何解决的任务。你应该知道的不仅仅是如何完成这项工作。

作为一名高级开发人员,您的工作还包括帮助经验较少的开发人员。当其他开发人员不知道如何做某事时,您是他们的后援。

高级开发人员掌握了他们的技术堆栈,这可能不会让您感到惊讶。不仅仅是编程技巧。了解你所在公司正在使用的所有工具和应用程序。

总结

初、中、高级开发者之间的区别并不仅仅在于其拥有多少年的经验。当然,可以肯定地说高级开发人员比初级和中级开发人员更熟练。但是知识并不是最重要的因素。

高级开发人员编写更加简明直接的代码,并且与初级开发人员具有不同的思维方式。但这不仅仅是编程技能的问题。知道该问什么问题以及如何跟进这些问题是至关重要的。而且只有资深开发人员,凭借他们丰富的经验,才知道如何在所有情况下做到这一点。

作为初级开发人员,如果想要提升,你应该专注于编写简单的代码并经历多个开发周期。要从中级到高级开发人员,您应该专注于学习,而不仅仅是修复日常任务。你应该愿意接受最困难的任务,并成为你的技术堆栈的主人。高级开发人员的另一个职责是为经验较少的开发人员提供后援。

最后,我想引用Martin Fowler的一句话:“任何傻瓜都可以编写计算机能够理解的代码。优秀的程序员编写人类能够理解的代码。”