工作 3 年就是高级,这就是差距啊!
作者:skura,来源:雷锋网(leiphone-sz)
作为程序员,你身边的同事有工作 6 年的中级程序员,也有工作 3 年的高级程序员。你可能会很疑惑,初级、中级和高级开发人员之间的差异究竟在哪里?
你是初级、中级或高级开发人员,不仅仅取决于你的编程经验有多少年。初级开发人员甚至可以比高级开发人员年纪更大。归根结底都是由技术决定的。这并不意味着高级开发人员必须是全栈的专家,但可以肯定地说,高级开发人员远比初级和中级开发人员熟练。
但是,高级开发人员与中级和初级开发人员的区别不仅仅在于编码技能。那么他们到底有什么区别呢?
知识
显然,高级开发人员比初级和中级开发人员拥有更多的知识。了解设计模式、体系架构、自动化测试、性能、安全等是初级开发人员与中级和高级开发人员缩小知识差距的好方法。
了解软件开发中应该如何做是很重要的。但是仅仅知道这些东西并不能使你成为一名高级开发人员。知识储备并不是开发者之间最大的区别,它只是其中一个因素。
编码
不管大多数人是怎么看待编码的,但它并不只是与计算机的通信。编码是与人通信和指导计算机工作。最终,代码被编译成 0 和 1。
代码必须对将来使用它的其他开发人员来说容易理解。一个以前从未见过这些代码的新团队应该能够运行代码并处理新特性或进行错误修复。这就是初级开发人员和高级开发人员之间最大的区别所在。
在这个比较中,我将不考虑中级开发人员,因为中级开发人员在编码技能方面是一个灰色地带。显然,它介于初级和高级之间,可能更倾向于高级。这主要与经验有关,因为中级开发人员可能至少经历过一个完整的开发周期。他们犯了许多最简单的错误,并从中吸取了教训。
如何辨别初级开发人员?
初级开发人员缺乏经验。有些人刚刚毕业,开始了他们的第一份全职工作。初级开发人员的心态通常是让代码工作就好。可以正常工作的软件和优秀的软件在他们看来是相同的。
编写简洁的代码是困难的,这是初级开发人员做不到的。初级开发人员通常会编写花哨的代码。你可以通过一行古怪的代码和过于复杂的抽象来识别初级开发人员。初级开发人员往往会用这种方式炫耀自己的技术,试图让其他开发人员知道他们编码有多好,这是错误的。
那么高级开发人员呢?
当查看高级开发人员的代码时,你可能会想:这就是全部吗?剩下的代码呢?高级开发人员编写简洁、简单甚至是愚蠢的代码。这是开发人员在编程方面所能具备的最重要的品质之一。高级开发人员遵循 KISS 原则:保持简单,愚蠢(Keep it simple, stupid)。
高级开发人员和初级开发人员思考代码的方式是不同的。高级开发人员编写代码的时候将考虑可维护性和可扩展性。这与初级开发人员的思维方式完全不同:高级开发人员考虑的是必须使用代码的人员,而初级开发人员只是考虑让代码在计算机上工作。
不仅仅是编码技能
除了编码技能,还有其他一些因素可以告诉你他们是什么类型的开发人员。
一般来说,初级开发人员执行最简单的任务或影响较小的任务,他们不做任何架构设计。中级开发人员也没有设计解决方案,他们只是执行任务,与初级开发人员的不同之处在于,只要他们被分配到相对常规的任务,他们就可以在较少的监督下完成这些任务。高级开发人员可以完全自行开发应用程序。
这并不意味着高级开发人员一路上没有任何问题。每个开发人员每天都有很多问题,这点不会改变,对于高级开发人员来说也是如此。
其中的区别在于,高级开发人员知道如何提出正确的问题以及如何处理这些问题。中级开发人员可以在相对常规的任务中提出正确的问题,但在更复杂的任务中需要帮助。
高级开发人员永远不会迷路,他们知道如何正确的行动来跟进问题。这并不意味着高级开发人员不能向其他开发人员寻求帮助。有时候,最好的方法就是向在该领域有经验的其他开发人员寻求帮助。
中级开发人员也应该能够提出正确的问题,只要他不被分配需要深入知识水平的高度复杂的任务。
你不应该期望初级开发人员可以直接提出正确的问题。由于初级开发人员缺乏经验,他们需要经验更丰富的开发人员的指导。初级开发人员需要获得必要的资源或被大力推向正确的方向。
进入下一个层次
我们都想提高自己,成为一个更好的开发人员。但是你该如何行动来达到下一个层次呢?
初级到中级
由于初级开发人员缺乏经验,因此经历几次完整的开发周期是很重要的。在这个过程中,你会掉进很多陷阱中并学会如何避开它们。
在编码方面,你应该学习如何编写简单的代码。想想下一个要处理这段代码的人。你还应该学习如何调试,因为这将使你更好地了解程序运行过程中发生的事情。
此外,您应该熟悉实践知识,了解体系架构、性能、安全性等,缩小达到中级所需的知识差距。
中级到高级
从中级到高级可能相当困难。一些开发人员将在整个职业生涯中都停留在中级水平。
高级开发人员知道哪些可以做哪些不应该做,这些都是过去犯过错误积累的教训。
如果你想进阶到高级,你必须准备好承担那些没有人知道如何解决的任务。你知道的应该比如何完成工作多得多。
作为高级开发人员,你工作的一部分是帮助经验不足的开发人员。当其他开发人员不知道如何做某些事情时,你是他们的后备力量。
高级开发人员有他们自己的技术栈,而不仅仅是编码技巧。你需要了解在所在公司中使用的所有工具和应用程序。
结论
初级开发人员、中级开发人员和高级开发人员之间的区别并不取决于你工作了多少年。当然,可以肯定地说,高级开发人员比初级和中级开发人员更熟练,但知识不是最重要的因素。
与初级开发人员相比,高级开发人员编写的代码更简洁,并且具有不同的思维方式。但区别不仅仅是编码技巧,知道要问什么问题以及如何跟进这些问题是至关重要的。只有拥有丰富经验的高级开发人员才知道如何进行开发,不管是在什么情况下。
作为初级开发人员如果想要成长,你应该专注于编写简单的代码并经历多个完整的开发周期。要从中级开发人员进阶到高级开发人员,你应该专注于学习,而不仅仅是完成固定的日常任务。你应该主动承担最艰巨的任务,成为技术小组的主管。高级开发人员的另一个职责是为经验不足的开发人员提供帮助。
最后,用 Martin Fowler 的一句话作为结尾:「任何傻瓜都能写计算机能理解的代码,优秀的程序员编写人类能够理解的代码。」(Any fool can write code that a computer can understand. Good programmers write code that humans can understand)
关注Java技术栈微信公众号,在后台回复关键字:Java,可以获取一份栈长整理的 Java 最新技术干货。
最近干货分享
点击「阅读原文」加入栈长的战队~
关注微信公众号福利!!!
回复关键字「666」获取一份最新 Java 架构资料,你要的都有!
回复关键字「Java」获取JVM, 多线程等Java技术系列教程;
回复关键字「spring」获取Spring, Spring Boot, Spring Cloud教程;
回复关键字「架构」获取分布式、微服务、架构、高并发等系列干货;
回复关键字「面试」获取各种 Java 面试题及答案、面试实战经验;