观点1
建议偏软件!
硬件开发就是做电路板或者电路原理图,一般把原理图叫做设计,PCB叫做版图或layout在芯片方面也是这样叫的,芯片原理图直接叫做设计,芯片版图叫做叫做版图或layout,这个一般用芯片设计或芯片版图来命名。
嵌入式都是拿成品的芯片来做,不会接触到芯片开发。说起来嵌入式做软件的更多,就是码农。嵌入式硬件开发也没多少内容,狭义的嵌入式用的芯片一般脚位都定死了,硬件设计基本属于抄板工,版图设计就是前期抄板工抄完第一步以后,按照给定的电路板形状和布局布线规则连线这样子。
硬件设计开发这个,学的时候内容很多,最基本的模电数电,做项目还要考虑布局、高频、差分、等长、阻抗,实际上,电路板形状管不了,布局要考虑一下,其他的软件都能自己计算。
尽量做一下嵌入式软件开发,只做嵌入式硬件开发周期相对太短,容易给人一种这人很闲的感觉,很多人意识不到硬件的价值,当前环境不带个软件工资也不好看。
硬件工程师的特点:
1.可创新的点比较少。大多数原理性的东西,要么就从书本上获得经典的电路设计,要么就是按着器件厂家的标准电路进行设计,真正体现硬件工程师水平的方面还是在于PCB LAYOUT的水平,在于LAYOUT出来的板子稳定性是否好,电磁兼容,电磁干扰,器件选型,高低温性能等等,这些东西。然而这些知识没有特别的书籍能够教会,只有长年累月的LAYOUT技术积累,就知道如何覆铜,如何器件布局了,所以硬件工程师很需要时间年限。当然,这里谈的是最多工业级的产品,如果是高频的雷达那种军工级别的电路原理设计不谈。
2.工期长,出错成本高一定要细心细心,我在工作中经常遇到的情况就是,PCB出问题,各种飞线补救,然后重新出图到嘉立创赶制,基本上错一次,几百块钱+几天时间就没了,所以硬件工程师一定要细心。对比之下,软件问题,重新编译运行就可以解决问题了。
3.可替代性强譬如,代码都是我写的,想让第二个人理解我的软件工程,是一件非常困难的事情,因为软件潜在的逻辑关系,不是那么容易表述清楚的,就算是按照最标准的方式写注释,最标准的方式定义变量名,第二个人接收项目都是一塌糊涂,这样的特点,随着软件工程越来越复杂,变得越来越明显。成熟的软件无所谓,如果是不成熟的软件,或者后期一定会再加新功能的软件,他的初始软件开发者一定是非常重要的!比起硬件工程师来说,硬件的复杂度是有上限的,不会复杂到哪去,刚毕业的学生,靠着baidu,通宵个几天基本都能把原理图和布局都搞清楚。所以,可替代性很强,笔者,离职的几家公司,做离职交接的时候,心里很有数,除了我,没人能完全理解代码。当然,可能会有人说,是我写的代码不标准。但是,目前出货还是很稳定的,不需要改代码,那是最好,如果要改,肯定没有人比我更适合改那个代码。
可替代性再举一个明确的例子,如果第二个人交接原有工程师的工作。
1.硬件工程师把原理图,PCB图给第二个人看,第二个人也有基本的专业知识,多久能完全理解原理,我想很快,但是想理解到layout中的技巧,那就困难。
2.软件工程师把所有源代码给第二个看,第二个人那就有的看了,而且很难理解其中的潜在逻辑,但是和硬件一样,能用就行,如果要改,牵一发而动全身,那就只能996了。从修改难度来说,软件大,所以硬件比软件可替代性强。这里谈的是嵌入式的复杂软件作为前提。
所以,谈了上述三点,建议偏软件!
观点2
同样的情况下硬件会比软件工资低一些,硬件更偏向于打杂,特别是刚开始工作的那段时间硬件工资会偏低一些,但是不排除有的也挺高硬件岗位少一些。
跳槽的话难度稍稍大一些但是硬件接触供应商多,交流也多,转型也会方便一些。
但是到了 10 年 、20 年后,你还是做硬件,还是很吃香。
观点3
建议学习嵌入式软件方向。
硬件的issues:
1.要求的门槛高;
2.前期收入少;
3.需要长时间大量的投入;
4.需要的人相对少很多。
综上,选硬件除非有很好的机会,不然很容易中途就放弃了。
本号原创、转载的文章、图片等版权归原作者所有,如有侵权,请联系删除。
|