嵌入式开发相关技术
嵌入式工程师分布在各行各业上面,这其中包括了消费电子、工业电子、汽车电子和军用电子等。从功能上面看,嵌入式本身包括了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 客户支持
客户支持,很多人都认为是没有技术含量的工作,但我的想法恰恰相反。客户支持,一方面可以培养自己的沟通能力,另外一方面可以督促自己在技术上不断进步。因为对于用户来说,解决问题才是最重要的。而此时,问题的发生往往涉及到硬件、软件、芯片、信号、工具链等各个方面。没有深厚的知识背景,其实客户支持是做不好的。此外,做好了客户支持,可以继续往项目经理和产品经理方向发展,反而更容易一点。
总结
工程技术人员在工作中都会遇到各种各样的技术挑战。基于此文:工程师除了埋头干活,还应该注意什么?总结下,给大家几点建议:
除了关注技术,也要关注招聘市场
不要人为设限,除了技术外的市场、策划、销售,也关注一下
做软件的最好懂点硬件、芯片、电路
举个例子来说,既然人工智能这么火,那么它的基本算法我是不是也可以学一学。深度学习发展这么快,它的python框架是不是可以拿来用一用。或者,用它来解决什么现实问题会比较好一点。再比如,如果个人技术优势比较明显,那么是不是可以将它用文档保存下来,让科室或者部门的同学一起进步。开发上面,除了技术,怎么做可以成本最低,怎么做可以在功能和稳定性之间达到一个平衡,这个都是作为一个嵌入式工程师不断思考和改进的内容。