相信很多剛?cè)胄?-2年,甚至5年10年的嵌入式工程師都會(huì)有這些疑惑。我做的事情好像沒有多少技術(shù)含量,我做的事情好像沒有多少創(chuàng)新,做嵌入式的技術(shù)競爭力到底在哪?嵌入式到底是做驅(qū)動(dòng)好還是做應(yīng)用好?
很多人說,嵌入式要學(xué)習(xí)很多很多的技能才能找到工作,既要懂硬件,還要懂編程,精通C/C++,懂操作系統(tǒng)Linux內(nèi)核,懂通信(4G 5G),懂自動(dòng)控制,懂數(shù)字信號(hào)處理,懂網(wǎng)絡(luò)協(xié)議棧,懂FPGA,懂電磁兼容,懂Android,是這樣嗎?(這肯定是有人在吹牛裝逼)。火哥今天和大家聊聊這個(gè)話題。
一、嵌入式的技術(shù)競爭力必須因地制宜,根據(jù)你所在的具體環(huán)境具體分析,case by case, 沒有萬能藥方
說到做嵌入式的技術(shù)競爭力,其實(shí)是和每個(gè)嵌入式工程師所身處的環(huán)境有關(guān)。所謂的環(huán)境包括:你的學(xué)歷,你的家庭因素(是否已婚,家里老人妻兒是否需要時(shí)間精力照顧),你所在的城市以及該城市的嵌入式相關(guān)產(chǎn)業(yè)結(jié)構(gòu),你目前從事的行業(yè)和業(yè)務(wù),你現(xiàn)在的工作年限和當(dāng)前已經(jīng)有的基礎(chǔ)技能與業(yè)務(wù)技能積累深度,你所認(rèn)識(shí)的或互相信任的同行業(yè)的人脈等等。
火哥所擁有的技術(shù)競爭力,放在你所處的環(huán)境往往不一定有競爭力,這就好比你在一個(gè)二三線城市,整個(gè)城市沒有一家做AI深度學(xué)習(xí)相關(guān)的公司,火哥如果給你分享嵌入式+AI深度學(xué)習(xí)的技能,在你的環(huán)境里就毫無參考意義,如果你只是公司的一個(gè)小兵,工作權(quán)限只能修改一個(gè)模塊,火哥給你分享的復(fù)雜業(yè)務(wù)場景下大規(guī)模軟件架構(gòu)技術(shù)也意義不大。
很多時(shí)候個(gè)人是難以改變現(xiàn)有環(huán)境的,要么重新選擇環(huán)境,要么適應(yīng)環(huán)境,再參考別人分享的經(jīng)驗(yàn),根據(jù)自己當(dāng)前的環(huán)境狀況,做出對(duì)自己最有利的選擇。
另外還有一個(gè)老生常談的撕逼問題,嵌入式到底是做驅(qū)動(dòng)好還是做應(yīng)用好,其實(shí)也是要根據(jù)所在城市和公司的組織架構(gòu)情況而定的,沒有絕對(duì)優(yōu)劣。
火哥第一家公司是屬于傳統(tǒng)行業(yè)大廠的嵌入式Linux產(chǎn)品開發(fā)(火哥在應(yīng)用部門),內(nèi)核驅(qū)動(dòng)和應(yīng)用軟件部門是嚴(yán)格劃分的,驅(qū)動(dòng)部門大部分都是5年經(jīng)驗(yàn)以上核心老員工(相對(duì)薪資也高一些),一般不直接校招,應(yīng)用部門工作3-5年經(jīng)驗(yàn)的也可以轉(zhuǎn)到驅(qū)動(dòng)部門,沒有絕對(duì)限制和門檻。
應(yīng)用軟件部門員工相對(duì)年輕,經(jīng)驗(yàn)淺,應(yīng)用軟件部門沒有權(quán)限提交驅(qū)動(dòng)代碼的修改,只能定位到驅(qū)動(dòng)問題,讓驅(qū)動(dòng)部門的工程師修改。當(dāng)時(shí)這家公司很多核心的業(yè)務(wù)邏輯和通信協(xié)議的代碼在驅(qū)動(dòng)層,公司設(shè)計(jì)的這套組織架構(gòu)也是為了保證核心部門員工的穩(wěn)定性,并不是說做應(yīng)用就沒有技術(shù)含量,就很難再轉(zhuǎn)驅(qū)動(dòng)了。
火哥第二家公司是新興行業(yè)小廠AI相關(guān)嵌入式Linux產(chǎn)品開發(fā),嵌入式開發(fā)就一個(gè)部門8個(gè)人(小廠人少,分工就不細(xì)),7個(gè)人做應(yīng)用層開發(fā)(火哥還是做應(yīng)用),1個(gè)人做底層驅(qū)動(dòng)。但是底層驅(qū)動(dòng)的人,只是負(fù)責(zé)新的硬件和驅(qū)動(dòng)功能集成到系統(tǒng)里面,做應(yīng)用開發(fā)的同事,如果遇到底層的驅(qū)動(dòng)的bug,也要自己有能力解決,底層驅(qū)動(dòng)的同事并不會(huì)幫你處理舊的模塊的bug。
火哥第三家公司是新興行業(yè)大廠的Android系統(tǒng)平臺(tái)開發(fā)(火哥終于有做底層驅(qū)動(dòng)的機(jī)會(huì)了)。公司組織架構(gòu)上根本就不是按驅(qū)動(dòng)開發(fā)部門和應(yīng)用開發(fā)部門這樣劃分的,而是按模塊劃分部門,比如攝像頭組,存儲(chǔ)組,視頻編解碼組,音頻編解碼組,藍(lán)牙、wifi組,功耗電源組,bsp組等等。
每個(gè)組,只要你負(fù)責(zé)的模塊有問題,不管是在內(nèi)核驅(qū)動(dòng)層還是在應(yīng)用層,都屬于你要處理的。比如攝像頭組,你要有獨(dú)立解決攝像頭驅(qū)動(dòng)和應(yīng)用軟件的能力,而不是說我只做攝像頭驅(qū)動(dòng),應(yīng)用不管。
另外火哥還了解到,在二三線城市甚至深圳這種一線城市,一些小廠(尤其是做單片機(jī)mcu項(xiàng)目的小廠,可能就二三十人甚至更少),由于人手不夠,或者硬件部門,軟件部門暫時(shí)沒有招到合適的人,所以有些嵌入式軟件工程師不得不暫時(shí)甚至長期兼顧PCB硬件原理圖設(shè)計(jì)的工作。
當(dāng)然火哥認(rèn)為軟硬設(shè)計(jì)都做的工作實(shí)在是不合理,分散精力容易出很多問題,但是不得不承認(rèn)這種分工的工作在嵌入式(尤其是單片機(jī)mcu開發(fā))工程師中是客觀存在的,老板安排的硬件相關(guān)工作也不得不去承擔(dān)。
雖說每個(gè)人具體的技術(shù)競爭力問題要根據(jù)實(shí)際情況,case by case分析,但是火哥還是希望通過本文,拋磚引玉,給出一些case,來引導(dǎo)小伙伴們進(jìn)行深度思考。
二、能保證飯碗的基礎(chǔ)技術(shù)競爭力
一般嵌入式工程師都是指在嵌入式平臺(tái)做軟件開發(fā)的工程師,沒有專門的嵌入式硬件工程師說法(硬件工程師自有專門的硬件工程師,這里以軟件為主)。雖然沒有萬能的技術(shù)競爭力,找工作也不是什么都要懂(公司招人的基本要求是能夠馬上干活幫老板解決問題,而不是啥都懂吹技術(shù)牛逼)。
但是嵌入式還是有些通用的技術(shù)技能需要掌握才能成為一個(gè)合格的嵌入式工程師,隨時(shí)保證有一個(gè)嵌入式的飯碗,能在一線城市找到月薪10K以上的工作(二三線城市根據(jù)實(shí)際情況遞減),火哥還是建議你要掌握以下幾點(diǎn)通用嵌入式基礎(chǔ)技術(shù)。
1. 編程能力
編程能力不用多解釋,嵌入式開發(fā)主要還是軟件編程嘛,C語言盡量精益求精,各種指針、結(jié)構(gòu)體,聯(lián)合體的高級(jí)用法滾瓜爛熟不需要問人(可以上豆瓣搜3-5本高分的C語言編程書籍細(xì)看),C語言編程能力就是嵌入式開發(fā)的命根子。
另外,數(shù)據(jù)結(jié)構(gòu)對(duì)于現(xiàn)代的大規(guī)模嵌入式軟件開發(fā)(不管是單片機(jī)mcu還是Linux)也是必學(xué)科目,我知道很多電子通信,自動(dòng)化專業(yè)出身的嵌入式工程師沒有學(xué)過數(shù)據(jù)結(jié)構(gòu)的課程,所以在這里啰嗦一下,去學(xué)吧,不然很難看懂別人寫的復(fù)雜的程序結(jié)構(gòu)(盡管學(xué)了也不保證看得懂)。
另外,基本的計(jì)算機(jī)算法(堆和棧搜索,鏈表反轉(zhuǎn),哈希表,二叉樹,紅黑樹,深度優(yōu)先廣度優(yōu)先,時(shí)間復(fù)雜度……),有時(shí)間盡量學(xué)一學(xué),補(bǔ)齊短板,雖然并不是說工作中要自己從頭實(shí)現(xiàn)或者工作中絕對(duì)能用到(知道你們大部分人都是寫業(yè)務(wù)邏輯代碼),但是很多公司筆試面試要考,不學(xué)可能過不了面試,學(xué)了可以開拓思路。
C++語言應(yīng)該也是要懂的,但是C++范式太多,學(xué)習(xí)時(shí)間會(huì)比較長,而且每過幾年還會(huì)更新,可以先工作,然后工作有時(shí)間慢慢學(xué)。不要求精通C++(根本就不可能精通所有C++特性和范式),但是至少能夠看得懂基本的語法代碼,能改動(dòng)別人的C++程序,能調(diào)用別人實(shí)現(xiàn)好的class實(shí)現(xiàn)你的功能。
另外最好懂一門腳本語言,比如Python, Python在做測試用例代碼和自動(dòng)化工具的時(shí)候還是用得挺多的,也不難學(xué),比C/C++簡單(我覺得可以先學(xué)Python,再學(xué)C++,這樣C++反而不會(huì)那么難)。
2. 操作系統(tǒng)與計(jì)算機(jī)體系結(jié)構(gòu)知識(shí)(包括一些編譯,鏈接的知識(shí))
嵌入式程序員和非嵌入式程序員(純APP或者web開發(fā))最大的能力差別就在解決操作系統(tǒng)底層,計(jì)算機(jī)體系結(jié)構(gòu)相關(guān)問題的能力。操作系統(tǒng)知識(shí)對(duì)于做Linux/Android 或者 RTOS開發(fā)的嵌入式程序員,不用我啰嗦,學(xué)吧,最好還要能看看Linux內(nèi)核源代碼,理解其中的各種子系統(tǒng)的設(shè)計(jì)機(jī)制和設(shè)備模型。
對(duì)于單片機(jī)MCU裸機(jī)開發(fā)的程序員,雖然可能暫時(shí)用不上,但建議你們有時(shí)間還是應(yīng)該學(xué)一下,這樣對(duì)以后換環(huán)境跳槽選擇的路子會(huì)更寬(相比于完全不懂操作系統(tǒng)的老單片機(jī)工程師有優(yōu)勢),而且Linux FreeRTOS等操作系統(tǒng)內(nèi)核都是開源的,里面有豐富的代碼可能可以給你單片機(jī)編程提供參考(抄),擴(kuò)展思路。
計(jì)算機(jī)體系結(jié)構(gòu)的知識(shí),可以說是做嵌入式程序員(不管是做Linux、Android、RTOS還是單片機(jī)MCU裸機(jī))的內(nèi)功心法。一個(gè)CPU是按照什么樣的流程執(zhí)行程序,cache是什么有什么用,TLB是啥,MMU有什么用,中斷流程是怎么執(zhí)行,中斷服務(wù)函數(shù)和一般函數(shù)有啥不同,一個(gè)程序運(yùn)行的地址空間和各種段是怎么樣的分布,系統(tǒng)是怎么啟動(dòng)最后運(yùn)行你的應(yīng)用程序,系統(tǒng)是怎么管理內(nèi)存,防止碎片化,動(dòng)態(tài)庫靜態(tài)庫原理上有啥區(qū)別,你所使用的編譯器工具鏈,硬浮點(diǎn)軟浮點(diǎn)的基本原理和使用條件。
(不懂的可以從《深入理解計(jì)算機(jī)系統(tǒng)》這本書入手)。這一系列體系結(jié)構(gòu)有關(guān)的知識(shí),火哥認(rèn)為,不管是做操作系統(tǒng)還是做裸機(jī)嵌入式,都必須掌握,才能在面試中,得到面試官對(duì)你技術(shù)底子的認(rèn)可(很多候選人,可能公司相關(guān)業(yè)務(wù)知識(shí)不熟,但是技術(shù)底子不錯(cuò),面試官也會(huì)考慮給機(jī)會(huì))。
3. 硬件的基本知識(shí)
關(guān)于嵌入式要學(xué)多少硬件的問題,眾說紛紜,有些文章渲染地神乎其神,軟硬通吃。但是火哥在嵌入式軟件工程師的面試中,其實(shí)被問的真正的硬件問題(CPU中斷這些體系結(jié)構(gòu)知識(shí)不算真正硬件知識(shí),體系結(jié)構(gòu)知識(shí)是嵌入式必備的)并不多(50次面試就2-3次問過硬件),而且火哥是自動(dòng)化專業(yè)出身,讀書的時(shí)候模電,數(shù)電都有認(rèn)真學(xué),課程設(shè)計(jì)都有認(rèn)真做,讀書的時(shí)候也有過電力電子的項(xiàng)目經(jīng)歷,因而面試的硬件問題對(duì)火哥來說基本不是問題。
火哥的觀點(diǎn)就是,對(duì)于電子通信、自動(dòng)化專業(yè)出身的嵌入式工程師,以前學(xué)校讀書學(xué)的模電,數(shù)電課本知識(shí)基本能夠滿足平時(shí)嵌入式軟件開發(fā)中,看懂原理圖,看示波器,和硬件工程師合作溝通,定位軟硬件問題的需求,并不需要再加強(qiáng)多少硬件知識(shí),也不需要真正去設(shè)計(jì)電路圖,PCB,EMC電磁兼容之類的東西,當(dāng)然懂一些更好,但是也對(duì)找工作加不了太多分。
但是如果是計(jì)算機(jī)類專業(yè)出身,對(duì)硬件完全沒有概念也不行,還是需要花1-2個(gè)月時(shí)間,看看模電、數(shù)電的課本,學(xué)習(xí)示波器的使用,3個(gè)月足以學(xué)習(xí)基本的概念知識(shí),示波器的使用也就像使用一個(gè)辦公軟件一樣,不需要多精通,會(huì)用就行,沒有網(wǎng)上吹的那么神(動(dòng)不動(dòng)示波器分析射頻電路,fft頻譜特性,動(dòng)態(tài)響應(yīng)特性)。
當(dāng)然如果是在做單片機(jī)MCU開發(fā)的小公司,由于公司缺乏人手,需要兼顧硬件開發(fā)的話,那只好硬著頭皮上了,但是這樣花費(fèi)的時(shí)間精力可能比較多,對(duì)你跳槽正規(guī)大廠的嵌入式也沒有多少好處。
4. 計(jì)算機(jī)網(wǎng)絡(luò)知識(shí)
計(jì)算機(jī)網(wǎng)絡(luò),TCP/IP,套接字編程,如果是電子通信專業(yè)出身的,學(xué)吧!現(xiàn)代嵌入式設(shè)備連接網(wǎng)絡(luò)的功能越來越多,越來越常見,不一定要把TCP/IP協(xié)議啃得很深(Linux內(nèi)核有現(xiàn)成的開源實(shí)現(xiàn)代碼,不需要你從0開始做),但是基本的概念和網(wǎng)絡(luò)應(yīng)用編程還是要懂,才能增加你的就業(yè)機(jī)會(huì)。
5. 各種寄存器,軟硬件調(diào)試方法和經(jīng)驗(yàn)
調(diào)試配置寄存器,軟硬件聯(lián)調(diào)就是傳統(tǒng)嵌入式代代相傳的手藝活了。這也很能體現(xiàn)大部分人所謂的實(shí)際項(xiàng)目中解決問題的能力(定位問題到寄存器配置上,解決問題真有成就感哈!),這項(xiàng)能力還是要靠實(shí)際的項(xiàng)目來鍛煉,也就是嵌入式中所謂的吃經(jīng)驗(yàn)的東西。
但火哥認(rèn)為,現(xiàn)代嵌入式開發(fā)不要太迷信這種調(diào)試寄存器帶來的成就感,還是應(yīng)該把大部分精力放在計(jì)算機(jī)軟件、操作系統(tǒng),體系結(jié)構(gòu)等基礎(chǔ)知識(shí)的學(xué)習(xí)上。調(diào)試寄存器的能力就像NBA比賽的灌籃技能一樣,很有成就感,帶來全場歡呼,但是畢竟不是常規(guī)得分手段,也不是常規(guī)技能(大部分得分還是要靠戰(zhàn)術(shù)配合,投籃,上籃,三分遠(yuǎn)射),嵌入式開發(fā)大部分精力還是要放在編程,實(shí)現(xiàn)業(yè)務(wù)邏輯上。
三、升職加薪的業(yè)務(wù)技術(shù)競爭力
要想在公司升值加薪,除了基礎(chǔ)技術(shù)競爭力之外(這項(xiàng)只能幫你好跳槽,找工作,不保證升職加薪),還需要和公司業(yè)務(wù)相關(guān)的技術(shù)競爭力(這項(xiàng)競爭力只在同行業(yè)跳槽有效,不保證跨行業(yè)跳槽)。
所謂業(yè)務(wù)技術(shù)競爭力,就是在特定行業(yè)和公司才有價(jià)值的技術(shù)競爭力,是無法輕易從書本獲取的技術(shù)。盡管火哥承認(rèn)Linux內(nèi)核,操作系統(tǒng)原理,計(jì)算機(jī)基礎(chǔ)算法,計(jì)算機(jī)體系結(jié)構(gòu)這些知識(shí)有一定難度,不是那么容易學(xué)的,但是畢竟一個(gè)沒有工作經(jīng)驗(yàn)的學(xué)生都能從書本這種最廉價(jià)的途徑獲取,所以無法構(gòu)成業(yè)務(wù)競爭力的壁壘,業(yè)務(wù)技術(shù)競爭力也是學(xué)生和有工作經(jīng)驗(yàn)的工程師最主要的差距。
一般來說,業(yè)務(wù)技術(shù)需要入行之后,在工作中學(xué)習(xí),而且不同行業(yè)不同公司能學(xué)習(xí)到的業(yè)務(wù)技術(shù)是不一樣的。比如說,通信行業(yè)的公司,4G LTE協(xié)議,標(biāo)準(zhǔn)相關(guān)的技術(shù)就是業(yè)務(wù)技術(shù)競爭力;網(wǎng)絡(luò)產(chǎn)品行業(yè)的公司,那些網(wǎng)卡路由標(biāo)準(zhǔn)協(xié)議相關(guān)的技術(shù)就是業(yè)務(wù)競爭力;機(jī)頂盒產(chǎn)品的公司,音視頻流媒體編解碼播放的相關(guān)技術(shù)標(biāo)準(zhǔn)就是業(yè)務(wù)競爭力;網(wǎng)絡(luò)攝像頭產(chǎn)品的公司,攝像頭數(shù)據(jù)采集與網(wǎng)絡(luò)通信協(xié)議相關(guān)的技術(shù)和標(biāo)準(zhǔn)就是業(yè)務(wù)競爭力……
一般進(jìn)入某個(gè)行業(yè)某個(gè)公司之后,只有多學(xué)習(xí)積累公司業(yè)務(wù)相關(guān)的知識(shí),才能自己獨(dú)立完成業(yè)務(wù)相關(guān)的項(xiàng)目,然后指導(dǎo)新人、同事,帶領(lǐng)團(tuán)隊(duì)做業(yè)務(wù)相關(guān)的更大的項(xiàng)目,進(jìn)而在公司掌握更大的業(yè)務(wù)話語權(quán),和高管討論公司業(yè)務(wù)規(guī)劃,乃至戰(zhàn)略規(guī)劃。
一般站在公司高管的角度,思考的問題都是業(yè)務(wù)發(fā)展方向和戰(zhàn)略上的問題,一個(gè)工程師Linux內(nèi)核底層驅(qū)動(dòng)理論和技術(shù)能力再好,如果不是在Red Hat SUSE 或者華為的Linux內(nèi)核部門這種把內(nèi)核開發(fā)作為業(yè)務(wù)方向的公司和部門,那么你牛逼的底層技術(shù)能力,也只是一項(xiàng)基礎(chǔ)技術(shù),平時(shí)工作解決的再復(fù)雜再難的底層內(nèi)核問題,寫的再風(fēng)騷的代碼,在高管眼里都只是解決一個(gè)普通問題,實(shí)現(xiàn)一個(gè)普通功能而已。
這些都是為公司的業(yè)務(wù)服務(wù)的鋪路石而已,而高管就像在路上開車,眼里只有終點(diǎn),盡管鋪路石的好壞可能導(dǎo)致路上的顛簸,但是只要順利到達(dá)終點(diǎn)鋪路石看起來并沒有那么重要。
可以說,在公司,你所掌握的和公司戰(zhàn)略方向相關(guān)的業(yè)務(wù)技能,就像一個(gè)放大器,把你實(shí)際的技術(shù)能力和價(jià)值放大多倍,進(jìn)而帶來更高的收益。但這也帶來了一些問題,如果公司近年的業(yè)績不夠好,你牛逼的業(yè)務(wù)能力可能不會(huì)給你帶來等價(jià)的回報(bào),那就得考慮你在公司業(yè)務(wù)方向上花費(fèi)的時(shí)間和精力到底值不值。
火哥第一家公司就有不少業(yè)務(wù)專家,但是公司業(yè)績一年不如一年,導(dǎo)致業(yè)務(wù)專家也和普通小兵一樣拿死工資,沒有得到相應(yīng)的年終獎(jiǎng),最后,火哥跳槽出來的時(shí)候,差不多算跨行跳槽,相關(guān)的業(yè)務(wù)知識(shí)也在面試中沒有太大的幫助。
同時(shí),火哥也在和很多面試官聊天中,發(fā)現(xiàn)很多業(yè)務(wù)牛人,出來面試,雖然業(yè)務(wù)技術(shù)牛逼,但是基礎(chǔ)技術(shù)花費(fèi)的精力不夠,所以沒有得到面試官的認(rèn)可。當(dāng)然,在同行跳槽的情況下,業(yè)務(wù)技術(shù)能力的加分還是很大的,比如手機(jī)行業(yè),高通跳槽去OPPO、小米的對(duì)口部門,待遇上的提升就很多,但是這種真正業(yè)務(wù)對(duì)口的跳槽機(jī)會(huì),火哥認(rèn)為占少數(shù),所以在業(yè)務(wù)技術(shù)競爭力上,行業(yè)的選擇一定要有眼光,高薪跳槽機(jī)會(huì)多的行業(yè),業(yè)務(wù)技術(shù)才是有競爭力的技術(shù)(盡管可能不是最難的技術(shù))。
四、無法輕易獲取的門檻技術(shù)競爭力
所謂無法輕易獲取的門檻技術(shù)競爭力其實(shí)也是業(yè)務(wù)競爭力的一種,只是相對(duì)于常規(guī)的業(yè)務(wù)競爭力來說具有更高的獲取門檻。上一節(jié)所說的業(yè)務(wù)競爭力是指一般的業(yè)務(wù)競爭力,可以在公司內(nèi)部,通過參與公司實(shí)際項(xiàng)目,業(yè)務(wù)知識(shí)培訓(xùn)或者老員工指導(dǎo),口口相傳中獲取。
而這種門檻技術(shù),在公司中一般也是保密的,非偶然機(jī)遇,無法獲取,靠自己找資料自學(xué)琢磨基本行不通。嵌入式開發(fā)相關(guān)領(lǐng)域無法輕易獲取的門檻技術(shù)競爭力一般有這些(如果火哥說的有遺漏,可以后臺(tái)私信補(bǔ)充):
4G/5G 通信基帶算法與核心業(yè)務(wù)邏輯
WiFi、藍(lán)牙驅(qū)動(dòng)加載的固件或IP中核心的算法與業(yè)務(wù)邏輯
Camera驅(qū)動(dòng)加載的固件或IP中,MIPI-CSI高速數(shù)據(jù)采集接口相關(guān)的核心業(yè)務(wù)邏輯,ISP(數(shù)字圖像處理)相關(guān)的核心算法與業(yè)務(wù)邏輯
GPU驅(qū)動(dòng)加載的固件或IP,以及OpenGL、CUDA、OpenCL等API標(biāo)準(zhǔn)的庫實(shí)現(xiàn)中核心的算法與業(yè)務(wù)邏輯
音視頻編解碼Codec驅(qū)動(dòng)加載的固件或IP,以及OpenMax等API標(biāo)準(zhǔn)的庫實(shí)現(xiàn)中的核心算法與業(yè)務(wù)邏輯
高清LCD/OLED屏幕,或者HDMI屏幕驅(qū)動(dòng)加載的固件或IP中核心的業(yè)務(wù)邏輯和實(shí)現(xiàn)
嵌入式設(shè)備電源低功耗相關(guān)技術(shù)
嵌入式設(shè)備信息安全與密碼保護(hù)相關(guān)技術(shù)
這些門檻業(yè)務(wù)技能,除非你有偶然的機(jī)會(huì),去了某個(gè)IC原廠專門的部門,否則基本不可能接觸到這種高門檻的業(yè)務(wù)技能。如果你在OEM產(chǎn)商從事相關(guān)的崗位驅(qū)動(dòng)(比如在小米做手機(jī)的camera或者WIFI開發(fā)),你也只能從高通或MTK拿到二進(jìn)制的固件,幾乎不可能看到核心業(yè)務(wù)邏輯的源代碼。
這些模塊雖然Linux內(nèi)核驅(qū)動(dòng)部分可能為了遵守GPL協(xié)議開源,但是一般這種開源的驅(qū)動(dòng)都是hardware enable的驅(qū)動(dòng),也就是說驅(qū)動(dòng)里面只有使能或者停止設(shè)備的基本功能,核心業(yè)務(wù)邏輯相關(guān)的代碼都抽出來做在固件(可以是內(nèi)核加載的固件,也可以是應(yīng)用層的閉源庫)。
有機(jī)會(huì)接觸這類高門檻核心業(yè)務(wù)崗位,也算一種幸運(yùn),如果能跳槽到對(duì)口的公司,可能拿到非常高的待遇(當(dāng)然也可能跳槽要簽競業(yè)協(xié)議,每月從老東家拿錢)。
這種崗位的員工,在就業(yè)市場上是非常難招的,公司也會(huì)出于防止核心門檻業(yè)務(wù)技術(shù)機(jī)密泄露的目的,花大價(jià)錢留住這些核心員工,也不會(huì)培養(yǎng)太多懂得這些核心門檻業(yè)務(wù)技術(shù)的員工。
有機(jī)會(huì)從事相關(guān)門檻業(yè)務(wù)技術(shù)的開發(fā),如果跳槽到對(duì)口的賺錢的公司,就有突破年薪50W甚至100W的機(jī)會(huì),也算是一種幸運(yùn)吧。這種嵌入式領(lǐng)域的門檻業(yè)務(wù)技術(shù)本身的難度相對(duì)于Linux內(nèi)核,Android系統(tǒng)框架等復(fù)雜系統(tǒng)而言,也不是絕對(duì)的難(畢竟大規(guī)模應(yīng)用的技術(shù),本身不可能比理論性的東西難,智商良好的大學(xué)生應(yīng)該都能學(xué)會(huì)),但是輕易無法獲取,會(huì)有一種神秘感。
五、跳槽漲薪的新興技術(shù)競爭力
目前嵌入式相關(guān)的行業(yè)和領(lǐng)域,出現(xiàn)了很多不同于傳統(tǒng)嵌入式領(lǐng)域的產(chǎn)品與解決方案,比如嵌入式+物聯(lián)網(wǎng)+云端,嵌入式+大數(shù)據(jù),嵌入式+人工智能,嵌入式+無人駕駛……
關(guān)于這些新興技術(shù),也有一些爭議,有些老的工程師對(duì)這些東西表示不屑,認(rèn)為也不是很有技術(shù)難度和深度,就是調(diào)用一下別人做的云端或者AI的API,有很多泡沫,無法落地等等……他們覺得做嵌入式還是不能浮躁,應(yīng)該踏踏實(shí)實(shí)去鉆研Linux內(nèi)核,網(wǎng)絡(luò)協(xié)議棧等非常深非常難的已有技術(shù)。
但是,火哥對(duì)年輕的嵌入式工程師往新興技術(shù)領(lǐng)域發(fā)展,持支持的態(tài)度,我也相信我們公司總監(jiān)說的“right time to do right things”。而且從大的趨勢上看,NVIDIA公司推出的Jetson平臺(tái),AI邊緣計(jì)算解決方案以及Xavier平臺(tái)無人駕駛解決方案;Intel公司收購以色列無人駕駛芯片公司MobilEye;ARM公司在CPU里面做的神經(jīng)網(wǎng)絡(luò)并行矢量計(jì)算加速庫,最近也大規(guī)模招聘物聯(lián)網(wǎng)與云端項(xiàng)目相關(guān)的工程師;華為的海思麒麟970芯片集成AI加速單元NPU;瑞星微RK3399Pro也有NPU支持各種AI應(yīng)用的部署……
行業(yè)領(lǐng)軍公司的布局,種種跡象表明,AI、物聯(lián)網(wǎng)、云端+嵌入式解決方案的新興技術(shù),已經(jīng)是大勢所趨,并不像某些有經(jīng)驗(yàn)的老工程師所說的都是泡沫,無法落地。
所以,火哥還是建議剛?cè)胄凶銮度胧降哪贻p人,盡量地往嵌入式+人工智能+物聯(lián)網(wǎng)+云端的應(yīng)用解決方案領(lǐng)域靠攏,要敢于嘗試新生事物。新興技術(shù)能夠落地應(yīng)用,就證明這里面并不是特別難學(xué),也不是一定要鉆研內(nèi)核驅(qū)動(dòng),積累很深的東西才能學(xué)新興技術(shù)。
而且不難學(xué)的技術(shù),不代表沒有技術(shù)含量,技術(shù)上的東西,很多時(shí)間是在信息不對(duì)稱的情況下,打一個(gè)時(shí)間差,搶到一個(gè)合適的崗位,雖然以那些老工程師的智商,應(yīng)該也能學(xué)會(huì)這些新興技術(shù),但是他們不一定有這個(gè)時(shí)間和精力(時(shí)間成本可能是最大的成本),換行成本也比較高,所以這塊更適合年輕人爭取時(shí)間差,在懂得這項(xiàng)技術(shù)的人還不多的時(shí)候,趕快搶到一個(gè)好的位置,能夠有業(yè)務(wù)上的話語權(quán)。
從另一方面說,由于之前2節(jié)所描述的嵌入式領(lǐng)域業(yè)務(wù)技術(shù)上的競爭力,在傳統(tǒng)領(lǐng)域,由于已經(jīng)發(fā)展了一段時(shí)間,有很多行業(yè)大佬已經(jīng)掌握這些傳統(tǒng)業(yè)務(wù)的技術(shù)話語權(quán),而且部分業(yè)務(wù)還有很大的獲得門檻,必須要努力+機(jī)遇才有機(jī)會(huì)進(jìn)入對(duì)應(yīng)崗位做下去,靠自學(xué)很難積累。
一旦一個(gè)領(lǐng)域,在你前面積攢了8年,10年甚至15年以上經(jīng)驗(yàn)的大佬太多,并且制定了太多的行業(yè)標(biāo)準(zhǔn)和專利,你就只能被別人的業(yè)務(wù)標(biāo)準(zhǔn)和專利牽著鼻子走,很難做到很高的位置。
這就像很多工程師說,在單片機(jī)上實(shí)現(xiàn)藍(lán)牙,WIFI,TCP/IP協(xié)議棧也是很難很有挑戰(zhàn)的,然而,做技術(shù)的目的是為了什么,花這么多精力重新實(shí)現(xiàn)復(fù)雜的協(xié)議棧,只是為了炫耀技術(shù)牛逼嗎?在這些成熟技術(shù)的領(lǐng)域,已經(jīng)有很多前人鋪好路,有很多現(xiàn)成的模塊和開源代碼,也有很多的別人制定的認(rèn)證標(biāo)準(zhǔn)和專利(所謂認(rèn)證標(biāo)準(zhǔn)就是在某些市場,某些產(chǎn)品哪怕實(shí)現(xiàn)了所有功能,但是如果功能不符合一些公司制定的標(biāo)準(zhǔn),那就拿不到認(rèn)證,產(chǎn)品不允許在這個(gè)市場出售。
比如音頻相關(guān)的產(chǎn)品如何沒有通過杜比認(rèn)證,在很多市場就不被接受,你不得不花時(shí)間學(xué)習(xí)很多別人制定的標(biāo)準(zhǔn),而有制定標(biāo)準(zhǔn)話語權(quán)的大佬,可以隨心所欲修改標(biāo)準(zhǔn))。所以年輕人靠新興的技術(shù),在嵌入式+人工智能,嵌入式+物聯(lián)網(wǎng)+云端等領(lǐng)域,通過同起點(diǎn),同樣的學(xué)習(xí)時(shí)間,可能可以做到彎道超車,3年之內(nèi),在收入上超過那些工作8年,10年的大佬。
當(dāng)然,火哥所說的這些新興技術(shù)領(lǐng)域和行業(yè),也要根據(jù)你自身的情況因地制宜,制定學(xué)習(xí)的計(jì)劃。
首先,不是所有城市都有這些新興技術(shù)領(lǐng)域的相關(guān)企業(yè),如果你想入行新領(lǐng)域,可能就得做出跳槽去北上深等一線城市的決策,如果已經(jīng)在二三線城市安家,要照顧家人,可能就得做一些取舍,不得不放棄這些發(fā)展計(jì)劃,繼續(xù)在舊的領(lǐng)域深耕。
其次,第二節(jié)所說的基礎(chǔ)技術(shù)競爭力應(yīng)該放在首位。在夯實(shí)基礎(chǔ)(不一定要達(dá)到精通,但是還是要扎實(shí))的情況下,保證能得到面試官的對(duì)你技術(shù)底子的認(rèn)可,能找到合適的工作的前提下,跳過二、三節(jié)所說的傳統(tǒng)業(yè)務(wù)技術(shù)的學(xué)習(xí),直接進(jìn)入新興技術(shù)領(lǐng)域,彎道超車。
最后,要保持一雙火眼金睛,要能夠識(shí)別出你所做的新興業(yè)務(wù)到底是真新興,還是傳統(tǒng)業(yè)務(wù)包了一層皮。比如有些童鞋在所謂做嵌入式+物聯(lián)網(wǎng)業(yè)務(wù)的公司,實(shí)際上每天的工作就是用stm32單片機(jī)和NB-IOT模塊,每天做一些調(diào)用單片機(jī)UART,I2C接口和NB-IOT模組通信的重復(fù)性工作,這就不算是真正的新興業(yè)務(wù),也不具備真正的新興技術(shù)競爭力。
真正的嵌入式+物聯(lián)網(wǎng)領(lǐng)域的技術(shù)競爭力應(yīng)該熟悉整套IOT終端到云端的解決方案架構(gòu),熟悉如何搭建部署這套系統(tǒng),熟悉IOT設(shè)備與終端和云端的通信協(xié)議的核心業(yè)務(wù)邏輯。同理,在嵌入式+AI相關(guān)的公司,雖然嵌入式工程師不一定要懂得自己實(shí)現(xiàn)AI核心算法,但是核心技術(shù)競爭力也不是指調(diào)用別人的人臉識(shí)別閉源庫函數(shù),做簡單人臉識(shí)別應(yīng)用。
火哥認(rèn)為嵌入式+AI相關(guān)領(lǐng)域的核心業(yè)務(wù)競爭力,也是在熟悉整套邊緣端到云的AI計(jì)算系統(tǒng)架構(gòu)和解決方案,懂得一些AI算法的基本原理(不一定要自己獨(dú)立能實(shí)現(xiàn)),各種神經(jīng)網(wǎng)絡(luò)的優(yōu)劣,能對(duì)嵌入式平臺(tái)的AI軟件做系統(tǒng)級(jí)別的計(jì)算性能的加速優(yōu)化,部署落地,解決客戶實(shí)際應(yīng)用場景中的問題,提供反饋給做AI算法的工程師,幫助他們修正訓(xùn)練出來的模型。
最后也灌一句雞湯,Right time to do right things。
評(píng)論
查看更多