初中高级工程师的区别?

更新日期: 2019-08-25阅读: 3.9k标签: 区别

关于级别

我们知道程序员分 初级,中级, 高级, 这个概念, 并不是以工作年限作为分类依据的。 也就是说, 级别和你工作多少年没有必然的联系。 一个初级工程师可能工作很多年依然是初级工程师, 也有的工程师, 工作短短两三年, 就跻身高级工程师的行列。

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

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

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

别急, 听我一一道来。


关于知识储备

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


关于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.”

原文:https://segmentfault.com/a/1190000020240960

链接: https://fly63.com/article/detial/5042

AR / MR / VR / XR有什么区别?

VR能让人完全沉浸在虚拟环境中;AR能创建一个叠加在虚拟内容的世界,但不能与真实环境交互; MR则是虚拟与现实的混合体,它能创造出可以与真实环境交互的虚拟物体。最后,XR则是包括三种“现实”(AR,VR,MR)的术语。

详解call bind apply区别/使用场景/es6实现/es3实现

call,apply,bind的区别:apply接收数组 func.apply(obj, [arus]),call一连串参数 func.call(obj, param1, param2....),bind返回一个函数 func.bind(obj,param...)(parms...)

理解screenX,clientX,pageX,offsetX,pageXoffset的区别

event.screenX、event.screenY鼠标相对于用户显示器屏幕左上角的X,Y坐标。标准事件和IE事件都定义了这2个属性,event.clientX、event.clientY鼠标相对于浏览器可视区域的X,Y坐标

css之word-wrap和word-break的区别

对于英文单词,如果有一个连写且长度很长的英文单词,在第一行显示不下的情况下,浏览器默认不会截断显示,而是把这个单词整体挪到下一行。但是当整体挪到下一行还是显示不完全该肿么办呢?

url 、src 、href 的区别

URL统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL

Js插件、 组件、类库、框架的区别

框架和类库等概念的出现都是源于人们对复用的渴望。“不要重复发明轮子”,成了软件界的一句经典名言。从最初的单个函数源代码的复用,到面向对象中类的复用(通常以类库的形式体现)

*.min.js跟*.js的区别

js是JavaScript 源码文件, .min.js是压缩版的js文件。减小体积 .min.js文件经过压缩,相对编译前的js文件体积较小,传输效率快。防止窥视和窃取源代码

PTN与SDH的区别?

SDH是基于TDM技术,主要用于传输语音,此外采用GFP封装来传输IP包,物理介质为光纤。PTN是采用DWDM技术,主要用于传输IP包、以太网帧,此外采用MPLS-TP技术来实现PWE3伪线

html中src与href的区别

写代码的时候就经常把这两个属性弄混淆,到底是href还是src,href表示超文本引用,用在link和a等元素上,href是引用和页面关联,是在当前元素和引用资源之间建立联系,src表示引用资源,表示替换当前元素,用在img,script,iframe上

Js绑定事件的两种方式的区别

运行后发现,点击后src没有变化,调试发现,这里this是window对象,而不是img标签对象。顿时感觉有点迷惑,因为以前绑定事件中,拿标签属性都是用的this,怎么这里不对了?

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!