闲聊嵌入式职业发展(1)

从事嵌入式研发管理有些年了,平时做一些招聘工作,我经常会问一个问题:您未来三年的计划是什么?未来十年的计划是什么?

 

其实这个问题不仅仅再问面试者,实际上也是在问自己。我是一个生物医学工程专业毕业的学生,专业课主要学习医学方面的一些基础知识、自动控制、软件基础、电路基础等。类似自动控制,又不是自动控制;类似电子科学,但又差很多基础专业课程;类似计算机软件,却又差很多理论知识。我就这样学习了四年,四年之后连工作都找不到。后来去做电视机软件,再后来来到现在工作的公司做工业控制系统(一种以实时操作系统为主的深度嵌入式)。职业成长上一直困扰着自己。

 

一般的嵌入式,只需要对硬件理解比较深刻。软件其次,代码量不大,难度也不高;或者是仅仅维护一个相对比较成熟的大项目的源代码,以改居多,自己动手写的少。软件方面的功底要求相对低,而硬件方面要求高;又或者两者要求都不高。比较适合与计算机相关以硬件为主的专业学生。

 

大部分学习编程的人,都是从PC机编程入手。PC机没有硬件和软件同时成熟的问题,即出了问题不知道是软件问题还是硬件问题。而计算机专业的同学们大部分学习都是在PC上完成,对具体的硬件缺乏了解,也缺少定位硬件问题的经验。自动化等专业毕业的学生以学习单片机为主,计算机专业基础知识为辅,对硬件的认识较为深刻,又对软件有一定的了解,较适合做相关的开发。

 

软硬件都强的人,属于牛人中的牛人,中国现在没有这样的专业保证这样的人才输出,所以这样的人必定有着特殊的成长经历。企业大量的需要这种开发设计人才。但是这样的人学校里是少之又少,都是需要通过工作锻炼出来。

 

 计算机是实践性和理论性都非常强的一门科学,两条腿走路,少了哪条都不行。但它又具有多样性,和一个具体行业结合起来就能形成新东西。抽象出来也不过是具体理论结合具体的行业实践而已。但做嵌入式开发的工程师很多都是非计算机专业毕业的人,自己去实现一个线性表,或者自己想一个数据结构去实现具体的操作。殊不知,《数据结构》中早有前人把这些总结的滴水不漏。算法的设计思想,如分治、动态规划、贪心、穷举等,前人也有深刻的总结。个人觉得,做嵌入式的人面对苛刻的软硬件要求,更要对软件算法的空间杂度、时间杂度有深刻地认识。把这些理论知识和行业的具体应用结合起来,理论指导实践,实践印证理论,越走越远,越走越好。

 

硬件某种程度上也是软件,像FPGA就是硬件软件化的一个体现。如硬件的寄存器实际上就是函数的参数,想操作好一个硬件,少不了要了解硬件的寄存器,可以理解为利用好一个函数的参数。如有些硬件支持DMA,支持DMA的硬件可能有复杂的DMA参数要配置,通过这些参数可以看到,内存和具体的硬件之间通过DMA关联起来,如果抽象成两个C++类的话,那么DMA一定是一个通讯关联类,这也给我们解决相关的软件设计问题带来解决思路。如两个类直接的关联关系太复杂,需要通讯太多,可以通过一个中间类封装这个通讯过程。从而使系统变得简洁。这个是从软件的角度看硬件。硬件专业基础知识必须具备的,不说自己去绘制原理图,但能看懂应该是最起码的要求。了解各种电平的转换,熟悉常见的运放的应用形式,熟悉常用器件的运用,熟悉单片机的硬件调试过程,了解~CPU 的工作过程,DDRRAM、SDRAM、SRAM的区别等等……

 

等把这些弄熟悉了,并总结了一套自己的办法,我觉得就可以朝着两条路发展,1.成为技术领域的牛人,术业专攻;2.锻炼自己的大局观,学习项目管理知识,成为嵌入式项目管理人才。

 

你可能感兴趣的:(数据结构,算法,工作,项目管理,嵌入式,通讯)