軟體工程師與硬體工程師的差異?

打算申請美國大學,傾向於計算機領域. 個人比較偏向於硬體設計,但感覺軟體工程前景更開闊些


瀉藥,第一次在知乎糊裡糊塗上被邀請也是第一次在知乎上回答問題,趁今天實習工作提前做完了來好好答一發。回答肯定有些地方有失偏頗,還請大牛指正!

先介紹一下自己的背景,在全國前五的大學讀到大二,現在在美國讀雙學位。大三本科生在讀。國內專業ECE(電子計算機工程, electrical and computer engineering),在美國的專業是CE(計算機工程, computer engineering)。因為當時來美國前就想硬體軟體雙修,兩個領域自己也都有涉及,所以從學生的角度淺談一下自己的看法。

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相對國內高校來說有增無減。確定這是你想要的,再給予考慮。

希望我的回答能對你有些幫助


美國大學入學時候不分專業啊


軟某人:年少成就斐然。前半生苦逼,後半生迷惘不知何往。

硬某人:白髮青史留名。前半生成狗,後半生成就學閥可期。

或許不具普遍性,但能管窺一二,基本保持動態平衡。目前的預期大概率是這樣了 。哎……


不是特別熱愛硬體的話,建議還是CS吧.

軟體是服務業,硬體是製造業,so...除了IC Design,很多的"硬體"職位,比如嵌入式工程師,也差不多是比常規碼農距離硬體近一些的碼農吧.

我自己喜歡硬體,因為做出一些device感覺很酷,但也僅此而已,然並卵,收入什麼的各種被碾壓,想玩新一些的東西,發現還是得去正兒八經的學習編程...


選軟吧,硬的除了蘋果,沒幾家活的好的,如果沒有app生態,估計蘋果硬的也活不好。


硬體像肉體,軟體像思想,大象的腦容量與人類差不了多少,其思維方式卻比人類差了很多。硬體的應用非常廣泛,軟體卻是硬體的指數級數量。

我學了三年硬體,發覺有很多硬體的思維方式是軟體人才連想都不敢想的,做軟體的剛弄明白Cpu,gpu,最近又出來了tpu。以後還會出來更為天馬行空的硬體。當然,在軟體人的眼裡可能只有一句api指令。

可以這麼說,做硬體如果是為了盈利那麼不如做軟體,因為硬體與金錢相差太大。但如果是為了類似達芬奇的奇思妙想,請從硬體做起。

硬體發明家不能直接盈利的例子太多了,gps是硬體,政府盈利,互聯網也是政府項目,火箭控制系統,飛機控制系統,這些都是最為高尖的科技,而且這些東西都有機會被民用,只是不像軟體那麼多機會罷了。

軟體的目的更多是為了應用,而不是invent,所以軟體的市場更為細分和寬廣,每個人都有機會分一杯羹。

所以軟體是銜接技術和社會的捷徑。

最後,請不要把自己定義為軟體人或硬體人,所有學科知識只要需要都應學習。

雖然下面這個目標過於不現實,但請成為一個難以被定義的人。

希望大家對你的定義將是你的名字,如特斯拉,喬布斯等等。


我覺得軟體是勞動力密集型產業,硬體是資本密集型產業


所謂的區別其實沒有絕對的答案,世界上好與壞也都是相對的,我絕得應該看你自己的喜好來決定,是選擇硬體還是軟體方向。

怎麼說呢,其實這個東西要分很多情況來討論,看你自己的能力來決定了,而且跟你所處大環境有關(包括企業環境啊、學術環境等等),當你能力不夠或者能力特別牛逼的話,我認為這兩者並沒有多少區別,都一樣,不存在誰優誰劣。 能力居中來論述下:

