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

皮蛋.png

前言

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

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

正文

关于级别

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

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

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

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

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

别急, 听我一一道来。设计模式

关于知识储备

显而易见的是, 高级开发的英雄池更深, `知识储备`比初中级的更加丰富。 好比`架构设计`,`设计模式`, `自动化测试`, `性能相关`, `安全问题`, 等等都不在话下。

若是初中级工程师想要缩小到高级之间的知识差距, 能够从这些领域下手。


遇到问题,知道用什么技能来解决, 这一点很重要。 可是仅仅知道上面提到的这几点也是不够的。 

知识储备并非最大的区别, 它只是其中的`一个因素`。

关于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 & 录像

clipboard.png

但愿对你们有所启发。

以为内容有帮助能够关注下个人公众号 「 前端e进阶 」,掌握最新动态,一块儿学习成长!

clipboard.png

相关文章
相关标签/搜索