作者:知幠
来源:巧学模电数电单片机
一位项目经理带着一名硬件工程师和一名软件工程师一同坐车去参加研讨会,结果汽车在半路抛锚,于是三人就“如何修理汽车”展开了激烈的讨论。
硬件工程师说:“我可以用随身携带的瑞士军刀把车坏的部分拆下来,找出原因,排除故障。”
项目经理托着腮帮子邪魅一笑:“根据经营管理学,应该召开会议,根据问题现状写出需求报告,制订计划,编写日程安排,逐步逼近,alpha测试,beta1测试和beta2测试解决问题。”
这时,软件工程师不慌不忙地说出了一句让硬件工程师和项目经理都喷饭的话:“咱们还是应该把车推回山顶再开下来,看看问题是否重复发生...”
en...段子归段子,但基于不同的职业习惯,我们大概可以从中看出硬件工程师、项目经理以及软件工程师这三者在工作上分别扮演着什么样的角色,也就是所谓的职能分工。
不过扎心的是,跟软件工程师比起来,硬件工程师的前景似乎不怎么被人看好。
网上总是不乏“硬件不如软件吃香”、“硬件干活多、待遇低、门槛高”、“十年硬件转IT,真香!”...等诸如此类的言论。由于硬件工程师做的事情多且杂,更是惨被戏称为“高级杂工”。
事实真是如此?搞硬件就真的这么苦逼?没有什么发展前景?看看资深硬件工程师怎么说!
先来了解一下:什么是硬件?
百度百科上是这么介绍硬件的:"硬件(英文名Hardware),是计算机硬件的简称(中国大陆及香港用语,台湾作硬体),是指计算机系统中由电子,机械和光电元件等组成的各种物理装置的总称。这些物理装置按系统结构的要求构成一个有机整体为计算机软件运行提供物质基础。"
也就是说硬件是物理层面的,至少是你能看得到摸得着的东西,它是一种物质载体,物质基础。广义来说人类都是生活在物质基础之上,你可以把所有你能看到的东西都统称为硬件。当然狭义来说,一般我们所说的软件和硬件指的是电子领域的。
软件代码也是人编写的,我们所熟知的语言比如C、C++等都是通过编译器翻译成汇编语言,然后汇编语言通过汇编器翻译成二进制机器语言,机器语言操控门电路完成相应的动作。
个人觉得,没有硬件,软件就没有存在的意义,硬件是一切的基础,这里可以看出硬件设计是多重要。
但软件和硬件又有明显的区分,至少工作内容区别很大。按照行业内描述硬件属于底层(一般称为底层硬件),软件称为上层(软件又分为:底层驱动、上层业务以及应用层等)。
如果非要举个例子来说明软件和硬件,那最好的例子就是人,硬件指人的躯体,而软件指人的思维。
当然,对于非电子领域的人来说,很难想明白计算机是怎么工作的,硬件是怎样工作的,软件是怎样工作的,即使你知道都是0和1,但你没做过相关工作,你发现不了其中的神奇之处。
其实你只要知道,软件驱动硬件工作,驱动的激励是什么?是电讯号!硬件接收到的这个电讯号分为0和1,硬件的响应速度非常快,多快呢?
举个例子,硬件中常用的串口波特率115200bit per second,一秒钟115200个0或者1,英语字母是8个bit(可在ASCII表看到,这在大学都学过),那就是一秒钟可打印14400个字母。你眨下眼睛一万多个字母就出来了。当然实际上并没有这么多,这只是个形象的例子。
但在电路设计上100kHz属于比较慢的速率了。再比如显示器一幅图的刷新频率在一秒钟24个以上,我们人眼就看不出来。24帧的数据是非常大的,比如1080p30格式输出,总的数据量是一秒钟1920*1080*12*30= 746496000个0或者1,也就是7亿个0或者1。
一般来说硬件设计指的是电路设计,这样说是没问题的,因为你所有的工作都是围绕电路设计,最终的目标也是产出一个优秀的电路,能够满足各种要求,经历各种考验。但实际上我们要求的是产品,而不是单板。
硬件工程师干什么?
硬件工程师(Hardware Engineer)主要负责整个产品的硬件设计。
一个优秀的硬件工程师,不仅需要从外界交流获取对自己设计的需求,然后汇总,分析成具体的硬件实现。
还要跟众多的芯片和方案供应商联系,从中挑选出合适的方案。
当原理图完成后,则需要组织人员进行配合评审和检查,还要和CAD工程师一起工作来完成的设计。
与此同时,要准备好BOM清单,开始采购和准备物料,联系加工厂家完成贴装工序。
除了基本理论知识过硬,熟练掌握硬件原理图设计技术、硬件PCB图设计、硬件调试之外,还要必备快速学习能力、通信协议和标准的理解、电路设计的能力、沟通和全局控制的能力,物料选型能力、采购能力等等,甚至上到工科理论经济形势,下到历史政治文化科技,都要懂一点。
硬件工程师需要和各种研发人员打交道 、协调工作,这也就要求硬件工程师具有丰富的知识面和强大的协调能力,所以硬件工程师在整个研发团队中做主导作用。
作为一个硬件工程师,需要负责整个产品的研发过程。所以必须对每个时间段进行精确把握。项目都会有项目周期,虽然项目经理在把控时间,但具体的操作还是硬件工程师来搞。对于正常进度的项目来说:
原理图和详细设计方案:5周,包括参考设计以及原理图评审。
PCB布板布线:4周,包括配合结构、PCB进行电路调整或者器件重新选型。
发板及等待回板:2周,这两周是最闲的,发板同时必须完成BOM上传,这个不能忘。多看自己的图!
回板检查:1周,将自己的板子跑起来,能烧录uboot,网口能ping通。检查有无焊接问题。联系结构进行机器组装,查看结构有没有问题。
驱动调试:5周,配合完成所有底层功能的调试。
媒体版本:2周,这个是驱动调试之后第一个整机跑起来的版本,准备拿给测试进行测试。
信号测试:3周,配合信号测试人员完成信号测试。同时给做业务研发人员准备板子给他们研发。
功能测试:2周,配合功能测试人员完成环境测试,防护静电浪涌测试,以及其他功能测试,EMC测试等。
解BUG等待:2周,解决上述出现的所有BUG!
改板与发板:2周。
........
当然,具体时间会随着产品的复杂程度而变化,上面只做参考,不能一概而论。
关于硬件设计的描述,网上还有一种比较形象的说法:“硬件设计就是根据产品经理的需求PRS(Product Requirement Specification),在COGS(Cost of Goods Sale)的要求下,利用目前业界成熟的芯片方案或者技术,在规定时间内完成符合以下要求的硬件产品(注意:是产品不是开发板)。”具体要求如下:
● PRS功能(Function)
● 性能(perrformance)
● 电源设计(power Supply)
● 功耗(power Consumption)
● 散热(Thermal/Cooling)
● 噪音(Noise)
● 信号完整性(Signal Integrity),
● 电磁辐射(EMC/EMI)
● 安规(Safet)
● 器件采购(Component Sourcing)
● 可靠性(Reliability)
● 可测试性(DFT: design for test)
● 可生产性(DFM:design for manufacture)
可以看到,一个成功的硬件设计,主要功能的实现只是所有环节中的一小部分。
刚开始工作的时候,觉得板子电路设计完就完成了50%工作,PCB回板主要功能都能实现了,那就完成了80%的工作。
实际上不是的,PCB回板主要功能都实现了,连30%工作都没有。所以不管是时间上,还是阶段上,产品的硬件设计时一个漫长过程。
而且你在一个公司做产品硬件设计,一般情况下都是参考成熟的方案,主芯片CPU主要功能的实现最终还是依靠芯片厂商提供的套片方案,一般来说为了降低风险,主要是参考套片方案的参考设计完成,芯片厂商也会提供包括器件封装,参考设计,仿真模型,PCB参考等等全部资料,在芯片功能越来越复杂的今天,一个片子动不动就几百上千个PIN。
对于一个新项目来说,是没有时间一页页去吃透每个PIN,每个输入输出的具体功能,电气参数的,尤其是对于高速设计,比如DDR3接口,XAUI接口等等。
一般来说,芯片厂商提供的参考设计就是他们经过开发,验证,测试的最佳方案了,很多情况就是你必须按照参考设计来做,否则硬件可能就有问题,一般来说就是信号完整性问题或者EMC问题。
那有的人就说了,硬件电路设计谈不上设计,都是copy成熟电路。芯片厂商提供越来越周到的服务,再加上公司沉淀的技术积累,硬件设计工程师可以完全不动脑子进行电路设计。
这样一来,硬件工程师的价值似乎越来越低了,毕竟一个产品的核心功能或者技术一般都在IC或者FPGA里面了,硬件工程师一般没有能力进行核心逻辑设计IC design。
那如果按照这个逻辑软件设计也谈不上设计,都是copy成熟代码。试问有几个软件开发人员不移植别人的代码?再深入点,有几个软件工程师能随意更改uboot、kernel,不百度C语言语法,不移植业务程序,不去问芯片厂商的技术支持?
即使都是成熟的东西,实际上工作过程中我并没有发现哪个项目做得很快,同样一套电路和代码,成熟产品没问题,新产品为什么就有问题?最后还是是硬件设计去解决。
对于这上述问题,笔者也曾经困惑过,总是感觉硬件设计没有什么好搞的了,不就是抄抄参考设计,就跟组装一台电脑一样组装一个单板嘛。
当然随着项目经验的增多,尤其从事现在硬件系统级设计的角色,感觉原来自己考虑更多是从一名原理图设计工程师的角度考虑问题,看问题总是很片面。
就像开始说的,一个成功的硬件设计,功能Function只是一小部分,至于其他的因素和能力,一个硬件工程师的能力取决于能考虑因素越多,越深入,就越是一个优秀的硬件工程师。
所以硬件工程师是吃经验的,对公司来说培养一个硬件工程师成本很高,硬件不会像软件一样代码错了修改一下几分钟就可以搞定,硬件设计错了,那有可能全部都要重来,整个项目周期可能就要延迟3周甚至一个月以上。
有个观点需要说明一下,啥都不懂也可以做出事情,但对个人来说会有发展天花板。
硬件方面就像参考电路一样,你不知道电路怎么工作的也能把它用起来,软件方面就像uboot和kernel一样你看不懂也能用起来,但一旦你懂,那就不一样了。
就像一谈到硬件设计,大家都认为是电路设计,好简单,没什么难度,但实际上不是的,越到底层越难,责任越大,部门交流越多。懂得越多,学得越容易,就能够走得越远。
什么是硬件电路设计?
顾名思义,硬件电路设计就是设计电路的,能够熟练使用cadence绘制电路与查看PCB。
硬件设计中的电路设计是硬件工程师最重要的职责。电路设计考验的是硬件工程师的设计基本功,即对一些硬件器件的理解以及灵活应用,比如:CPU、电阻/电容/电感、二极管/三极管、保护器件/接口器件、逻辑芯片/逻辑功能、电源等。
硬件电路设计主要针对电路设计,里面涉及的东西比较多,需要足够的经验与理论知识。
8年硬件工程师的难言之隐
韩寒执导的电影《飞驰人生》有这么一句经典对白:“中年人的崩溃,是从开口借钱开始的”。
人到中年,各方面都开始走下坡路,当你手捧着泡满枸杞的保温杯,看着镜子里日渐隆起的大肚腩和后移的发际线,再想想“孩子、车子、房子”...唉声叹气往头顶一瞅,发现竟然还悬了把“达摩克利斯之剑”,仿佛它随时都能掉下来将你劈成两半。
年轻人的痛,气宇轩昂,中年人的痛,无声无息!
陈航(化名),年龄30+,拥有8年硬件开发经验,目前就职于深圳某医疗器械公司,呆了五年还在底层挣扎。
工作上,他自认为从不马虎,技术也过硬,但一直得不到晋升的机会。眼看着一个个初出茅庐的“小萌新”开始拿着跟自己差不多的薪水,有些甚至已晋升为管理层。
他觉得很迷茫,想跳槽,投了许多简历,但没有任何收到音讯!
现在看来,“另择良木”这条路对他来说,似乎很难走通。
多年的技术生涯,让陈航身上带有部分工程师的“通病”,尤其体现在性格上面,天真(此处带有贬意)、敏感、胆怯、多虑、木讷,不善言辞,也不善交际,而在思维方面,又明显过于教条化。
另一方面,对于长年奋斗在底层的陈航来说,严重缺乏管理思维模式,所以即便技术过硬,但缺乏项目管理能力,加上性格过于敏感,一直难有晋升机会。
而另一位毕业8年,转了三家公司的硬件工程师也表示,虽然自己拥有8年的工作经验,但是由于工作太杂,杂而不精,所以在面试的时候总会被人挑刺,导致工资很难往上提,更别说晋升管理层了。
作为一名硬件狗,你不应该坐以待毙,要勇于打破职业瓶颈,“高薪”、“管理”两手抓起来!
都说硬件工程师的薪资取决于能力,一般情况下,硬件工程师都是要历练很多年才能达到一个比较高水平的,所以不要好高骛远,脚踏实地,厚积薄发才是王道。
根据近6年内的相关调查数据显示,来自全国的企业电子工程师岗位要求中,对项目管理能力的要求超过50%。由此可见,项目管理已成为初中级工程师必备能力。
我们再来看看硬件工程师的职业进阶线路图:
从上图我们可以看出,走“技术路线”的硬件工程师,无论是薪资待遇还是未来的发展潜力,都远不如走“管理路线”的大佬们。
干硬件,即使混到专家级,薪资也就20K-30K的水平。而若晋升为管理层,那么终极目标就是创业,在赚钱方面拥有无限可能。
要想拥抱“高薪”、进入“管理层”,你需要掌握的核心技能大体如下:
1.主导公司产品电路设计开发,样品制作;
2.分析客户体验,领导企业产品升级;
3.决定企业硬件产品核心差距;
4.产品功能、性能决策;
5.掌握产品成本核心;
6.带领团队完成硬件功能性和性能要求的逻辑设计等
....
都说干硬件这行,入门容易,精深太难!
搞硬件,一方面需要“深”,一方面需要“博”。现代电子电路知识是个大坑,其深如海。一辈子钻研,如果能在一个小点上精通,就算大能了。
坑爹的是,当个硬件工程师不能光懂硬件,代码要会写,结构要了解,按照行业不同,你可能还需要懂得:控制理论,光,机,热,气,生物,化学等等各个方面的知识。
这也是为什么很多干硬件的都说自己“差不多什么都会一点,但不精!“
差不多十年前,硬件和软件还处于势均力敌的状态,随着IC芯片集成度越来越高,硬件工程师的身价也开始随之下跌。
现如今,做产品都是由供应商提供方案,很多原厂的公版设计需要改动的地方越来越少,并且出了任何问题也都由原厂直接跟进解决。IC集成度越高,硬件设计就越窄,对硬件工程师的要求自然也会越来越低。
总的来说,硬件现在最大的瓶颈就是消费级市场一体解决方案和不断整合的芯片集成度,这种直接由原厂提供完整“钥匙”的方案,让设计风险大幅降低的同时,也削弱了硬件工程师的重要性。
如前所述,硬件的辉煌是在2000年以前,那时硬件还没有饱和,正处在上升期,随着硬件的性能提升,软件利用硬件资源玩出了花,硬件的时代也随之暗沉,现在上游半导体基本已经出现垄断化,没有无序竞争,标准化从薪资到制度都在逐步限死。
搞硬件真的就没有什么发展前景?
搞软件是能挣几年钱,但硬件可以吃一辈子。
硬件工程师可以养老,基本上不存在中年危机。与软件行业不同,硬件工程师的薪资跟经验直接挂钩,很少出现应届生与在职工程师薪资倒挂的现象。
按照艰苦奋斗再创业的节奏,终身就业是大趋势,硬件工程师是一份可以实现终身就业的工作。
而软件行业变化速度快,软件工程师可替代性强,coder能干到架构师高级算法工程师的人凤毛麟角,能够中年成功转管理岗的也不多。
而且新员工比老员工薪资高也已经是普遍现象,大龄coder面临的竞争压力比同龄硬件工程师大不少。
此外,如果硬件实在搞不下去了,还可以转项目经理啥的。大多数硬件工程师一般到后期都会转管理,或自己创业。跟软件相比,接触面会比较宽,更容易从全盘去考虑问题。
总之,一个顶级硬件工程师可遇不可求,而一个顶级的软件工程师一抓一大把。拿苹果公司来说,他们顶级硬件工程师的工资要比同级别的软件工程师薪资高。
当然,术业有专攻,不能简单用谁好谁坏来定论,无论是硬件还是软件,修炼内功才是王道。
行业的大佬如何看待硬件工程师前程问题
硬件工程师是这样一种奇特的工作:在中国大多数从事这个行业的人都没有入门。
那些宣称由于上游芯片厂家的DEMO越来越成熟,导致硬件工程师成为了“裱糊匠”,到处抄参考设计的,他们自己确实就是这样,也确实没有见识过什么是真正资深的硬件工程师。
互联网的高价吸引了许多优秀人才,使得硬件行业的总体人才水平偏低,更加重了第一条的现状。其实我也挺看好机械行业的,越是被互联网抽走了人才的洼地,越是存在巨大的需求。
你不能问那些被迫干机械或硬件的人,他们资质平庸,转行做软件也怕学不会算法,他们一定告诉你硬件不行,坑深得很,XXX做软件水平差还薪资50K/月起......
硬件专家的资质要求很高,没有上上之资、又有一定的毅力苦功,有高手在起步时带一下,几乎不可能有什么成就。
如果说学软件对数学逻辑功底要求高的话,学硬件还得加上物理、以及特定行业相关的工程应用知识。
利用卡尔曼滤波实现干扰状态下的传感器数据采集,以便进行过程控制的系统中,究竟是采用屏蔽驱动技术的信号电缆更好呢,还是采用光电或磁电隔离更可靠?这些问题似乎都不再局限于电路信号范畴,它与成本、材料、应用可靠性、代码的兼容性都相关了。
好的硬件工程师,似乎是这样一种专家:他运筹帷幄,熟知每一个技术细节,能一下子反应过来任何问题的可能来源,在成本、功能、性能与客户体验之间游刃有余。
回到正题:如果你有超过一般人的天赋,做什么都挺好,不只是硬件。如果你资质一般,去做些一般人也能挣到钱的工作,比如软件。需求量大嘛,总是可以多容纳些滥竽充数的人,更何况一般人也能写得大差不差。
其实对于“研发工程师”而言,能当得起这个称呼的人,是为我们设计新产品、创造新价值的人,难道不应该是人群中最聪明的top5%? 你认真诚恳地评价一下自己,就知道自己适合不适合做工程师了。
我觉得硬件很有趣,在某些战略层面上,硬件设计总是需要科学家级别的人才能胜任。如果你有情怀,不妨可以试试。
最后,这个问题的本意其实有问题,大多数人回答也按照心照不宣的本意在回答,挺有趣。
这个问题的真正含义是“我就想和别人一样地上上班,也一样努力地工作学习,能否获得超额的回报?“来钱快肯定是有原因的,要么特别聪明、要么特别勤劳、要么狗屎运特别好。
有人说大部分需求可以随便抄抄DEMO就能搞定了。我感觉“搞”是这么”搞“了,”定“则未必能“定”了。
君不见那么多动不动就被干扰数据乱蹦、一上高低温就瘫痪,或者好一点精度差、响应慢、偶尔死机要重启下,这些带病产品都是哪里来的?
须知DEMO的主要目的是展示“技术可行性“,它最大的问题在于没有和特定的行业应用相结合。
有些为行业定制的DEMO只考虑了技术本身,没有考虑诸如振动、干扰、环境温湿度等因素。
而这恰恰就是硬件工程师的最大价值:在技术可行的基础上,根据现场应用特征,优化其功能、强化其性能、在成本与性能之间找到最佳平衡,让一个技术可行的方案成为一个商业成功的产品,这才是硬件工程师的荣誉之所在。
我们有些硬件工程师,可能从未想过他所谓的”研发设计“体现在哪里,到底研究了什么、开发了什么、设计了什么?还是仅仅抄袭了什么?
电子工程师这个职业,国内企业的核心竞争力确实在国际竞争中没有什么优势,甚至差距还挺大,所以才会有那些“到处抄抄”也就差不多了的看法 - 你的竞争力就是“差不多”的档次,你个人也是“差不多”的水平,当然企业也好,个人也好,前途也就是“差不多”了。
看一个问题评价是高是低,其实是和个人的标准有关的。你觉得这样就可以了,换个国家换个环境人家说不定觉得莫名其妙 - 就这种水平还敢自称工程师?有人一直在强调“那种资深的高水平工程师很少 - 需求也少”,可能还是有误解。
我们目前的现状并非是中低级工程师多,高级资深工程师少,而是基本达到研发能力的工程师少,许多都谈不上“研发”二字。说得刻薄一点,我们的“资深”可能是人家的“基础”。
我不是很能理解,一个大学学了微积分、普通物理、电路原理、信号与系统、模电数电,毕业工作几年后仍然理直气壮地说我模电不行、我数电不懂、这个小信号分析我做不了......这和资深搭得上关系吗?就算做到了就可以以“资深工程师”自居了?这不是基础工程师要求么。
记得看过一次报道,一次硬件工程师的招聘,要求面试者讲讲自己做硬件的心得。结果他掏出一个上家公司的电路板,说你看吧,用了六层板呢。
我接触过一些这样的工程师,情商极低,缺乏足够的诚信或道德意识,表达能力差,学习能力弱。他们喜欢挂在口头的话就是“要是有高手带我,多干几个项目,我经验就上来了”。
他们情愿去现场一趟一趟的调试(所谓的调试依我看几乎是胡乱试,好了不知道为啥好,坏了也不知为啥坏,很少是按理论指导一步步来),也不愿先在脑袋里仔细分析一遍 - 也可能他们确实没能力分析。
他们的经验就像是武功口诀一样,什么抗干扰要“多点接地或单点接地”啦,或者IC前面要放几个去耦电容啦,也有什么通信口加个光电隔离啦,似乎口诀越多,经验越丰富。
你要问他这些口诀背后的电路原理到底是什么?为什么一定要0.1uF?在这个应用场景适合不适合,他就哑口无言了。
其实做任何一行首先要端正态度,你是要做标准的事情,还是要做“不标准差不多”的事情。
我一直认为中国存在巨大的机会,其原因很简单:只要你中规中矩做到工程师的基本要求,你在国内就是领先的,有着巨大优势的,因为国内的同行或企业存在太多不着调的现象了。
问题是,我们把认真读书考试平均分也不过90来分的人称为“学霸",把能够将书本理论与研发实践结合起来的工程师称为“高手”(连理论与实践相结合都做不到的工程师不是坑人么?),这不仅是眼光的问题,更是人才供给侧改革的问题:大量低端人力资源过剩,高端人才供给不足。
这是和我们产业现状匹配的人才现状,也是我们未来改进的必由之路:国家产业假如能够升级,绝对离不开社会人才的升级。
-END-
﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
免责声明:本文转自网络,版权归原作者所有,如涉及作品版权问题,请及时与我们联系,谢谢!
往期好文合集
学C/C++语言,32个必备修养!<<戳这里
用覆铜板雕个女朋友。<<戳这里
学嵌入式有两个诀窍:勤奋刻苦+不要脸。<<戳这里
最 后
若觉得文章不错,转发分享,也是我们继续更新的动力。
5T资源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,PCB、FPGA、DSP、labview、单片机、等等!
在公众号内回复「更多资源」,即可免费获取,期待你的关注~
长按识别图中二维码关注