开门见山的說, 在国内略微有点,但大坑倒谈不上。也并非大家了解的信息对称不对成。嵌入式(embedded sysytem)的平均收入是略低互联网行业。在欧洲,两者差不多,senior level的嵌入式会高一点,也更难招一些。可见国内的发展还不及欧美。
工资水平从来不取决于你工作的内容难不难掌握,而是就业市场的产业结构和供需关系。嵌入式工程师和普通的软件工程师比起来,主要的不同是硬件的资源。嵌入式的程序里几乎没有什么复杂的算法和数据结构,尤其是类似Recursion和需要长时间计算基于iterator的算法。嵌入式主要完成的任务是两大块,一个是M2M(machine to machine)的通讯和real-time control。
由于硬件资源的限制嵌入式的程序和最终的商业产品是strongly depends on hardware。对于这样的行业,最终deliver的产品是具体的实物,这相对于互联网行业而言,是重资产的。越是重资产的行业,人力资源所分享的利润比例就越低。所以从整体行业上看,嵌入式是要比互联网行业的低的。
其次,工业控制和M2M是一个几十年前就存在的成熟行业了,也是欧美非常看重的工业基础。国内这方面的起步比较晚,积累和产业资源都不够。国内的产品绝大部分都是2C的市场,很多产品是拿半导体厂商的stack来做application。用这样封装好stack,程序确实就是API的组合体,并不是嵌入式工程师应该体现出的competence。国内很少有厂家可以拿到大厂的source code,开发起来也是知其然而不知其所以然,嵌入式工程师成长也会比较慢。所以嵌入式比互联网行业收入低,主要还是因为国内嵌入式相关产业处在下游,低附加值的阶段,而互联网行业正好相反。这是大环境,不是个人努力能够解决的问题。再看看欧洲这边,很多装备制造领域的企业都需要嵌入式的工作,比如说消费和工业电子的Philips, 半导体设备商ASML,机床里的Gildemeister,和所有的汽车类厂商 like BMW.这些领域的开发都是嵌入式里面的hardcore,从BootLoader, driver, OS到Application。这些厂商大多积累和发展了很多年,处于产业链上游,高附加值,相应的嵌入式岗位收入也说得过去,工程师成长也比较快。
最后才是所谓的教育问题,在我看来,一个好的嵌入式工程师的min knowledge requirement至少要有:计算器体系结构,network,data structure, algorithm, OS, RTOS再加上编译原理。这些课,都是需要长时间学习和实践的科目,没有一门是可以速成的,自学的成本比较高。这些知识绝大部分是计算器基础课程,最好的教材还是要读英文原版,很多工科生的英语水平是不足的。而国内老师大多并不看重教学,加上自己也没有产业经验,不知道教什么,也不想教。而嵌入式需要很多硬件相关的知识,这个学习曲线确实比较陡,需要老师的指导和帮助。而互联网行业,因为良好的开源氛围,自学的门槛比较低,好出成绩,也比较容易成为一个合格的工程师。这一点是个人努力可以克服的,但是比起产业结构而言,是居次要地位的。
再看看未来, 嵌入式面临很多挑战。最重要的一个变化就是硬件资源极大的丰富,很多产品都自带RTOS,这侵蚀了很多原来嵌入式 engineer的工作,嵌入式也主要handle是Application Level的事情了,这不是嵌入式的价值所在。其次,很多工业领域为了加速开发进度和质量,DSL(domain-specific language)会越来越多的替代C和C++成为开发语言。这样一来,嵌入式就真的成为了API的组合。而开发DSL的要求比较高,编译原理和数学是一大门坎。综上所述,嵌入式对于一个纯粹的从业者而言确实不如互联网行业。但是,如果想要run your own business,我觉得IoT才刚刚开始,是蓝海市场,好于纯粹的互联网行业。
就算嵌入式是个大坑也会有人毫不犹豫的往下跳,就算互联网待遇很高也有苦逼的人存在。如果单单是为了找一份工资比较高的工作的话互联网确实要比嵌入式要高,这一点是肯定的,但是有一点需要注意,全国的互联网公司也不算少,能实现真正盈利的公司有几家?依靠优秀的互联网产品创造价值的公司有几家?他们大部分不都是靠融资来维持的么?
嵌入式也好,互联网也罢,每个领域都有各自优秀的企业,都能为这个社会创造价值,促进社会发展。我们应该考虑的是如何在一个领域做好,而不是在一个比较好的领域天天混日子。互联网和嵌入式归根结底就是两种不同的技术罢了,并没有什么好与不好,坑与不坑的区别。但是同时也不要让技术束缚了我们的发展,每个人的成长都是循序渐进不断迭代的一个过程,不可能只凭借一项技术就能一辈子衣食无忧。不断地自我发展与自我完善才是我们应该做的。至于是不是坑应该不是我们需要关心的问题,我们要做的应该是想想到底要不要跳下去。
实际上,真正的嵌入式工程师,是比软件工程师更接近上帝的存在,因为嵌入式工程师能造实体和承载其上的灵魂,越老越吃香。