提到嵌入式,很多人第一反应是“坑”。不同人站在不同角度,看法自然各异。下面是一位知乎网友结合自身经历的分享,或许能给你带来一些启发。
嵌入式的“坑”
1. 烧钱
嵌入式学习非常“烧钱”,这足以让不少人望而却步。作为一名从DSP起步的工程师,我深刻体会到这个行业的学习之路,某种程度上是靠钱铺出来的。
在我的学习过程中,身边不少同学都转向了纯粹的软件开发领域,比如网页、手机应用、数据库等。他们几乎只需要一台联网的电脑就能搞定所有事情。正因为如此,我当时也曾心动过。当老师建议我们购买开发板时,我甚至拿不出钱。
纯粹的软件开发领域,资深玩家可能需要一台服务器就足够了。但做嵌入式,你需要买开发板,买各种功能模块,追求软硬件协同的“天人合一”。等水平稍微高一些,又会萌生自己设计电路板、采购芯片的念头,这个坑就越挖越深。等到回过神来,发现自己已经给自己筑起了一座“围城”——想转行,投入了这么多钱,能甘心吗?想继续,那就只能继续“烧钱”。

我的第一块开发板是C51板子,好多年前买的,花了168元。那时候大一,一个月生活费才1000块,真是省吃俭用才买下这个“大件”。我拿着这块板子学到了大二,觉得特别没劲。后来遇到了我的老师,才正式入了DSP的门。当时看某宝,一块好点的F2812开发板要六七百,还要配仿真器,加起来超过1000元。
后来我决定抓住机会,趁老师在的时候去实验室用学校的DSP试验箱(据说价值4000块),老师不在的时候就啃书本。压力很大,但学习的动力也很足。慢慢地开始接一些小项目,赚点钱,再投入到设备上,收二手板子……久而久之,板子攒了一大堆。现在,STM32、MSP430、DSP的C5000、C6000系列我都有,还有给孩子玩的电子积木Arduino。后来自己还购置了示波器、各种工具、电烙铁、万用表。再后来玩电路设计,印制PCB板、购买芯片,费用都不菲。
主要原因是我对此有浓厚的兴趣。别人可能喜欢在其他地方花钱,我喜欢给自己囤积设备,东搞搞西搞搞,乐在其中。搞嵌入式,光看书肯定不行,必须动手编程、调试。程序往往是20%的时间在编写,80%的时间在调试,而调试就离不开硬件板子。如果没有兴趣,估计每花一笔钱都会肉疼;如果有兴趣,则可以省吃俭用地投入。或许,兴趣就是有这么大的魅力。但无论有无兴趣,这笔投入是绕不开的。
2. 一堆必要的理论
曾经我也随大流想学Java,学了三个月后放弃了。我甚至规划好了学习路线:从Java语言开始,然后学习Spring等三大框架(现在都记不清了)。后来觉得挑战性不足,入门相对容易。并非我有多大能耐,而是现在做Java、网页、安卓开发的,市场上很多是大专、高职学历的朋友。只要他们有点兴趣和上进心,都能做得不错,差异化竞争并不明显。
做嵌入式需要学习的理论就多得多了。这是一个庞大的分支,你可以选择以专家模式深入钻研,也可以以工程师模式应用实践。
在软件方面,需要学习的知识量不亚于做Java、C++编程的,甚至因为要和底层打交道,需要学得更深入,难度更大。算法、数据结构这些都需要掌握。
在硬件方面需要了解的就更庞杂了:电子行业的基础知识(电容、电阻这些自不必说)、模拟电路、必须熟练的数字电路,还要学习PCB设计。PCB设计里的布局布线、考虑各种尺寸、功率和信号完整性……不说精通,但你需要掌握并理解其原理。还需要阅读各种芯片的数据手册,而经验的积累在此过程中也极为重要。
这些还只是冰山一角。以做DSP为例,需要将算法仿真、各种专业的数学理论和程序融合在一起,同时还得考虑硬件设备。有些芯片的编程甚至需要考虑电路结构、电容大小。这还没完,在调试阶段,我们需要外接设备,软硬件不分家,你还得会看示波器,懂频谱分析……要学的东西实在太多了。
有时候会觉得,学这么多好像也没用,人还是应该学得精。但现实常常是:书到用时方恨少!庞大的学习量本身就是一个巨大的考验。走上EE(电子工程)这条路,从来都是活到老学到老,不断学习,不断实践,现学现卖,在开发中积累。这非常有挑战性,也是它很“坑”的一点。
3. 起始工资与纯软件的差异
学了这么多,总想着付出应该有回报,但现实往往并非如此。互联网是当下的热门,各行各业都缺人。进入社会后,CS(计算机科学)方向的工作既好找,薪水又高。我身边有些同学,参加培训后进入软件公司,曾经的“屌丝”手机换成了苹果,小日子过得不错,偶尔在朋友圈抱怨加班,实际上还是很享受的。
与CS相比,嵌入式堪称是“卧薪尝胆”。CS也一直塑造着整个信息行业程序员的形象,一提到程序员,外行人首先联想到的就是开发软件。可见CS群体的庞大。当然,嵌入式也有其独特的优势,这些优势我们会在后面谈到。
嵌入式的优势
1. 学的多,基础硬,出路广
嵌入式行业是一个灵活性高、后备路径极多的行业。如果嵌入式软件势头不好,可以转向硬件设计;如果硬件势头不佳,可以努力钻研算法。在学习嵌入式之初、入门之前,我们就打下了一个庞大的知识地基。风向不好时,可以轻易地选择另一个方向建造高楼。
即便整个嵌入式行业出现波动,嵌入式工程师转向CS也相对容易,反而具备高屋建瓴的优势。相比之下,CS可能更像一条路走到黑,不甘心一直写代码的人,可能需要瞄准产品经理、运维等方向转型,其中也存在风险。
再加上,近几年随着物联网、集成电路的兴起,嵌入式也成了一个香饽饽。
2. 经验沉淀价值高
嵌入式行业是一个需要时间沉淀的行业,几乎无人能够“逆袭”,做不到极致,只能力求做得更好。这句话的意思是:五年的经验不如十年的硬,十年的不如二十年的硬。年轻人的优势在于思维灵活,接受新事物快,所以入行常常从软件切入。工作几年后开始积累硬件知识,从底层追求极致。硬件是一门慢功夫,经验往往比书本知识更可靠。或者说,有些东西无法写进书里,只能自己体会,这就需要经历。因此,每个人都得一步步爬台阶。
然而,CS的处境有时比较尴尬。工作几年后,前面有同行挡路,后面有新人追赶,两头受压。这是我们公司一位老软件工程师说的,虽然是酒桌上的调侃,但也能看出他的担忧:做十年和做五年的功效可能差不多,换句话说,这个领域很容易达到“满级”。
3. 纯软件开发日趋“简单化”
有没有感觉现在开发软件变得越来越“简单”?封装性、模块化、流程化都趋向完美。这要感谢大批涌入CS行业的前辈们,他们在提供便利的同时,也在某种程度上“堵死”了后来者单纯依靠技能深度构筑壁垒的道路。
当事情变得太容易,就不再需要那么多人了。行业大口径地吸纳这么多人,等到这股浪潮过去,反作用力可能会“淹死”后来的一批人。这种效应有滞后性,当前可能看不出来。你可以保证这个潮流持续10年,但敢保证20年吗?积累得越多,未来的反冲力可能越可怕。
4. 嵌入式发展更稳健
平心而论,在顶尖人才的世界里,互联网行业达到百万年薪的人很多,而嵌入式领域的顶层高薪者相对较少。处于“搬砖”阶段的工程师,可能也是写代码的赚得更多一些。
但最主要的中坚力量层面,还是嵌入式更稳健。人要把眼光放长远,找准自己的定位。追求互联网顶层的人可能很多,但这条路上“倒下”的更多。在嵌入式领域,你可以做得不温不火,但大多数人都能丰衣足食。
选择嵌入式,我相信,到了40岁的时候,你会感谢自己当初的选择,感谢曾经的辛苦耕耘。付出多,总会有收获,毕竟天道酬勤。人不能只看眼前,不是吗?
本文源自知乎网友分享,经编辑整理。关于嵌入式开发、计算机基础与网络系统的更多深度讨论与技术资源,欢迎访问云栈社区进行交流。