嵌入式工程师分布在各行各业上面,这其中包括了消费电子、工业电子、汽车电子和军用电子等。
从功能上面看,嵌入式本身包括了51、STM32、MCU、SOC、SOC+baseband等很多形式。
从开发的结构上看,有些同学专注于底层,比如boot;有些同学专注于内核、编译器、cpu、驱动;
还有一些同学专注于上层,比如协议、服务器、计算、存储、交互等等,这一层的开发工程师其实和普通的pc开发工程师是一样的。
一般来说,嵌入式的开发比其他软件开发要求高一些。除了编译器、内核、调试比较复杂之外,他们常常还需要了解CPU、SOC、芯片手册、基本电路。
成长
一个真正打通上下层、可以独当一面的工程师,一般需要5-8年的时间。
这个中间,他会遇到各种各样的问题和困扰,操作系统要学、数据结构要学、网络要学、驱动要学、上层软件移植要学、电路要学、芯片手册要学,基本上从入门到精通之前,他应该都在学习的过程当中。
学习本身是一件有意义的事情。但是经过8-9年之后,很多嵌入式工程师会变得迷茫,因为他们不清楚后面的路该怎么走。
技术上该学的好像都学了,但是似乎又不是特别精通,如果选择一个方向继续走下去,又该怎么选择?
另外,市场上对嵌入式工程师的起薪还是可以的,但是后发优势明显不足,最近比较火的人工智能、机器学习,
3-5年的工程师薪酬可以秒杀大部分10年嵌入式工程师的薪资,这中间是否合理?嵌入式工程师该何去何从?
转型方向
1 - 开发经理
开发经理是一部分技术优势比较明显的同学会走的路。
这部分同学,之所以被安排在这个职位,主要是公司希望可以将他的技术优势覆盖到更多的同学,而他自己可以承担更复杂的开发任务。
一般来说,开发经理还会负责招聘、培训、考核的任务,从技术上来说,开发经理应该是最强的,他基本上是技术开发的最后一道防线。
2 - 项目经理
对于协调性比较好的同学,项目经理可能是比较好的一条道路,相比较开发经理,项目经理对技术的要求没有那么高。
但是,项目经理需要对项目的进度进行全程把控。项目快了、慢了,时间点有没有控制,成本上有没有超支,这都是项目经理需要考虑的事情。
一个项目是否高质量地交付,项目经理扮演了很重要的角色。很多情况下。项目经理没有实权,但是项目经理又需要扮演很重要的协调角色,这时候就是历练项目经理情商的时刻了。
3 - 产品经理
从技术转产品经理的同学其实不多,比技术经理和项目经理少很多。在我看来,这主要是因为两者思考方式差异巨大。
很多做开发的同学都喜欢用新技术、写新代码,完全不考虑时间、成本、性能和市场。
但是产品经理不行,他得和市场、销售配合,先了解市场上需要什么,竞争对手是哪些,我们的优势是什么,如果切到细分市场下,产品本身是不是赚钱,还有没有机会进入,这都是产品经理要干的事。
所以,产品经理号称小ceo,但是产品经理的权限要小得多。如果说开发经理考虑的东西是怎么做,那么产品经理考虑的是为什么要做这个功能、要不要做。
4 - 技术专家
一般技术专家这个路线,只适合少部分对技术痴迷的同学,他们的水平很多比开发经理高很多。
不管是多核cpu、dsp、isp、编解码、人工智能、大数据,找准自己熟悉的领域和市场认可的方向持续做下去就可以了,做技术专家不是什么差的选择。
大家不要以为只有经理、总监、副总才能年薪百万,技术专家也可以年薪百万。
要是技术专家还要承担一些技术路线、技术管理的工作,那么技术专家的地位在公司里面还是很高的。他的不可替代性甚至要超过很多领导、副总等等。
5 - 客户支持
客户支持,很多人都认为是没有技术含量的工作,但我的想法恰恰相反。
客户支持,一方面可以培养自己的沟通能力,另外一方面可以督促自己在技术上不断进步。因为对于用户来说,解决问题才是最重要的。
而此时,问题的发生往往涉及到硬件、软件、芯片、信号、工具链等各个方面。没有深厚的知识背景,其实客户支持是做不好的。
此外,做好了客户支持,可以继续往项目经理和产品经理方向发展,反而更容易一点。
总结
工程技术人员在工作中都会遇到各种各样的技术挑战。总结下,给大家几点建议:
1、除了关注技术,也要关注招聘市场
2、不要人为设限,除了技术外的市场、策划、销售,也关注一下。
3、做软件的最好懂点硬件、芯片、电路
举个例子来说,既然人工智能这么火,那么它的基本算法我是不是也可以学一学。深度学习发展这么快,它的python框架是不是可以拿来用一用。
或者,用它来解决什么现实问题会比较好一点。
再比如,如果个人技术优势比较明显,那么是不是可以将它用文档保存下来,让科室或者部门的同学一起进步。
开发上面,除了技术,怎么做可以成本最低,怎么做可以在功能和稳定性之间达到一个平衡,这个都是作为一个嵌入式工程师不断思考和改进的内容。