乐趣区

聊一聊初中高级工程师的区别

前言

前段时间,参加了腾讯的 TLC 大会,见到了很多大牛,也认识了很多有趣的朋友。

闲聊的时候就聊到了级别的问题,我也有一些想法,结合之前看到的一篇文章,在这里总结一下,顺便分享给大家。

正文

关于级别

我们知道程序员分 初级 中级 高级 ,这个概念,并 不是以工作年限作为分类依据 的。也就是说,级别和你工作多少年没有必然的联系

一个初级工程师可能工作很 多年 依然是初级工程师,也有的工程师,工作 短短两三年 ,就跻身 高级工程师 的行列。

这一切,都取决于你的 能力

不过也不是说高级工程师在各方面都是专家。一般来说,高级工程师比初中级的工程师具有更多的编程经验和技巧的。

但仅仅靠编程经验和技巧也是不够的。那说了这么久,区别到底是哪些呢?

别急,听我一一道来。

关于知识储备

显而易见的是,高级开发的英雄池更深,` 知识储备 ` 比初中级的更加丰富。比如 ` 架构设计 `,` 设计模式 `,` 自动化测试 `,` 性能相关 `,` 安全问题 `,等等都不在话下。如果初中级工程师想要缩小到高级之间的知识差距,可以从这些领域下手。遇到问题,知道用什么技能来解决,这一点很重要。但是仅仅知道上面提到的这几点也是不够的。知识储备并不是最大的区别,它只是其中的 ` 一个因素 `。

关于 Coding

代码是什么?


代码是一种我们和计算机和同事之间交流的语言。对计算机而言,经过编译的代码只不过是一堆 `0` 和 `1`.

代码写的好不好看,对计算机而言,其实没什么区别。

但是对于和你一起工作的同事而言,这点就很重要了。

在一个团队里,往往都是老司机开发核心功能,萌新修修 bug, 做一些比较简单的功能。这也是初级和高级的一个区别。中级介于初级和高级之间,是比较特殊的一个阶段。从经验来看,这是一个比较靠近高级的级别,主要和 ` 经验 ` 有关。

一个中级的开发,往往是开发过几个项目,具有一定的开发经验,踩过一些坑,并有一套自己的解决的问题的方法。

如判断是不是初级

初级开发,一般是那种经验不多的,刚毕业找到第一份工作的人。

这个阶段,往往专注于,代码能跑,不报错,能完成需求就完了。

编写简洁以东的代码其实不是一件容易的事。初级工程师不喜欢写这种代码,取而代之的是自认为‘炫酷’,‘高逼格’的代码。所以可以从一些奇怪的苗条代码,或者复杂难懂的抽象去识别。他们觉得这种代码写出来很酷,可以拿出来炫,这么想其实是不对的。

初级人员往往过于专注代码的功能性而牺牲了代码中人性的那一面。

高级开发是什么样的呢

高级开发写 简单,直接,有时候看起来甚至有点蠢的代码。

遵循一个原则: Keep it simple, stupid.

相比于初级,高级开发编写代码的时候会从不同的角度出发,比如 可维护性 拓展性 等。除去本身的功能之外,考虑的更多的是人性的那一面。

编码技巧之外的判断

除去代码,还有一些特征可以判断属于哪个级别。

往往在一个团队中,初级人员做的都是最简单的工作,或者影响面比较小的 task,不涉及架构设计的工作。

中级人员也是着重解决任务,不参与或者参与部分结构的设计。和初级不同的是,中级人员在做分配的任务的时候,不需要过多额外的监管或注意。

高级开发往往可以独自开发一个完整的应用。

不过高级也不意味着不会有问题,每个人每天都会遇到问题,高级也一样。

只不过区别在于,高级懂得如何正确的提问,如何正确的解决疑问。

中级也能正确的提问,但是在遇到复杂问题的时候,可能需要额外的帮助。

高级开发会始终把注意力集中在要解决的问题上,遇到新的疑问的时候,能作出正确的反应。不过这也不意味着不能向周围的同事求助,有时候最快捷的途径就是问问组里的人有没有处理过类似的问题。

初级开发经验没那么多,可能需要一些中高级开发往正确的方向上带一下。

如何往突破到下一级

初级到中级

初级最缺少的是经验。所以这一阶段,需要多做项目,多积累经验,遇到坑的时候知道怎么快速解决。

编码上,学习下如何编写简洁易懂的代码,这个可以多看看别人写的代码,可以参考 github 上的一些开源库,比如 redux 等。

也需要掌握一些 debug 的技巧。

如果有时间,也可以再熟悉一些最佳实践,比如架构,性能优化,常见的安全问题等。

弥补这些知识上的差距是跨越到中级的关键。

中级到高级

从初级到中级不是很难,但从中级到高级就要难得多。

一些开发者会这在这个阶段好多年,甚至一直呆在这个阶段。突破这个阶段不过需要实力,可能还需要一些运气。

而且一些问题的取舍,利弊的权衡,你也需要明白。

如果想要突破到高级,必须要做好的准备是,遇到一个困难问题的时候,别人都不知道怎么做,你要站出来接着,而且你还要知道这个事情该怎么解决。

作为一个高级开发,可能还会带带人,当他们遇到问题搞不定的之后,你能提供必要的指导。

另外,对于你是用的技术栈,必须是十分了解的,不仅仅是编码技巧方面。另外,熟悉你所在公司的一些工具,或者应用也十分重要,毕竟都是资源,懂得如何调动这些资源来解决你的问题也十分重要。

简而言之,高级开发就是要能 独当一面

结论

  • 初级,中级和高级开发人员之间的差异并非全部来自经验和年限。当然,可以肯定地说,高级开发人员比初级和中级开发人员更熟练,但知识并不是最重要的因素。
  • 高级开发,相比于初级开发,编码考虑的问题更全面。
  • 高级开发知道如何正确的提问题,以及如何解决问题。
  • 高级开发往往需要具备解决复杂问题的能力。

最后引用一句话:

” Any fool can write code that a computer can understand. Good programmers write code that humans can understand.”

最后

献上 TLC 大会 PPT & 录像

希望对大家有所启发。

退出移动版