01
问题
首先确认下,我们这里讲的单片机主要是指51、STM32、MSP430、PIC、LPCxx等各种单片机开发工作。而嵌入式主要是指嵌入式linux软件开发,也就是硬件上基于嵌入式ARM、MIPS等平台,软件上基于linux系统的驱动开发、应用开发等工作。
围绕单片机和嵌入式的经常被问及的问题有2个:
一个是针对有意入行的新人(尤其是大学生),经常问我到底应该学单片机还是学嵌入式?我应该找单片机工作还是嵌入式工作?我想做linux驱动然而只找到一个STM32开发,那我去不去?
另一个是针对多年(一般2-10年)单片机老工程师,在多种压力(工资不涨、感觉自己能力无法提高、找不到更好机会跳槽、中年危机等)下痛苦思考,我是不是应该学嵌入式?我继续做STM32还有前途吗?我怎么才能打破现在的僵局人生再跃迁一次?
02
影响薪资和职业发展的关键
先不说你怎么选,怎么办?我们先common的说一下影响个人薪资和职业发展的重要因素。我们琢磨来琢磨去不就是为了职业发展更好,薪资更高吗?
短期来看,影响个人价值的一个重要因素是行业。雷布斯有一句名言:站在风口上,猪都会风。所以说行业对人的影响是很大的,你要是刚好站在了风口上就是自己真的蠢的和猪一样,真的也能飞。所以古人也说了:男怕入错行。
但是问题是行业好坏是你自己无法决定的,这个真的很重要。很多人没意识到这点,总觉得自己能运气好,能踩对点,殊不知都当了韭菜。尤其现在社会变化太快了,你根本很难反应,所以靠选对行业来实现个人价值增长,就和短线炒股想暴富一样,最后肯定是“天台见”。
记住结论:影响你薪资的外部因素就是行业,但是不可控。
长期来看,影响个人价值的还是自身素质。而且这个是可控的,可自我维护的。那什么是自身素质?知识、技能、认知水平、习惯、意志、个人追求等。
知识是最低要求,如果知识都不具备就是文盲,根本没有竞争资格。技能是稍微上一个台阶的东西,技能让你在某个行业可以建立竞争力。认知水平是更上一个台阶的东西,让你开始思考和认知世界。后面的习惯意志和个人追求是一个人自我觉醒后真正能自律,能自我驱动,能为了理想去奋斗的支撑力。
90%的人的人生其实都在前3个阶段,甚至是前2个阶段。至少当你在拿一份薪资打一份工,或者做个小生意谋生的时候,只需要前两三个阶段的内容。而后三个素质是你开始创业,开始试图带领一批人实现自我理想时才需要的。
记住结论:影响你薪资的自我因素,主要就是你的知识和技能,外加少量认知。
03
新手应该选择单片机还是嵌入式
如果是一个新手,应该选择学单片机还是嵌入式呢?这个问题并没有唯一标准答案。
为什么?因为所谓的“新手”、“零基础”等描述太模糊了,根本无法描述一个人。清华大学电子系大一新生也是零基础新手,某二本或者专科电子系大一新生也是零基础新手,这两个人做选择能一样?
所以不要怪我不直接给你答案,你想让我帮你做决策,至少你得认识我,我得知道你什么情况才行啊。你生病了不去医院不做检查医生怎么知道给你开什么药?
那怎么自我诊断呢?其实也不难。
假如你基础不错,学习能力挺好,也能控制住自己主动学习,而且离找工作还有一年或以上(至少也得大半年),那你可以考虑直接学习嵌入式。因为你的起点和动能是足够的,直接学习嵌入式能给自己更好的行业基点,所谓一步早步步早。
假如你基础一般,学习能力和理解能力也一般,而且学习中经常控制不了开小差,或者你已经几个月不到一年就要找工作了,压力迫在眉睫,那我建议你先学单片机了。因为单片机确实入门难度小一些,而且工作岗位相对多一些,岗位对人的要求也低一些(同样的薪资起点也低一些......),所以你先学单片机至少胜算多一些,找到工作概率也高一些。
所以说,到底是学单片机还是嵌入式,其实关键在于你自己的自身情况,而不是行业情况。如果你考虑问题时只分析外在,不管内在,那你也太有自信了吧?
04
单片机做了多年要转嵌入式吗
这还用问?肯定是立刻赶紧马上开始学嵌入式啊,quickly,quickly,fast!!!
注意啊,我说的是开始学,不是转。学的意思是学习嵌入式知识,掌握嵌入式开发技能,让自己具备去做嵌入式项目的能力,最好能积累到实际经验。而转的意思是公司内部转岗或者跳槽找新的嵌入式linux软件开发(驱动开发或应用开发)的工作。
学是学,转是转。学是为转积累能量,积累资本。而转是先学了先有了能力,再伺机而动,找到好机会纵身一跃。
注意抓重点,重点就是要先学才能转。
经常有人问我:老师,我做单片机好几年了工作也没啥意思,也感觉不到进步,想转嵌入式又没有路子,越来越焦虑,怎么办?
我心想你真是活该。社会有责任有义务给你提供路子让你转啊?那你娶不到老婆是不是还要国家给你分配一个?你想娶老婆首先要做的肯定是去相亲啊,你都不相亲竟然还想直接弄一个老婆,还说没路子?这要有路子除非去拐卖。
从单片机到嵌入式,其实是一个人个人职业生涯的自然升华和跳跃。我说的自然的意思不是说你不用做什么就自然有了,我说的自然的意思是你应该努力去学习去进步让这个过程自然发生。
自然发生就是上文说的“先有了能力,伺机而动,找到好机会纵身一跃”。
机会是给有准备的人的。其实世界上完全不缺机会,缺的是去把握机会的能力。缺的是做好了准备来迎接机会的人。
所以如果你想转嵌入式,那你应该赶紧开始学啊。跳不跳槽的以后再说,但是你得先去学习,让自己具备这份素质,这份能力啊。不然天天搞单片机,到了一定时候自然感觉不到进步了啊。
与物联网项目经理的聊天记录截图
05
单片机比嵌入式的优势
单片机其实就是嵌入式linux的初级阶段。或者说嵌入式linux就是更难一些,更复杂一些的单片机开发。
所以这2个东西渊源很深,所以经常拿来比较。
如果非要说优势,单片机比嵌入式的优势就是:技术门槛低,工作机会多。
技术门槛低是说单片机相对好学,单片机本身复杂度没那么高,尤其是51单片机这种,可以说真的可以“零基础”去学会。当然了,并不是说单片机就是“低智商”,我们说的简单是相对的,准确说是相对嵌入式linux来说的。
也不是说单片机开发就都是很简单很无脑,没有任何技术含量。并不是的,实际上单片机开发也可以很复杂,譬如火星车、大疆无人机等都是单片机做的,最近很火的美国医疗公司开源的呼吸机主控也是单片机的。所以做单片机的别着急骂我,我不是要贬低单片机开发,我只是说从零基础到入行单片机能找到单片机开发工作,需要的难度相对更低。
工作机会多是说整个社会单片机开发工程师的岗位数更多,招的人更多。因为单片机应用面很广,就光一个小家电行业就需要N多单片机工程师了。
单片机开发这2个优势很大,所以很多电子系相关专业的人后来都入行单片机了。所以淘宝上单片机开发板销量最大(相比嵌入式、FPGA、DSP、FPGA等)。这都是有原因的,需求决定了供给。
所以如果你虚,那就选单片机。如果单片机你都学不会,找不到工作,那试试换老师换课程。如果多番尝试(尤其是听过我们的单片机课程)之后还是不能学会,那建议趁早转行。
真的,转行不丢人,转行也不是鄙视你。不是每一个人都适合做IT,不是每一个人都要做研发。做研发有什么好牛逼的啊,我看人不懂技术做销售也有赚的很多的啊。所以如果你不适合做技术真不必勉强。
06
单片机比嵌入式的劣势
单片机比嵌入式最大的劣势就是:天花板太低了。
做单片机开发普遍瓶颈会出现在月薪1-1.5万区间。也就是说大多数人做单片机软硬件开发,月薪1-1.5万就是最高了,很难再升上去了。有些人可能得用十几年才能达到这个水平,而有些人可能两三年就达到这个水平了。
但是不管你是多久达到这个水平,99%的单片机开发者往后就没机会再前进了。为什么?是你不努力了吗?是你水平没进步了吗?是你业务不熟练了吗?
都不是,而是这个行业、这个工作他本身的价值就这么多。你想想,就算你做这个5年了10年了,但是如果一个工作3年月薪1万的人就能搞定这个工作,老板凭什么给你月薪1万5?他为什么不辞退你然后外面另外找个月薪1万的来顶替你呢?
很多人觉得我工作经验时间越长工资就应该涨,纯属无稽之谈。你搬砖搬10年跟刚来的搬砖的有什么区别?纯粹用所谓的“工作经验”(其实应该叫“工作年限”)来评价自己的价值是完全的一厢情愿,老板和HR绝对不这么想。
而嵌入式linux相关的开发天花板就要高很多,月薪1-1.5万其实才算刚上路。年薪20-30万左右是真正能干活的嵌入式linux工程师的正常水平。大多数人只要不虚度,不混日子,做嵌入式linux3-8年都能达到这个水平。再往上那就要看综合实力了。
所以你看,从大多数人的天花板这个角度来说,单片机的上限比嵌入式低一个大层次。这就是单片机相对于嵌入式的劣势。
07
最后
怎么选才是最好的?很简单。
如果你够厉害够自信够狠,那就直接嵌入式linux,完全可以跳过单片机这个阶段。
如果你稍微虚点,那就迂回战略。先攻占单片机这个山头,用一两年或者两三年站住了站稳了拿到10k左右的行业中高水平了,感觉没有太多提升了。然后迅速自主的去学习嵌入式linux,继续下一阶段的爬升。
注意我这里说的是“自主”学习。所谓自主,就是公司没有项目需求你也去学,公司不给你报销学费你也去学,公司工作很忙你也利用晚上和周末时间去学。这才叫自主。
你学习不学习,进步不进步是你自己的事,公司没有责任和义务帮助你成长。所以你如果抱怨说在公司没机会接触嵌入式,自己上班又很忙没时间去学,那活该你一辈子做单片机赚那点钱受可怜。
总有人问选择大于努力还是努力大于选择?反正问我的人里我觉得90%的根本没资格问这个问题,因为你根本没努力过。所以你问我这话,就好像问我:我早上起床去搬砖,走哪条路能捡到钱?