其他分享
首页 > 其他分享> > 嵌入式是坑?别闹了

嵌入式是坑?别闹了

作者:互联网

整合自网络,观点仅代表作者个人观点。

互联网向来流传嵌入式是大坑的说法,大部分人眼里的嵌入式:1、工资低的不像话,2、小学生干的活,3、学的要死要活的,付出很多,最后付出得不到回报,还不如趁早转互联网。

据Kerr Wang表示,上述观点里面初看有那么一点道理,但是很多人从来就不想想,现在自称是嵌入式工程师的,有几个具有正儿八经的完整的知识体系的,大部分人眼中认为会玩点ARM,会点C语言,甚至连指针都用不熟的就是嵌入式工程师了。

那些个几天嵌入式培训课程上完,一点原始的技术积累都没有,能拿着人家弄好的内核镜像烧着玩,拿着人家的程序也能改几行,大部分这样的人实际上只是搬砖的,拿低薪也是正常的。

不过话又说回来了,现在很多小公司也只需要这样的人打打下手的也就行了,主要是开发平台越来越先进,开发的成本越来越低,而且小公司压根就不需要保证性能和可靠性,直接使用芯片提供商或者硬件提供商的评估板评估代码改改就能用,并不需要去了解架构这些东西,只需最后的东西能工作就行了,你觉得这些工作需要什么水准的人?我觉得这样的工作让小学生去干,确实是可以的。

但是嵌入式开发真的就这么简单吗?我一个师兄在华为无线部门,上次聊了会天,他们给设备写代码增加功能,代码功能一加再加,但是要求编译出的二进制文件体积和程序运行占用的内存不能比之前的代码大,因为新代码要兼容旧设备,旧设备的flash和ram就那么大,你增加了体积,旧设备就没法用了,所以就得不断的优化,甚至得到汇编级别,寄存器级别去优化。这要是换在小公司或者初创的公司的话,没事,代码体积增大了,换大存储大内存完了咯,这样他们需要的就不是嵌入式工程师了,或者只需要水平很低的所谓的工程师了,工资拿不高也是正常的。

这个时候有人就会说,那些大公司进不去啊,那没办法,自己水平低又不愿意突破还天天抱怨那又有什么办法呢?但是有人会说,那些初创的互联网公司要的人水平也不咋地,随便培训几天工资就很高了。这个是真没办法,这个是由经济情况决定的,互联网经济下热钱多,投资人不差钱,自然给的就多,这个不是技术水平决定的,反观嵌入式开发,实体经济下滑,真正能开起大价格的只有大公司,从这个角度来看,嵌入式工程师的工资是很符合经济规律的。互联网公司的大牛的工资也很高啊,所以就得出结论,不论是嵌入式还是互联网,真正能称得上是工程师的工资都不会低,你看今年海康的嵌入式开发就比软开高了1K。工资差异大的,只是那批打下手的,这个是经济情况决定的,但是三十年河东三十年河西,谁敢保证互联网经济就不是一个泡沫呢?到那时,只剩下大公司能够运营,情况你就可想而知了。仔细研究一下你就会发现,嵌入式的公司大多都是服务提供商,提供的是通信,基站等等行业,这些行业永远都是不会垮的,所以在经济危机当中,嵌入式行业不见得就是一个坑,中国可以没有那些创业的电商,但是绝对不能没有华为,中兴这样的公司。另一方面,现在智能硬件火起来了,你看各种智能家居,各种无人机,VR都需要嵌入式的支持,今年网易不是还有招硬件开发的么?到这里,搞嵌入式的是不是心情爽了一点。总之一句话,不论哪一行,互联网还是嵌入式还是其他行业,你要想不被淘汰,只需要一个字,牛,牛就行了。

说嵌入式“坑”仅仅是一个导火索,具体也发生了这样的现象:

现象1:

想从事嵌入式方向的学生,大部分是ee专业,学生基础不扎实。说嵌入式是坑的大部分人有以下特征:1、死磕单片机,然而单片机只是工具,重点应该放到模电数电等基础课程上,但这些人大部分基础很不扎实,非常浮躁,沉迷于校园各种高大上的制作和项目,对原理的思考甚少。2、大部分所谓的项目,是在重复劳动,驱动大部分来自网上,很少有人能看着芯片手册编程。

在本专业中,单片机被过度神话,尤其在部分院校,单片机被看作是救命稻草的存在。仿佛学好单片机就能走遍全天下,学不好连工作都找不到。

Kerr Wang表示,这个是当前的教育环境与生产环境脱节导致的,体制导致的东西,谁都没办法的。尽管学校大搞产学研,但是都是假的,当年嵌入式课的时候,老师一直在那读PPT,有些关于架构和编程的东西还讲错了,嵌入式实验课的时候,第一节课发一份pdf文档教大家ADS软件是怎么用的,这个软件ARM公司当时都不再提供支持了,我的Win7电脑装都装不上。第二节课的时候每人发一块板子,我记得是OMAP138的,给了一个bin文件,烧进去看看现象,代码都没开放,这叫上课,这TM在逗我,不过我也不需要那些个实例代码,因为我自己也可以写,成功装个逼,要不是先前自学了点,还真被忽悠的一愣一愣的,觉得嵌入式开发就是拿着bin文件烧着玩。

