18

皮蛋.png

前言

前段时间, 参加了腾讯的 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 & 录像

clipboard.png

希望对大家有所启发。

觉得内容有帮助可以关注下我的公众号 「 前端e进阶 」,掌握最新动态,一起学习成长!

clipboard.png


皮小蛋
8k 声望12.8k 粉丝

积跬步,至千里。