硬件和软件两位工程师吵起来了!


【硬件和软件两位工程师吵起来了!】


关于软件工程师和硬件工程师总有太多的话题 。
常态往往是这样滴:
板子出问题了,
硬件工程师:肯定是软件的原因!
软件工程师:绝对是硬件的问题!

以下内容摘自知乎匿名用户一位美国在校学生所写,虽然或有失偏颇,但还是很能说明问题的:
1. 我个人理解的就业与行业前景

因为我个人对美国这方面了解更多,就先从美国说一说 。我相信硬件工程师和软件工程师的就业前景应该是提这个问题的人最想知道的方面 。

就我所了解的,在现在以及可预见的未来,这个行业对软件工程师的需求绝对是碾压硬件工程师的 。也就是说,招软件工程师的职位比硬件工程师的职位要多的多,而且软件工程师找工作上来说会比硬件工程师更容易 。
先从企业的角度来讲讲 。我个人认为造成这个差异的原因,第一个是基本上所有的公司,从初创公司到全球百强,都有对软件工程师的需求 。现在哪个公司不需要几个码农来开发app,或者做个web 。但是做硬件这种工作并不是所有公司会去做的 。举个简单的例子,摩根大通银行在我们学校的招聘会上有明确招软件工程师,expedia在我们学校招聘会上也明确招聘软件工程师,如果这个两个公司突然说要招电子工程师,这不是逗我吗 。。而且哪怕是硬件公司,也需要大量的软件工程师来支持硬件前端工作 。


第二点我觉得要归功于现在的创业潮 。不管在美国在中国互联网创业都是趋势,但是可以说绝大部分的初创互联网公司做的都是软件方向 。有个点子,有点技术,找几个合伙人抱着电脑就能开干了 。但是初创公司要专注做硬件开发就比较难了,因为成立设计硬件公司的门槛和起步开销比较大 。所以这也导致大部分初创公司以互联网为主,能做的了硬件设计的公司基本上都是处于垄断地位的大企业 。
第三个很重要的原因就是硬件设计在现在来看已经是相对成熟的技术,我甚至有ee的同学跟我说大部分硬件的东西已经步入夕阳产业的范畴,因为很多东西已经成了规范,也因为很多东西被自动化所取代 。前一阵子全球大牌的硬件公司才裁了不少人,intel更是裁掉了接近20%的硬件工程师 。但是互联网热从90年代开始到现在热头还没过,而且未来诸多产业如人工智能,机器学习,图像识别,大数据都才刚起步,所以还有一定的上升空间 。
还记得当初我们学校的初创公司招聘会上几十家公司只有一家招硬件工程师,而且还是偏软件的硬件工程师,剩下的公司里98%都在找会码代码的人;大企业的招聘会上才能见到nvidia,arm,intel,TI 的身影,但是哪怕是这样基本上所有的公司招牌上都会有大写加粗的招computer science的字样 。。
再从个人的角度来讲 。想成为一名软件工程师找到工作的门槛远比成为一名合格的硬件工程师低很多 。要想以软件工程师的身份混到个饭碗,能学两门语言学好常用的数据结构刷点题就基本上能找到薪水小几千的岗位 。我甚至知道国内有专门的软件工程师培训机构,那种专门教java和算法,两个月速成班,而且所声称的学生就业率还挺高的 。但是要想成为一名合格的硬件工程师,不是科班出身的不好好学几门模电数电信号逻辑设计的课,没有在学校实验室里自己焊点电路做实践,连简历都发不出去 。而且现在要想学个什么语言框架,网上搜一搜“”xxx语言入门教程“”就有非常丰富的资源,但是要是在网上搜“如何学好超大规模集成电路设计”,要想找到可以受用的资源几乎是不可能的 。而且就我所参加的招聘会来说,如果有招硬件工程师基本都要求有研究生的学位,但是对软件工程师的要求基本上就是熟悉算法数据结构,会web编程有相关经历就够了 。软件工程师很多时候吃的是体力,硬件工程师大部分时候是吃经验,所以硬件工程师一般得有一定的经历积淀才能脱颖而出 。尤其像模电这种上手程度很高的方向,没个十年八年的相关经验根本不算学成出师 。所以说本身对从业者的资质要求更高,也是硬件工程师不好找工作的原因之一 。