据另一位网友表示,电子信息专业的方向大概有:

1、数字电子线路方向。从事单片机(8位的8051系列、32位的ARM系列等)、FPGA(CPLD)、数字逻辑电路、微机接口(串口、并口、USB、PCI)的开发,更高的要求会写驱动程序、会写底层应用程序。单片机主要用C语言和汇编语言开发,复杂的要涉及到实时嵌入式操作系统(ucLinux,VxWorks,uCOS,Windows CE等等)的开发、移植。大部分搞电子技术的人都是从事这一方向,主要用于工业控制、监控等方面。

2、通信方向。一个分支是工程设计、施工、调试(基站、机房等)。另一分支是开发,路由器、交换机、软件等,要懂7号信令,各种通信相关协议,开发平台从ARM、DSP到Linux、Unix。
3、多媒体方向。各种音频、视频编码、解码,mpeg2、mpeg4、h.264、h.263,开发平台主要是ARM、DSP、windows。
4、电源。电源属于模拟电路,包括线性电源、开关电源、变压器等。电源是任何电路中必不可少的部分。
5、射频、微波电路。也就是无线电电子线路。包括天线、微波固态电路等等,属于高频模拟电路。是各种通信系统的核心部分之一。
6、信号处理。这里包括图像处理、模式识别。这需要些数学知识,主要是矩阵代数、概率和随即过程、傅立叶分析。从如同乱麻的一群信号中取出我们感兴趣的成分是很吸引人的事情,有点人工智能的意思。如雷达信号的合成、图像的各种变换、CT扫描,车牌、人脸、指纹识别等等。
7、微电子方向。集成电路的设计和制造分成前端和后端,前端侧重功能设计,FPGA(CPLD)开发也可以算作前端设计,后端侧重于物理版图的实现。
8、其他方向。比如音响电路、电力电子线路、汽车飞机等的控制电路和协议。

其中方向1、2、3涉及单片机或嵌入式芯片的开发,而且单片机也是电子信息工程所有学科中最简单的一门课程了,不会单片机我都不好意思说自己是EE出来的了。所以,说单片机是EE本科生找工作的救命稻草,也不奇怪。更进一步的,我认为,以单片机为核心的电子系统设计才是EE学生的重中之重。这方面还有相关的比赛了:电子设计大赛和单片机设计大赛。(当然电赛有些题目并不是单片机为核心而是辅助)。

现象2:

害怕跨专业。从大部分学生的经历来看,从事的方向应为嵌入式软件,但因为专业的缘故,经常给自己冠名以嵌入式硬件工程师,因为害怕脱离本专业。结果,两边都学的不精。本专业的电路基础,模电数电,信号与系统,高频电路等学的非常一般。而软件方向的,编程语言,数据结构,操作系统等根本没有系统学过,冠冕堂皇称之,在项目中学习就可以了。从很多人经历来看,不懂指针,不懂数据结构操作系统,就开始上手linux。因而校招中,软件方向因数据结构等课程不过关,笔试被残忍淘汰,电路设计因为学校没有很好的研究环境更是不堪一击。于是发出了嵌入式要完,我学的那么用功,依然找不到好工作等言论。

同时,没有上升到linux,在win裸机中打转,板子的bootloader甚至没听过,对自己的开发平台一无所知。

Kerr Wang表示,这是自己的问题了,其实很多人都知道问题在哪了,就是不去做不去改啊,老西医就要说一句了,别治了,已经治不好了,没救了,等死吧。

本科阶段是打基础的时候,广而学之,这是很重要的,开阔眼界,串联各个技能树和知识体系最重要的阶段,培养自学能力和查找资料能力最重要的时候,大一大二的时候就是培养这个能力的,这个时候很多东西自己都要有个概念,什么叫有个概念,就是这个东西你知道名词,你知道它是干什么,但是可能对细节不了解,这个没关系的,当你遇到一个任务或者需求的时候,因为你知道每个东西是干什么的,你就知道用什么东西去做,至于细节上怎么去操作,查啊,网络这么方便,至于怎么查,这个时候就是名词的作用了,这个才是你大一大二甚至大三上学期真正应该掌握的能力了,后面的时间就是不断的深化和实践。

不要觉得本科的理论课程不重要,记住啊,是理论课程,你应该清楚理论课程都是在大二的时候结束的吧?他们的目的是什么,目的就是通识,需要你去掌握概念,你要是现在问我,小信号放大怎么实现,我不一定马上就能答得出来,但是我可以去百度三极管,静态工作点,直流通路,交流通路,小信号模型,运算放大器,同相放大,反相放大这些东西了,很快就可以给你一个电路,这就是概念的重要性,但是如果你不知道三极管这个名字或者你也不知道三极管的作用,你告诉我,你拿什么关键词去查,关键词理不理解?当然,你要是够聪明,直接查放大器就行了,当然这里只是举一个例子而已,不必当真。前一段时间啊,由于一定的需要,去看了一下《数字信号处理》和《现代谱估计》里面的AR模型,伯格算法,时频域分析,为什么呢?因为我知道要这么干啊,卧槽,看一下还真TM有用,当然啦,这几门课当年都是学过的,我知道要这么干,所以我就去看了AR估计,深入了解了一下细节,然后去吹牛逼吹得很是牛逼啊,要是不知道这些个概念啊,这个牛逼啊,它就吹不起来了……

