我们先揭示现象:硬件工程师工资普遍薪资低、价值不高
有关于讨论硬件工程师“薪资低”“就业门槛高”总有太多的话题。最近,编者在某互联网创业社区,就有关应届毕业生or初级工程师“硬件 vs 软件”薪资对比展开调查,经过一轮的初期评比,综合大部分硬件工程师的最终结果。编者归纳整理了一下,大概有以下几种观点:
1.硬件门槛低、薪资也不高
这部分的硬件工程师认为,一些传统的硬件工程师招聘要求:熟悉基本的模拟、数字电路原理图设计、PCB Layout,对生产、焊接有一定了解,熟悉硬件开发、调试流程。会简单的画图连线即可,虽然layout、模拟硬件需要经验,但只要是初期系统学习过,数字硬件是相对来说比较简单门槛也低的。因此,传统的硬件大公司,压榨得非常厉害,应届生薪资几乎比做软件的要第一个档次。
2.软件入门容易,薪资比硬件也更高
从企业的角度说,从初创企业到全球百强,对软件工程师的需求量都很大。归功于互联网创业潮,可以说是大部分初创公司做的都是软件方向。只要有技术、找合伙人,招聘几个软件工程师就可以开发app或者做web站点,但是做硬件工作并不是所有公司都会做的,但是做硬件开发做起步就很难,基本上做硬件设计公司都是行业垄断的大公司。所以很多硬件工程师在做了3年、5年后,大部分都转向做软件方向,学习门槛低,薪资也比同期的硬件高。
3.真正做好硬件不比软件差,年薪10-30万+不是问题
还有另外的一种观点:大部分硬件工程师80%工作内容,主要是用来做画板、Layout、硬件调试和测试、焊板子,写单片机程序。稍微有技术含量的IC Design,芯片厂商已经帮你做好了,你只需找Datasheet,找关键参数,做原理图、PCB,准备物料清单。真正做好硬件需要从零搭建平台,还是很考验硬件工程师的经验水平的。一个好的硬件工程师,硬件领域、模电、layout、射频、结构和芯片数字设计都要会点,深入专研下去,如果学精了,月薪几万、几十万都不是问题。
编者认为,硬件工程师普遍薪资不高的原因,大部分是因为工作太杂,缺乏硬件工程师的核心技术能力、还有项目管理能力导致的。作为一名硬件工程师,自己一定要有明确的职业发展方向,一方面,选择好以后要走的道路,提前做好准备;另一方面,要想在工作、技术中有造诣,工作经验也需要积累,想要有所突破,必须要靠自己业余深造。
下面先来讲一下硬件工程师的职业之路,作为硬件工程师,如何做好个人职业规划?
公司内所有的岗位是同等重要的,有些公司可能没有研发或者部分研发工作外包。虽然各团队的重要性是一致的,研发团队在产品开发中的位置应该更加核心,硬件研发人员可以转去做市场、测试、供应链或者质量管理等,但市场等岗位的人却很难转做研发。一来研发门槛较高,二来研发工作接触面广。
硬件工程师的职业规划,大概可以分为以下四个阶段:
• 初阶的硬件工程师
在别人指导下完成阶段三和四的一部分工作,应届毕业生入职3个月基本可以达到。
• 普通的硬件工程师
独立完成阶段三和四的工作,一般工作1到2年即可
• 资深的硬件工程师
主导完成阶段三和四的工作,参与完成阶段二总体设计的工作
• 专家级硬件工作师
主导完成阶段一和二的工作
这里,你可以定位一下自己目前处于哪个阶段。不管自己处于哪个阶段,硬件工程师不想一辈子奋战在最基层的画原理图、调板子,那就要有所行动起来。在项目开发团队中,硬件工程师就如一个项目经理,注定成为技术多面手。需要与芯片和解决方案提供商联系,以选择合适的解决方案;需要完成原理图设计,与PCB/CAD同事完成电路图;需要独立联系制造商,采购准备器件材料完成电路布置;需要协调软件/测试同事,完成硬件产品的测试发布。硬件工程师需要与所有研发人员打交道,协调工作,也就要求硬件工程师具有丰富的知识面、强大的协调能力。
硬件工程师的发展方向大概有以下几种:
1.产品经理
产品经理负责一条产品线工作、规划及发展。硬件工程师由于工作涉及面比较广,对产品整个流程的工作及问题都涉及到,适合向产品经理发展。
2.团队管理者
管理者协调资源、管理员工的工作分配以及绩效、设计完善流程等。
3.技术专家或系统工程师
专家提供的是什么?不是源代码、不是原理图,而是产品实现的方案、思路以及技术发展的方向。
4.创业
虽然国家鼓励这样做,但创业是困难的,如果创业卖硬件,就更难了。做好准备,也是一个选择。
谈谈硬件工程师的项目管理
硬件工程师日常所关注的事情,在解决工作中的各种问题时候,应该重点关注项目管理、质量管理上的事情,硬件工程师不可避免要面对这些问题,产线的问题要找你,物料供应的事情要找你,产品返修要找你,现场维护要找你,这些都是提升的机会,问题来了要用科学的方法做事情,多学习质量管理,可靠性设计的知识。
下面我们以实际的硬件设计项目为例,跟大家一起探讨硬件开发中,对应项目管理的基本准则和思路。一个完整的硬件项目管理,具体流程要怎么做?
1、充分了解各方的设计需求,确定合适的解决方案
启动一个硬件开发项目,原始的推动力会来自于很多方面,比如市场的需要,基于整个系统架构的需要,应用软件部门的功能实现需要,提高系统某方面能力的需要等等,所以作为一个硬件系统的设计者,要主动的去了解各个方面的需求,并且综合起来,提出最合适的硬件解决方案。
2、原理图设计中要注意的问题
原理图设计中要有“拿来主义”,现在的芯片厂家一般都可以提供参考设计的原理图,所以要尽量的借助这些资源,在充分理解参考设计的基础上,做一些自己的发挥。当主要的芯片选定以后,最关键的外围设计包括了电源,时钟和芯片间的互连。
电源是保证硬件系统正常工作的基础,设计中要详细的分析:系统能够提供的电源输入;单板需要产生的电源输出;各个电源需要提供的电流大小;电源电路效率;各个电源能够允许的波动范围;整个电源系统需要的上电顺序等。时钟电路的实现要考虑到目标电路的抖动要求,芯片之间的互连要保证数据的无误传输。
3、PCB设计中要注意的问题
PCB设计中要做到目的明确,对于重要的信号线要非常严格的要求布线的长度和处理地环路,而对于低速和不重要的信号线就可以放在稍低的布线优先级上。重要的部分包括:电源的分割;内存的时钟线,控制线和数据线的长度要求;高速差分线的布线等等。
4、检查和调试
当准备调试一块板的时候,一定要先认真的做好目视检查,检查在焊接的过程中是否有可见的短路和管脚搭锡等故障,检查是否有元器件型号放置错误,第一脚放置错误,漏装配等问题,然后用万用表测量各个电源到地的电阻,以检查是否有短路,这个好习惯可以避免贸然上电后损坏单板。
调试的过程中要有平和的心态,遇见问题是非常正常的,要做的就是多做比较和分析,逐步的排除可能的原因,要坚信“凡事都是有办法解决的”和“问题出现一定有它的原因”,这样最后一定能调试成功。
硬件工程师的“基础”知识储备
硬件工程师需要知识储备比较多,电子信息领域的技术和知识本来就很多,人需要不断的学习。我大概列举一些,是自己工作以来学习的方向,当然工作中会不到遇到各种更新更深入的问题需要学习。
1.EMC与安规
EMC与安规在规模较大的公司都有专门的团队,但小公司只能硬件工程师亲手来。
CE认证测试项目最多,学习可以先关注CE的相关标准。不同行业的标准是不一样的,汽车电子和信息技术设备的测试方法和要求都不一样。
EMC理论个人觉得已经发展的比较形象(不像电磁场那么理论抽象),精髓就是EMC三要素,干扰源、敏感源和耦合路径。设计分析就是关注共模电路的回流路径或者泄放路径。
2.RF与天线
同样的RF与天线在规模较大的公司也有专门的团队。行业发展到现在,硬件工程师的RF和天线设计工作基本就是选型了。因此,需要明白一些基本的参数如增益、P1dB、IP2、IP3、天线的方向性等等。
3.电源
电源部门在规模较大的公司也有专门的团队,无论板级DCDC电源还是电源适配器都有专人完成设计、选型或测试工作,硬件工程师应用时标准电路拿来用即可。
关于电源大概就以下几个方面。
DCDC有几种基本拓扑?效率与什么有关?
LDO原理是什么?设计需要注意哪些参数?
POE协议是否熟悉?
4.时钟
晶体和晶振有什么区别?怎么设计?
时钟信号有哪些关键参数?
PLL的原理是什么?环路带宽是什么意思?PLL失锁的可能有哪些?
时钟芯片如何选型?
5.小模拟电路和小逻辑电路
硬件工程师的工作是系统级应用,不是IC设计的大神,工作中很少用分立器件设计电路。
二极管、三极管、MOS管和运放的特性要熟悉会分析,简单的电路要设计。
如三极管电平转换电路怎么设计,为毛低温就不工作了?
如MOS管双向电平转换怎么设计?要关注什么参数?
如MOS管的米勒效应,能不能定量的用公式分析?
6.高速信号及信号完整性
建立时间与保持时间?
时钟的抖动分哪几类?
数据相关抖动是什么?
CDR是什么?
抖动与误码率的关系是什么?
EQ、去加重、预加重?
7.低速信号
I2C、UART、SPI是什么?会不会通过示波器测量判断通信数据对不对?
8.RAM 和ROM
NAND FLASH和NOR FLASH有什么区别?
DDR3 SDRAM原理是什么?CL、AL、RL、WL是什么?各种参数的会不会设置?
9.CPU、SOC、FPGA
X86、ARM、MIPS、POWERPC有什么区别?
FPGA设计需要注意什么?IC设计领域了解嘛?
一般来讲,做硬件的是越老越吃香。特别是搞模拟电路的。在高端电路设计,行业要求工程师有很结实的理论功底,比如搞模拟信号处理方面的模拟电路,至少必须熟练掌握以下几门知识:模拟电路、数字电路、电路理论、信号与系统、数字信号处理。缺少其中一门,就无法把设计做深,绝不是简单的画画原理图,还要对电路做深入的分析。比如模拟电路,如何处理电路噪声,使电路可以可靠测量到uV甚至更低的信号等等。设计一个电路很简单,但要设计一个可靠的电路却很难。为什么小公司的产品质量往往比较差,我想可能工程师的水平有很大的关系。
做技术就是专业,也就必然要求你成为专家,也才能够吃香。硬件工程师许多表面上看起来样样都懂,但对于硬件的基础原理都不懂,比如做项目产品,不知道“电源完整性”是什么,不清楚电源电容位置,不会设计电源分配网络,最小回路是多少也基本没有概念,连传输线方程、阻抗匹配电路都不清楚,就不是真正意义上的“专家”。对于技术研究,还是要从基础打好后,在来讨论硬件工程师有没有前途,薪资到底高不高的问题。