上面是我所认为的短时间内软件工程师就找工作方面来说会比硬件工程师更容易的原因 。但是这并不意味着会编程就肯定找得到工作,也不意味着硬件产业就会低迷下去 。软件工程师的职位多,但是每年从事这个职业的人也更多,虽然我认为现在软件工程师短期内还没有出现饱和的趋势(毕竟那么高的工资还摆在那),但是总有一天这个行业也会像金融产业一样降温(人才供过于求) 。硬件产业虽然大部分已经有步入夕阳产业的趋势,但是曾经一度被宣称没啥好搞的供电网络最近也被smart grid搞得神乎其神,美国top5的高校都还设立了相关实验室 。此外,现在物联网,车联网,智能家居的概念被炒得火热,我相信等相关成熟的支持技术(能量采集,低功耗通信)以及统一的开发平台一旦出现,硬件工程师的需求只会更多,虽然这些产品依旧只有那些有背景的大公司才做得动(不过因为欧美国家电子产业上的封锁,国家也在硬件设计上砸了很多银子,初创企业也会慢慢增加,相信国内的相关机遇也会更多) 。而且毕竟软件产业毕竟还是依靠硬件,如何设计低功耗,高稳定性,能够承载大吞吐量计算量的硬件也是这个产业的挑战,毕竟人工智能,机器学习,视觉处理等领域是很吃硬件计算量的 。没有强大的硬件支持,阿狗要想打败李世乭还是痴心妄想吧 。
2、工作常态 现在在一家设计为设计硬件的公司所设计软件的百强软件公司实习,做的工作大部分还是偏软件,所以本身对工作常态也并没有非常深入的自己的感受 。但是就我观察身边的同事以及跟别人的交流来看,不管是做软件硬件,都是要:对 。着 。电 。脑 。。。


软件工程师平时就是上班啊调试程序,比较低级的码农只能给高级软件工程师大大下手,帮他们做测试,实现他们设计好的东西 。当然了做到高级工程师了才有能力开发设计自己公司的产品 。如果在初创公司工作节奏更紧张,如果赶上产品要上线可能需要加班调试 。遇到程序爆炸了可能还需要on call(就是你负责的东西突然出问题了,你的manager直接打个电话给你你得马上去公司修bug),至少我知道amazon是有这个机制 。 我现在还没有在纯做硬件的公司实习过,但是从我知道的事实来看,硬件工程师不会比软件工程师轻松 。硬件工程师也需要调试电路啊调试脚本啊反正也有跟软件工程师交叉的工作 。工作环境的话取决于细分的工作类别 。开发fpga的估计跟码农一样坐办公室,搞mems的嵌入式的就长期入驻实验室了 。因为大部分硬件公司都是相对成熟的大企业,所以工作节奏普遍不会像在初创公司那么紧张,不过像在华为这样的企业就另说了 。。。 当然了不管是在软件工程师还是硬件工程师,工作强度应该都是高于其他industry的职业的 。毕竟这个行业竞争会越来越激烈,这也是聪明人聚集的地方 。 至于工资的话,就平均来讲,美国这里的软件工程师年薪会略高于硬件工程师(从glassdoor以及其他门户的数据来看),但是软件工程师一样也有收入低的,硬件工程师的收入也有碾压软件工程师的 。只要你技术过硬,薪水都不是事儿 。


3、个人感受 看题主的问题描述,说软件工程师前景更开阔一些 。我个人的感觉是不管怎样,这两个行业在未来都会有非常非常多的机遇与挑战(详细原因见第一点) 。不管是软件设计还是硬件设计底下都有更多细小的分支(比如说你硬件设计是想做vlsi,dsp,处理器设计,通信,fpga开发还是嵌入式,软件设计你想做web开发,app开发,软件开发,嵌入式软件工程师,操作系统还是distributed system) 。 我个人是对两个大方向都很有兴趣,但是我决定自己最终的方向还是嵌入式设计和处理器设计,这两个行业都应该算是夹在了纯硬件设计和纯软件设计的中间 。尤其是产业对嵌入式工程师的要求更高,能够自己设计mixed signal pcb,自己调试应用代码写kernel code,能调试无线通信,基本意味着一个合格的嵌入式工程师要对硬件和软件相关方面有足够的知识 。我自己是比较讨厌做web开发app纯开发软件的工作,因为这些工作的门槛太低,不是科班出身的人可能都能混的比你好得多,体现不出来自己的价值 。而且我比较喜欢把电路板和各种元件握在手里的感觉,而且我发现自己能够设计一个可以用的硬件的时候那种成就感会高于debug之后的成就感 。当你发现自己在经受了大学的磨练真正拥有了学习知识的能力以后,丰富的网上资源以及自身的积累都会让你学习这些网页app知识非常轻松,所以我个人更喜欢硬件底层,以及和硬件底层打交道的软件领域 。软件硬件的课程都不会简单,而且两个学科的工作量不是其他学科能比的(学工科的天天做project呆lab,学统计的上完课就回家看电影 。。)所以要想学好,还是需要花一定精力,尤其美国的大学工科院系workload相对国内高校来说有增无减 。确定这是你想要的,再给予考虑 。

以上内容是不是说出了做软件与做硬件的不同体会?不过,据说,老工程师对此的回答是:工作久了就会发现其实需求才是根本,软件硬件只是实现需求的途径......

    推荐阅读