所以,对于这种现象,最重要的能力不是你会写几行代码,会玩点Linux,而是一个完整的体系,这个体系搭不起来,都是扯淡的。软件工程师也要懂一点硬件啊,硬件工程师也要懂一点软件啊,不是说精通,但是至少知道概念啊。至于这个能力怎么培养,我也不知道,我能怎么办,我也很绝望啊。我可以猜出来,有人会说,我学校不咋地,学校软硬件设施跟不上,我该怎么办?我也不知道啊,我能怎么办,我也很绝望啊,但是我只知道认真学就对了。不要觉得,其他学校就能怎么样,马克思主义告诉我们,“人的主观能动性是很重要的”,但是事实又告诉我们,“空谈误国,实干兴邦”,所以还是赶紧干活去了,哎,我能怎么办?我也很绝望啊……

现象3:

少部分人声称,学好了也没什么用,普通人干10年,最多就20w,和互联网差太多,而且招的人少。

据网友表示,这些少部分人的观点,「普通人」——估计指的是普通的本专科生,研究生估计不在这范围内(当然你们研究生硬要说自己也是普通人我也没办法~)。所以,嵌入式三年经验工程师,12K月薪,一年算它发14个月的工资。12K乘以14等于16.8W,好像和20W有点差距,以后随着工作经验增长,也可以达到年薪20W了。985研究生,月薪14K,14个月,是19.6W,差不多了。毕业后就能达到20W,很不错了。

但是这么高的工资,也需要个人的长期努力和一定的机遇。

另外从调查来看,嵌入式人才其实也供不应求。嵌入式ARM曾经发布,《从事嵌入式行业年薪有多少,你和高薪究竟差了哪些东西?》,其中从事嵌入式行业年薪相较其他行业来说,也具有较为客观的薪资水平。

现象4:

需要学习的东西多,如果是做项目需要学习,会拉长项目周期。

据知乎阏男秀表示,对比于互联网,「一个熟练的前端的成长周期大概是两年」,我也认同这个观点。CS专业学生大学四年里认真专研前端技术,本科毕业后是有可能进入BAT的。而EE,我大学时的德高望重的老教授还建议我们,我们这个专业(电子信息工程)去考研比较好。而后台,在我眼中,Java是目前最好就业的,有的人花几个月学会了Java的SSH框架,就马上去找工作了(小学生干的活[doge脸])。

不过其实后台开发也形成了一个成长体系,复杂度不亚于嵌入式成长路线。

主要原因还是在于「嵌入式」这门技术涉及范围太大太多太广泛,以至于「此嵌入式非彼嵌入式」,有定义模糊、定义广泛之嫌。

嵌入式这个行业还是很不错的,这是一个要运用到电子和计算机知识的领域。要在嵌入式领域里如鱼得水,一个必要条件是深刻理解计算机组成原理(或微机原理),还有也要熟悉各种开发工具、测试工具,熟悉操作系统、网络通信等。

当然,14年培训机构大肆宣传嵌入式,其实也有被炒作之嫌,不过年轻的时候谁没有自以为是,自认为仅凭短时间的努力就可以学好嵌入式,找到高薪工作,走向人生巅峰,其实还是要踏踏实实走。

另外,我认为本科毕业的和研究毕业的绝对不可相提并论——平台和视野不同,还有深度。

本科四年大都是打基础,广泛学习的阶段,毕业出来后可能对自己的专业领域略懂皮毛,或稍微深入了解过某一点,四年时间里不可能就完全熟悉了嵌入式领域的所有内容。毕业后肯定还需要在某方向加深学习,或者多做项目积累经验,很多时候会接触到以前完全没有接触过的嵌入式技术!这就是所谓的坑。没有一定的项目经验,得不到高工资,这就是所谓的坑。做硬件总会烧坏某些东西,做电路板不小心炸了电容,或者因为电容放电电到了自己,这也是所谓的坑。

而研究生,至少在某一方面深耕了两年或三年,在这两三年间挖坑无数也填坑无数,在技术上,视野及所处的平台肯定要比本科生高一个层次,学识深度肯定要比本科的深。很多东西别人认为是坑的在自己眼中则完全不是。这个时候已经具备了大神的身形。出来找工作身价自然就高。

如果真的喜欢嵌入式的或想进嵌入式行业的(特指嵌入式Linux级别而不是MCU级别),一读研,再花两三年时间磨练自己的技术;二如果不读研就去嵌入式Linux公司做个两三年四五年,这个时候也基本熟悉嵌入式是怎么回事了。

标签:这个,工程师,嵌入式,单片机,电路,开发,别闹
来源: https://blog.51cto.com/15057820/2566512