1)從學術科研來看,國內環境,軟體更容易出成果,不是涉及到超高速信號比如上G、幾十G的應用、或者電磁環境特別惡劣的場景,硬體的方面所佔權重並不高,意思就是硬體這個東西大家都能做,而且做的相接近。若涉及到硬體能夠產生競爭壁壘的話,那就是可以形成產業壟斷的,比如晶元(這個裡面有固件支持)、電機、製造工藝等等,當然這個涉及投入產出的東東,軟體相對來說單位時間內產出更高,這也就是為何高校或者私人資本更青睞於做應用開發。綜合來說,硬體就是內功是經濟基礎,軟體是招式是上層建築(比喻並不能完全恰當)。

2)從應用來看,首先這個軟硬體工程師,要區分下,你從事的到底是研發工程師,還是應用工程師,像國內大部分人從事的所謂研發工作其實都是應用型的,從這個維度來看的話,軟體工程師比較吃青春飯,而硬體工程師比較吃經驗飯

3)軟體(上層PC)的話趨向於脫物創造,其實說到底就是一堆數學公式,要求你數學功底要很好,抽象建模思維要很棒;而硬體的話,本質就是與所謂的電子、空穴打交道了,而在實際應用中涉及到的雜七雜八的東西就很多了,比如電磁輻射啊、阻抗匹配啊、傳輸線啊、電磁原理啊、結構啊、材料啊都要接觸的,在一個大的項目應用開發中,硬體工程師相當於所有開發研發人員的連接點。

4)學硬體的要去理解軟體或者寫點什麼代碼 相對於學軟體的要去進行硬體開發 要容易些

說到底,這個看你自己喜歡了,其實不管軟體還是硬體開發,都是在想怎麼做到更簡單、更可靠、更高效。最重要的是練好的自己的思維邏輯,形成自己的思維框架,當有一天你的思維高度已經很高了的話,你會發現軟體與硬體開發的本質都一樣。

不要因為誰說好而為之,心悅而為。可能你會說我自己不知道自己喜不喜歡,多調研,多看,慢慢就會有自己的看法了。

個人看法,歡迎指正! 謝謝!


硬體太難了,真的難,我以前還覺得搞演算法比較高大上,直到我遇到了一門課叫微電子


從我的角度看,硬體工程師靠畫圖數量考核績效,演算法這邊就不大好量化考核。但是硬體對演算法特別重要,基本決定我們用什麼體量的武器打怪。有時間也想自己學畫電路板。但是從科研預測未來的角度看,硬體工程師有必要關心一下類腦計算和量子計算的硬體設計,因為這兩個方向一旦有突破,不會弱於深度學習浪潮,應該是硬體工程師的春天。


第一次被邀,好緊張~~~

還是推薦樓主學軟體


想要舒舒服服的留在美國,應該學軟體,除非你對硬體有著異乎常人的愛。


硬體的投入產出和軟體沒法比,等你搞硬體有點入門時,你已經過了最起碼15年


軟體工程師,好猥瑣,還有個人感覺軟體工程師經驗不是很值錢,挺廉價的

硬體工程師沒見過,不說。


軟體更側重於人和機器之間的交互,硬體更側重於機器之間的交互。


軟體更側重於人和機器之間的交互,硬體更側重於機器之間的交互。 當然鍵盤滑鼠 觸摸屏這類本身和人交互性很強的除外。


軟體更側重於人和機器之間的交互,硬體更側重於機器之間的交互。 當然鍵盤滑鼠 觸摸屏這類本身和人交互性很強的除外。


軟硬體都會,才NB


選擇軟體。其實硬體工程師也要編程,因此還不如直接選擇軟體。


推薦閱讀:

FPGA工程師是否應該回國發展?
硬體工程師(比如說做FPGA )會不會和很多軟體工程師一樣,三十幾歲就會被迫轉行做其他工作?
對應屆生而言,板級系統設計的職位是不是沒有吸引力?
有哪些對用戶造成物理攻擊的軟體BUG案例?
電子信息工程專業的學生成為硬體工程師好還是軟體工程師好?分別需要哪些基礎技能?

TAG:軟體工程 | 軟體工程師 | 硬體工程師 |