众所周知,软件工程师的职位有很多种,但是却很少人能够把它的整个分类体系搞清楚,例如到底有哪些职位算的上是软件工程师?每个职位又都需要哪些技能?
如果能提前把这个搞清楚的话,对找工作还是有很大帮助的。
所以我试着按我自己的理解画了一副软件工程师分类体系图以及各职位需要掌握的基本技能,这里介绍给大家。如有偏差,请谅解和告知。
先上图。
(该图是本文的重点,希望大家点开来仔细看下)
1. 上图说明
注意上图不止有软件工程师,还有固件工程师、硬件工程师。把它们包含进去的原因是希望大家从计算机体系结构上去试着理解不同的研发职位。
上图可能只是研发职位的冰山一角。
因为很多公司都有研发职位,众多研发职位中每个公司还有不同的细分,而且名称也不尽相同,职责可能会互相跨越。
上述职位不排除包含关系。
例如 Windows 开发人员,可能既要做移动端开发也要做 PC 端开发。web 前端和后端可能都被 web 全栈程序员搞定了。
还有就是,上面描述的各职位所需技术只是当前职位最基本的技能,可能所在的公司会要求你掌握更多的其他技能。
2. 互联网企业与传统 IT 企业
互联网时代中,互联网公司风头正劲,跟传统 IT 公司比,吸引了更多人的关注。
互联网企业有哪些呢?
国外的: Google,Facebook,uber, airbnb ...
国内的: BAT, 京东,滴滴,摩拜单车 ...
传统 IT 企业有哪些?
国外的:Microsoft, Intel,IBM,Cicso, 高通 ...
国内的:中国移动,中联通,中科xxx, 金蝶,用友 ...
比较它们的目的是什么?
我想说的是,从中可以看出,互联网公司多半做的是应用层的软件。虽然目前来看,像 Google,百度,阿里都在涉及智能硬件,但是别忘了,它们的起家都是做应用软件。
而传统 IT 企业涉及了从硬件到软件整个研发体系。
所以,上图中的整个研发体系,传统 IT 都有涉及。但是互联网差不多只包含了 App 开发,下面灰色的模块是排除在外的。
但是需要注意的是,随着人工智能与互联网热,这一点在悄悄发生变化。如今,互联网公司也开始做硬件了,传统 IT 公司也在向互联网转型靠近,就像微软一直在试图接近移动市场一样。
3. 软件工程师和研发工程师
如果你没搞清楚软件工程师和研发工程师的区别,看看下面。
软件工程师只是研发工程师队伍中的一例。
同样注意的是,下面职位也有可能交叉。例如嵌入式工程师可能要做硬件也有可能做系统。
欢迎关注我的微信公众号:红猴子老师
(这是一个工科生涨知识的号,公众号的内容有CS\EE技术, 职场以及经验谈,知乎专栏文章会首发于我的微信公众号,希望能给迷茫和困惑中的 IT 朋友一些启发与帮助,欢迎围观)