关于软件工程师和硬件工程师总是有太多的话题。你觉得怎么样?嗯?
今天来和大家讨论这个话题。
。。下面这副图很形象:
观点一
就我所了解的,在现在以及可预见的未来,这个行业对软件工程师的需求绝对是碾压硬件工程师的。也就是说,招软件工程师的职位比硬件工程师的职位要多的多,而且软件工程师找工作上来说会比硬件工程师更容易。
先从企业的角度来讲讲。我个人认为造成这个差异的原因,第一个是基本上所有的公司,从初创公司到全球百强,都有对软件工程师的需求。现在哪个公司不需要几个码农来开发app,或者做个web。但是做硬件这种工作并不是所有公司会去做的。举个简单的例子,摩根大通银行在我们学校的招聘会上有明确招软件工程师,expedia在我们学校招聘会上也明确招聘软件工程师,如果这个两个公司突然说要招电子工程师,这不是逗我吗。。而且哪怕是硬件公司,也需要大量的软件工程师来支持硬件前端工作。
第二点我觉得要归功于现在的创业潮。不管在美国在中国互联网创业都是趋势,但是可以说绝大部分的初创互联网公司做的都是软件方向。有个点子,有点技术,找几个合伙人抱着电脑就能开干了。但是初创公司要专注做硬件开发就比较难了,因为成立设计硬件公司的门槛和起步开销比较大。所以这也导致大部分初创公司以互联网为主,能做的了硬件设计的公司基本上都是处于垄断地位的大企业。
第三个很重要的原因就是硬件设计在现在来看已经是相对成熟的技术,我甚至有ee的同学跟我说大部分硬件的东西已经步入夕阳产业的范畴,因为很多东西已经成了规范,也因为很多东西被自动化所取代。前一阵子全球大牌的硬件公司才裁了不少人,intel更是裁掉了接近20%的硬件工程师。但是互联网热从90年代开始到现在热头还没过,而且未来诸多产业如人工智能,机器学习,图像识别,大数据都才刚起步,所以还有一定的上升空间。
观点二
硬件像肉体,软件像思想,大象的脑容量与人类差不了多少,其思维方式却比人类差了很多。硬件的应用非常广泛,软件却是硬件的指数级数量。
我学了三年硬件,发觉有很多硬件的思维方式是软件人才连想都不敢想的,做软件的刚弄明白Cpu,gpu,最近又出来了tpu。以后还会出来更为天马行空的硬件。当然,在软件人的眼里可能只有一句api指令。
可以这么说,做硬件如果是为了盈利那么不如做软件,因为硬件与金钱相差太大。但如果是为了类似达芬奇的奇思妙想,请从硬件做起。
硬件发明家不能直接盈利的例子太多了,gps是硬件,政府盈利,互联网也是政府项目,火箭控制系统,飞机控制系统,这些都是最为高尖的科技,而且这些东西都有机会被民用,只是不像软件那么多机会罢了。
软件的目的更多是为了应用,而不是invent,所以软件的市场更为细分和宽广,每个人都有机会分一杯羹。
所以软件是衔接技术和社会的捷径。
最后,请不要把自己定义为软件人或硬件人,所有学科知识只要需要都应学习。
虽然下面这个目标过于不现实,但请成为一个难以被定义的人。
希望大家对你的定义将是你的名字,如特斯拉,乔布斯等等。
观点三
所谓的区别其实没有绝对的答案,世界上好与坏也都是相对的,我绝得应该看你自己的喜好来决定,是选择硬件还是软件方向。
怎么说呢,其实这个东西要分很多情况来讨论,看你自己的能力来决定了,而且跟你所处大环境有关(包括企业环境啊、学术环境等),当你能力不够或者能力特别牛逼的话,我认为这两者并没有多少区别,都一样,不存在谁优谁劣。 能力居中来论述下:
1)从学术科研来看,国内环境,软件更容易出成果,不是涉及到超高速信号比如上G、几十G的应用、或者电磁环境特别恶劣的场景,硬件的方面所占权重并不高,意思就是硬件这个东西大家都能做,而且做的相接近。若涉及到硬件能够产生竞争壁垒的话,那就是可以形成产业垄断的,比如芯片(这个里面有固件支持)、电机、制造工艺等等,当然这个涉及投入产出的东东,软件相对来说单位时间内产出更高,这也就是为何高校或者私人资本更青睐于做应用开发。综合来说,硬件就是内功是经济基础,软件是招式是上层建筑(比喻并不能完全恰当)。
2)从应用来看,首先这个软硬件工程师,要区分下,你从事的到底是研发工程师,还是应用工程师,像国内大部分人从事的所谓研发工作其实都是应用型的,从这个维度来看的话,软件工程师比较吃青春饭,而硬件工程师比较吃经验饭。
3)软件(上层PC)的话趋向于脱物创造,其实说到底就是一堆数学公式,要求你数学功底要很好,抽象建模思维要很棒;而硬件的话,本质就是与所谓的电子、空穴打交道了,而在实际应用中涉及到的杂七杂八的东西就很多了,比如电磁辐射啊、阻抗匹配啊、传输线啊、电磁原理啊、结构啊、材料啊都要接触的,在一个大的项目应用开发中,硬件工程师相当于所有开发研发人员的连接点。
4)学硬件的要去理解软件或者写点什么代码 相对于学软件的要去进行硬件开发 要容易些,说到底,这个看你自己喜欢了,其实不管软件还是硬件开发,都是在想怎么做到更简单、更可靠、更高效。最重要的是练好的自己的思维逻辑,形成自己的思维框架,当有一天你的思维高度已经很高了的话,你会发现软件与硬件开发的本质都一样。
不要因为谁说好而为之,心悦而为。可能你会说我自己不知道自己喜不喜欢,多调研,多看,慢慢就会有自己的看法了。
观点四
不是特别热爱硬件的话,建议还是CS吧。
软件是服务业,硬件是制造业,so.。。除了IC Design,很多的“硬件”职位,比如嵌入式工程师,也差不多是比常规码农距离硬件近一些的码农吧。
我自己喜欢硬件,因为做出一些device感觉很酷,但也仅此而已,然并卵,收入什么的各种被碾压,想玩新一些的东西,发现还是得去正儿八经的学习编程。
观点五
做了9年硬件电路设计,5年智能手机,4年医疗器械,看到这个问题,心情很复杂,自己喜爱的工作居然无奈的发展到了这个窘境。
当初选择硬件是因为不想日复一日的坐在屏幕前面敲代码到天亮,硬件电路设计工作中的元素要丰富一些,各种仪器,各种元器件,实验室,工厂,电脑前面画图坐个台,供应商来了再接个客,个人觉的要比枯燥写代码有趣很多。当时硬件还是产品的主要卖点,软硬件算势均力敌。
但到了现在,依靠国内庞大的用户群,中国站在了全球互联网发展的前列,行业发展速度快,相关人才必定炙手可热,传统制造业与之相比,其实无论软件硬件,跟互联网行业都要差一个档次。问题是传统制造业内部,软件的发展也也要好于硬件,这是为什么呢?
总结
每个人的人生都充满迷茫,自己的方向和目标只有自己通过实践才能找到,欢迎大家交流。