[译]初级,中级,高级开发者间的区别

[译]初级,中级,高级开发者间的不同

原文链接:The Differences Between a Junior, Mid-Level, and Senior Developer
译文链接:初级,中级,高级开发者间的区别

初级,中级,高级开发人员不能仅仅通过开发年限来界定,可能存在初级开发人员比一个高级开发人员年龄大的现实。这时候只能依靠掌握的技能来做区分这三者。当然,这并不代表高级开发人员精于一切,但是,的确高级开发人员在技能掌握方面的确比初中级开发人员娴熟许多。然而,高级开发人员与初中级开发人员的区别并不仅仅体现现在编码技能上。

那么这三者间的区别到底是什么了?

知识背景

显然,高级开发人员相比初中级开发人员来讲,他们有更多的知识储备,这些知识包括但是不限于设计模式,架构,自动化测试,性能,安全等。对于一个初级开发人员来说,了解这些知识是一种弥补与中高级开发人员差距的有效方法。

对于开发者来说,了解事情是如何运作的很重要.但是仅仅了解这些仍然不能使你成为一名高级开发人员。知识储备并不是这三者间的最大区别,它仅仅是区分这三者的一个因素而已 。

写代码

不管大部分怎么想,写代码并不是我们与计算机沟通的过程。写代码是与人沟通并且指示计算机如何工作的过程。最后的结果是,代码被编译成二进制。

代码应该让未来参与维护的人看懂。一个从未接触过该代码的人可以很快进行新功能开发或者修复bug。这就是高级开发人员与初级开发人员的最大区别。

在这个对比里,我单独摘出中级开发人员。因为,就编码技能来说,中级开发人员处在一个灰色区域,它介于初级与高级之间。中级开发人员在编码技能掌握上可能更加倾向于高级开发人员。这主要与其开发经验有关,因为中级开发人员可能经历了至少一次从0-1的开发周期。他们从那些犯了很多简单错误,也从中学到许多。

如何识别初级开发人员

首先,初级开发人员是缺乏经验的。他们当中有些是刚毕业的大学生,刚开始他们第一份全职工作。初级开发人员的想法是让代码工作,在他们脑海里,能运行的软件和有些的软件是一样的。

其次,编写清晰的代码是有难度的,这也是初级开发人员不会去做的事情。他们写的代码很"玄",你可以从过于复杂的抽象类与古怪的代码里识别出初级开发人员。这是初级开发人员向其他开发人员炫耀他们的代码如何华丽的方式,但是不得不说这是错误的。

最后,初级开发人员更多关注于代码在计算机方面的运行情况,而忽略人的方面,比如可阅读性。

那什么是高级开发人员

首先,当你看到一个高级开发人员写的代码的时候,你可能会想:这就是所有代码吗?剩余的代码在哪里?高级开发人员会写出简单,逻辑清晰,甚至可能很愚蠢地代码。但是,在编程领域,这却是一个开发者能拥有的最大优秀素质之一。高级开发人员遵循KISS原则:保持简单愚蠢。

其次,高级开发人员对他们的代码考量也是不同于初级开发人员的。高级开发人员的代码可以看出他们对可维护性与伸缩性的思考,这完全不同于初级开发人员。高级开发人员更多考虑的是那些要维护这份代码的人,而初级开发人员只是考虑代码能在机器上运行。

不仅仅是编程技能

除了编程技巧之外,还有一些因素能帮你确认开发人员级别。

一般来说,初级开发人员,做最简单的工作或者做一些边缘任务。他们不参与架构设计。中级开发人员也不是方案设计,他们只实现功能。与初级开发人员相比,中级开发人员在接手任务之后会获得更少的监督。高级开发人员能够独立完成开发应用开发。

这并不代表高级开发人员不会遇到问题。每个开发者都会遇到问题,这点是不会变的。在这一点上,开发者间没有区别。而高级开发人员与初中级区别在于他们懂得如何正确提问和如何处理这些问题。中级开发能够正确提问,但是对于更复杂的任务,他们需要更多帮助.

高级开发不会迷失自己,并且他们知道如何正确的跟进问题。但是,这并不代表高级开发不会向其他开发人员寻求帮助。有时候,向相关领域有经验的人人需求帮助是最好的解决问题的办法。中级开发也能够准确地提出问题,只要他们获得任务并不是那些需要高深的知识背景的复杂任务。

你不该期待一个初级开发人员能够立即正确地提出问题,因为初级开发人员缺乏经验,需要有经验的开发人员的指导,也需要提供必要资源或者在正确方向的推动。

进阶

我们都希望提高自己,成为更好的开发者。但是我们如何进阶了?

初级到中级

由于初级开发没有经验,所以经历几个项目的开发周期很重要。这会让你遇到很多陷阱,同时你也会学会如何避免再犯。谈到写代码时,初级开发人员需要注意如何写简单清晰的代码,在写代码时候想想下个接手这份代码的家伙。初级开发人员也需要学习如何调试,因为调试会让你对运行过程有个更好的理解。

同时,你应该更熟悉那些最佳实践,并且学习架构,性能,安全这些方面的知识,这些都能让你缩小达到中级开发的知识差距。

中级到高级

首先,从中级到高级十分困难,有些开发者穷其一生仍然处在中级阶段。

高级开发人员了解哪些地方可以走捷径,哪些地方不能走捷径。这些都是从过去吸取的惨痛教训。

如果你准备向高级开发迈进,你得准备开始接手那些别人无法解决的任务,你应该对工作流程理解更加深刻。作为一名高级开发人员,指导缺少经验的开发人员也是你的职责。在他们不知道解决的时候,你能为他们指导。你也可能并不惊讶于高级开发人员掌握他们领域的技术栈,这不仅仅是编程的技巧,他们了解公司里应用的所有工具和正在使用应用。

结论

初级,中级,高级开发人员间的区别并不仅仅与工作年限有关。确实,高级开发人员比初中级开发人员更熟练。同时,知识储备也不是区分它们的最重要的因素.

高级开发人员能写出简单清晰的代码,以及保持一个与初级开发囧然不容的心态。这并不仅仅是关于编码技巧,掌握如何正确提问以及如何跟进提出的问题也是必要的.
而且,只有经验丰富的高级开发人员凭借他们丰富的开发经验,才知道在所有情况下做到这一点.

要成为初级开发,你应该关注写简单清晰的代码以及经历几个项目开发周期。而要从中级开发上升到高级开发,你应该专注学习而不仅仅是日常任务的修复。你应该主动承担艰难的任务并且在掌握你所在技术领域的技术栈。高级开发的另外一个职责是能为经验少的开发者提供帮助.

最后,我想引用Martin Fowler的话:"任何傻瓜都能写出计算机能理解的代码,但是优秀的程序员会写出人们能够理解代码"

禁止转载

本帖由系统于 1周前 自动加精
未进化的类人猿
讨论数量: 1
likunyan

由于初级开发没有经验,所以经历几个项目的开发周期很重要。这会让你遇到很多陷阱,同时你也会学会如何避免再犯。谈到写代码时,初级开发人员需要注意如何写简单清晰的代码,在写代码时候想想下个接手这份代码的家伙。初级开发人员也需要学习如何调试,因为调试会让你对运行过程有个更好的理解。

这个说得很好

1周前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!