做硬體真的沒有前途嗎?看看資深工程師是怎麼說的

2020-08-12 14:52:23

網上總是不乏「硬體不如軟體吃香」、「硬體幹活多、待遇低、門檻高」、「十年硬體轉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來分的人稱爲「學霸",把能夠將書本理論與研發實踐結合起來的工程師稱爲「高手」(連理論與實踐相結合都做不到的工程師不是坑人麼?),這不僅是眼光的問題,更是人才供給側改革的問題:大量低端人力資源過剩,高階人才供給不足。

 

這是和我們產業現狀匹配的人才現狀,也是我們未來改進的必由之路:國家產業假如能夠升級,絕對離不開社會人才的升級。