硬件工程師想轉行,往哪個方向轉?
時間:2019-09-25 來源:成都中心,張老師
許多從事硬件開發方向的工程師,尤其是在眾多的中小電子公司從事硬件開發的工程師,在工作一段時間后,都容易感到困惑。年復一年,除了多熟悉了一些別人已經做好的電子元器件,拿來做一些簡單的組裝外,沒有了更大的成就感。薪酬難于有大的提升,技術的路似乎看不到盡頭。曾經認為做硬件能更真正地懂得一個電子設備的核心工作原理,掌握最高端的核心技術。然而隨著電子技術的飛速發展,真正的核心技術進一步向芯片設計和軟件開發方向靠攏,傳統的硬件開發技術越來越累同和成熟化,伴隨著市場的萎縮,高薪的硬件開發崗位越來越少,集中到少數做高可靠性和射頻以及功率產品的公司中,很多硬件工程師也很難有機會獲得進一步提升的空間。
心里萌發轉行的想法了嗎?但是從事硬件工作多年的底層思維,讓他們更加精通數據位的變換,反而對大的軟件工程和設計模式等高層軟件開發離得較遠。拋棄已有的優勢,從頭學起的話,從時間精力和個人的期望等方面來看都不被看好。往芯片設計方向轉型就更加困難,目前國內的集成電路設計產業本來就很薄弱,就業面窄,更加難以接受半路出家的和尚。

在21世紀這個后PC時代,嵌入式技術異軍突起,在智能硬件、人工智能,機器學習,云計算等領域都得到了廣泛的應用。在這個寬廣的嵌入式領域,對人才的要求也特別的高,需要的人才既需要懂得底層軟硬件開發知識,又需要擁有軟件工程能力,最好有硬件開發方面背景甚至能開發驅動和操作系統內核,有能力對代碼進行底層的匯編優化等。而一個有一段時間硬件開發經驗的工程師在這方面無疑有著巨大的優勢。
所以相比于做芯片設計來說,硬件工程師轉行做軟件開發是一條比較不錯的出路。當前的軟件開發有各種不同的方向,學什么最好呢?毫無疑問,嵌入式軟件開發!嵌入式開發一直是一種軟硬件結合非常緊密的技術,應用領域極為廣泛,我們日常看到的很多產品,都是嵌入式產品。嵌入式開發在十多年前就十分的火爆了,尤其是在當前物聯網、人工智能的時代背景下,物聯網、人工智能的發展再次帶火了嵌入式。嵌入式這種軟硬相結合的新技術,在新的時代背景下,更是如魚得水。
在嵌入式這個特別的軟件開發領域,硬件工程師們曾經擁的的經驗對開發驅動、操作系統內核等底層核心軟件是非常有幫助的。傳統的做高層軟件開發,網頁設計等的開發人員,無法與其比擬。拋棄曾經不停地熟悉各種不同的電子元器件,閱讀芯片手冊,真正深入了電子系統的靈魂,可以獲得比以前更加廣闊的技術與職業成長空間。
廣義的嵌入式技術通常指一些小型的嵌入式電子系統:傳統的什么51、AVR、PIC稱做嵌入式微控制器;ARM是嵌入式微處理器;以及DSP;FPGA等。嵌入式技術這些年獲得了空前發展,十分火爆,小到智能手機,平板電腦,大到我們的航空母艦,航天飛機,它們里面都需要大量的嵌入式系統,應用面很廣。
值得注意的是:在當前的就業市場上,在找工作中,很多的大型企業(著名的,小的不算)對單純的ARM硬件開發工程師并不比單片機重視多少。很少有大企業的職位里寫“從事過ARM開發優先”。寫的多的是什么?“嵌入式LINUX”到這相信大家看出來了吧,需要的是硬件中的軟件。所以擁有一些硬件開發經驗的工程,只要經過一段時間的軟件開發訓練,就可以快速成長了一名優秀的嵌入式軟件開發工程師,獲得廣闊的職場發展空間。
在大企業中,嵌入式軟件開發具體可以分三類:
嵌入式驅動工程師:編寫和移植各種芯片驅動(如音頻芯片),優化硬件設備驅動(如溫濕度傳感器),得精通各種硬件接口協議(如I2C協議)、系統調度、信號量、鎖機制等等,開發難度最大。該類開發者一般是軟硬件綜合型人才,一般的嵌入式驅動工程師指Linux上的驅動開發工程師,需要精通Linux驅動框架(platform框架、input子系統框架等),結合芯片本身去編寫驅動,驅動的好壞很大程度上決定一個產品的好壞。
嵌入式系統工程師:主要是編寫固件,根據不同平臺移植操作系統,根據應用場景來優化系統,需要熟悉整個操作系統組成與調度,對固件的穩定性高求很高,如果系統不穩定,驅動和應用也是白做的。
嵌入式應用工程師:編寫業務邏輯程序,調用驅動工程師提供的接口控制設備,軟件開發過程所涉內容范圍非常廣,主要使用C語言開發,但經常會涉及C++、Java、python、JavaScript、PHP等各類語言以及各種腳本語言、數據庫、前端后臺、各種通訊協議、甚至一些從來沒聽過的協議或概念,需要很強的學習能力,該職位也是各大公司需量最大的,

