各路大神對于嵌入式的核心競爭力的看法
一.行業(yè)
找工作時,并不光光是找職位,更重要的是找行業(yè)。不同行業(yè)中同樣的職位需要掌握的知識技能是不一樣的,比如同樣是嵌入式驅(qū)動開發(fā)工程師,消費電子可能主要是做BOOT,通信設(shè)備就更看重協(xié)議和接口的實現(xiàn)。這樣過個三五年轉(zhuǎn)行的成本就很高了,因為你在這樣行業(yè)中大量用到的知識另外一個行業(yè)可能基本用不到。
因此,在嵌入式的大家庭中選擇一個好的行業(yè)尤為重要,就應(yīng)用領(lǐng)域來說主要有消費電子、通信設(shè)備、安檢安防、醫(yī)療電子、工業(yè)控制、汽車電子??偟膩碚f,這幾個行業(yè)都處于上升期,行業(yè)產(chǎn)值快速攀升,除非下一次技術(shù)革命到來,否則嵌入式還將繼續(xù)長大。但如果一個個分開來,區(qū)別還是有的。
消費電子伴隨著中產(chǎn)階級的擴(kuò)大和消費理念的強(qiáng)化在近幾年成為成長最快的領(lǐng)域,從硬件到軟件,從手機(jī)到平板,再到各種智能電視,嵌入式得到迅速普及,大有把你所能碰到的東西都變成電腦的架勢,據(jù)統(tǒng)計,消費電子五年的復(fù)合增長率高達(dá)73%,在經(jīng)濟(jì)低迷的2012年,國內(nèi)的消費電子依然有高速的增長。但消費電子升級快、壓力大,分子風(fēng)光,下面分母死傷無數(shù),極高速的增長會不會帶來泡沫還需要謹(jǐn)慎觀察。
通信設(shè)備領(lǐng)域主要是電信基礎(chǔ)設(shè)施、骨干網(wǎng)設(shè)施等組成,其增長的原動力還是網(wǎng)絡(luò)更好更快更廣和國家相關(guān)的電信基建計劃,3G、4G,LTD都是燒錢的游戲。雖然你從2011下半年開始,華為中興兩個領(lǐng)頭羊都出現(xiàn)了利潤大幅下滑的現(xiàn)象,這主要是受全球經(jīng)濟(jì)不景氣的影響,各國紛紛縮減了投資,但在未來2-3年內(nèi),收到新一代IPV6網(wǎng)絡(luò)和3G普及的刺激,通信設(shè)備將迎來艷陽天。
工業(yè)控制是個很穩(wěn)重的領(lǐng)域,不像消費電子這么浮躁,也趕不上通信設(shè)備升級的速度,工業(yè)控制講究的是實用和穩(wěn)定,比方說當(dāng)今大部分工業(yè)控制方法都是古老的PID,工控機(jī)還裝著古老的WIN2000。工控嵌入式的增長完全和工業(yè)增長指數(shù)聯(lián)系在一起,越是技術(shù)密集型的工業(yè)就越需要嵌入式軟件來幫助管理,所以最近經(jīng)濟(jì)不景氣和虛擬經(jīng)濟(jì)的畸形發(fā)展已經(jīng)壓迫到了實體工業(yè)的發(fā)展,工控的增長會是一個慢而平穩(wěn)的長期過程。
安檢安防也是一個近幾年快速爆發(fā)的領(lǐng)域,源動力來源于安全和維穩(wěn)。一方面是單位需要,比如小區(qū),飯店,學(xué)校,銀行,另一方面就是城市安全需要,比如交管,街道。前幾年在大城市掀起的攝像頭風(fēng)如今廣大縣城也正在上演,2011是安防行業(yè)值得慶賀的一年,這一年,安防從模擬到數(shù)字、從單機(jī)到網(wǎng)絡(luò)、從普清到高清,再加之結(jié)合“安全城市”、“智慧城市”、“物聯(lián)網(wǎng)”等概念,雖然現(xiàn)在行業(yè)整體產(chǎn)值并不高,但未來10-20年都將是安防設(shè)備大普及年。
醫(yī)療電子的增長已進(jìn)入平穩(wěn)期,蓋因大小醫(yī)院早已完成了設(shè)備更新改造,在未來的20年內(nèi)他們將很少會采購新的設(shè)備,最近五年復(fù)合增長率為15%,不過醫(yī)療電子的增長希望已經(jīng)轉(zhuǎn)向了便攜式醫(yī)療設(shè)備,就是我們常看到的電子血壓計、紅外體溫計,便攜式血糖儀之類的設(shè)備,復(fù)合增長率為24%,產(chǎn)值達(dá)到近40億美元。但說實話根據(jù)生活經(jīng)驗,這些便攜設(shè)備家里都不怎么用,更多的還是傳統(tǒng)設(shè)備。當(dāng)然了,中國有13億人,隨著老齡化加劇和國人健康意識提高,便攜式醫(yī)療電子會有一個慢慢起飛的過程。
汽車電子適合汽車緊密相連的產(chǎn)業(yè),下面的導(dǎo)航設(shè)備,車載娛樂設(shè)備,車輛控制系統(tǒng)都是準(zhǔn)標(biāo)配設(shè)備,可以說是一榮俱榮,一損俱損。汽車的增長率今年是14-15%,相信汽車電子也會保持一個類似的速度增長。
應(yīng)該說,每個主要領(lǐng)域都是有不俗的表現(xiàn)的,相比其他落日產(chǎn)業(yè),這幾個領(lǐng)域都有個人發(fā)揮的足夠空間。
二.核心競爭力之行業(yè)經(jīng)驗
什么東西是不能簡單復(fù)制的,只要不是書本的就是不能簡單復(fù)制的。
什么是行業(yè)經(jīng)驗?zāi)??我是這樣認(rèn)為的:每個行業(yè)都有一條長長的產(chǎn)業(yè)鏈,比如手機(jī),從芯片銷售集團(tuán)或者說解決方案提供商(ARM/INTEL等+TI/高通/MTK等+代理商)到手機(jī)設(shè)計集團(tuán)(軟件方面:蘋果/安卓/WP等,硬件方面:蘋果/三星/微軟/諾基亞等)再到手機(jī)生產(chǎn)集團(tuán)(很多就不舉例了)最后到消費者,這是一條主鏈條。
你所在的公司一般位于中間某一級別上,這樣就出現(xiàn)了你的上游和你的下游,行業(yè)經(jīng)驗就是你在你的上游,同級,下游中的形象,更簡單地說,你的上游愿意與你長期有誠意的合作,你的同級欽佩你的能力和人品,你的下游認(rèn)為與你合作有利有信,總之在全行業(yè)樹立起你的可靠形象是最關(guān)鍵的行業(yè)經(jīng)驗,其次就是技巧性的行業(yè)經(jīng)驗,比如說合作流程這些可以馬上學(xué)到的東西。前者將是你的行業(yè)名片,后者將為你錦上添花。
但是行業(yè)經(jīng)驗并不容易積累,原因在于研發(fā)人員一般是鐵屁股,沒有機(jī)會走出去接觸行業(yè)內(nèi)部,上游有采購經(jīng)理,下游有銷售經(jīng)理,你又有項目經(jīng)理管,你只是執(zhí)行項目經(jīng)理和架構(gòu)師的指令罷了。但如果不深入了解行業(yè),你始終只是IT民工,沒有發(fā)展的機(jī)會。
我覺得,當(dāng)你投身研發(fā)工作3年后,你下面應(yīng)該有3名小兵,對他們來將,你就是他們的架構(gòu)師,你要充分把握這一機(jī)會減少技術(shù)時間,加強(qiáng)學(xué)習(xí)管理。對下,你需要為你的組員合理分配工作,管理他們的情緒,激發(fā)他們的工作熱情,完成既定工作。對上,你要為你們組爭取利益,并能在所有組面前清楚地表達(dá)你的意見和建議,目的只有一個:露臉,使上司認(rèn)為你是一個綜合性的人才。
在往上走,你成為高級技術(shù)人員后,你會有很多機(jī)會和同行打交道了,比如各種學(xué)習(xí)會、交流會、展覽會,和他們建立融洽的關(guān)系很重要。也多和市場銷售人員打交道,他們是你在這一時期唯一能獲得上下游信息的人。
再往上走,就基本定型了。你可以考慮急流勇退自己創(chuàng)業(yè)、也可以走行業(yè)內(nèi)技術(shù)專家、也可以走技術(shù)與管理結(jié)合的路線??傊瑩碛心姆矫娴暮诵母偁幜?,你就適合往哪個方向走。
最后我想說一句:別把自己當(dāng)做機(jī)器使,讓自己沉浸在技術(shù)的世界里,一天到晚干著體力勞動,合理分配技術(shù)與社交的時間非常重要,不然最后你很有可能被釘死在一個中層崗位上,更重要的是你可能孑然一身,真愛無覓,孤伴終老。
三.核心競爭力之技術(shù)經(jīng)驗
一個研發(fā)人員得以安身立命的根本就是技術(shù)經(jīng)驗。不過可惜的是,技術(shù)是很容易復(fù)制的。我曾經(jīng)很自得于自己做過51/430的實際項目,但是說實話,這都不是什么核心競爭力,因為我做的項目也大量參考了網(wǎng)上前輩的代碼,有的甚至是直接拿過來用的,我做的工作有大部分是代碼的剪裁而已。而這個,我相信一個之前沒有經(jīng)驗的電類本科生,一個月的時間也能學(xué)會。也就是說,我和他相比,只是多了一個月的優(yōu)勢罷了。這種容易學(xué)習(xí),容易復(fù)制的經(jīng)驗,不能算是核心競爭力。你在網(wǎng)上找到的一切代碼都只能算學(xué)習(xí)資料。
技術(shù)人員除了復(fù)制粘貼外,更應(yīng)該掌握核心的原理性技術(shù)。什么是核心技術(shù)呢?就是本來沒有只能由你創(chuàng)造或只能由你更低成本創(chuàng)造的技術(shù),比如我的公司是一家從事多媒體處理的公司,我們要開發(fā)一個自動識別瞳孔的設(shè)備,核心就是瞳孔識別算法。這個算法可以從網(wǎng)上拿,從國外買,或者自己研發(fā),網(wǎng)上的算法也許你看得懂,但如果不會優(yōu)化,只會裁剪那還是白搭的,這就是原理性技術(shù)和技巧性技術(shù)的區(qū)別。從國外買成本高而且得不到源碼,這樣自主研發(fā)就是唯一一條路了,如果整個公司只有你有這樣的能力根據(jù)客戶需求從原理出發(fā)設(shè)計源碼核心,那么恭喜你,你可以理所當(dāng)讓的拿著高薪了。
技巧性技術(shù)更多是指一種經(jīng)驗,一種積累。比如我積累了兩年的單片機(jī)函數(shù)庫、我在調(diào)試放大器時遇到書本中沒說的問題等,這些都不是在書上就能學(xué)到的內(nèi)容,而擁有這些經(jīng)驗會讓你開發(fā)的速度變快。但技巧性技術(shù)絕對不是核心競爭力,因為它可以在短期內(nèi)掌握。但有人會問“IT/電子行業(yè)中有些老人隨便一句指點就足夠讓新人琢磨個半年,這種現(xiàn)象是客觀存在的,這個不是核心競爭力嗎?”,要注意的是,老人和新人是沒有競爭關(guān)系的,因為他們本來就沒在一個等級上,所以這種倚老賣老的行為構(gòu)不成核心競爭力,核心競爭力只能在同級之間比較。
技巧性技術(shù)可以轉(zhuǎn)化為核心技術(shù),比方說我調(diào)試放大器時遇到一個詭異的問題,我用結(jié)果反推原因,再用理論驗證,再而用理論上的調(diào)整規(guī)避問題,從現(xiàn)象升華到本質(zhì),從知道升華到掌握,就是這么一個轉(zhuǎn)化的過程。但是不是所有的技巧性技術(shù)都能成功轉(zhuǎn)化,技巧性技術(shù)本質(zhì)上講就是幫助開發(fā)的經(jīng)驗罷了,扎實的掌握原理并能舉一反三才是核心技術(shù)的源泉。
說了這么多,總結(jié)一下。核心競爭力大致分成兩個方面:深入的行業(yè)經(jīng)驗和扎實的原理技術(shù)。前者通過時間慢慢的積累,后者可以通過密集的學(xué)習(xí)掌握,但兩者也都需要長期的實踐鞏固加強(qiáng)。
四.嵌入式核心競爭力六大特點
1、嵌入式系統(tǒng)為了提高執(zhí)行速度和系統(tǒng)可靠性,嵌入式系統(tǒng)中的軟件一般都固化在存儲器芯片或單片機(jī)本身中,而不是存貯于磁盤等載體中。
2、嵌入式系統(tǒng)的硬件和軟件都必須地設(shè)計,量體裁衣、去除冗余,力爭在同樣的硅片面積上實現(xiàn)更高的性能,這樣才能在具體應(yīng)用中對處理器的選擇更具有競爭力。
3、嵌入式系統(tǒng)是將先進(jìn)的計算機(jī)技術(shù)、半導(dǎo)體技術(shù)和電子技術(shù)與各個行業(yè)的具體應(yīng)用相結(jié)合后的產(chǎn)物。這一點就決定了它必然是一個技術(shù)密集、資金密集、高度分散、不斷創(chuàng)新的知識集成系統(tǒng)。
4、嵌入式系統(tǒng)本身不具備自舉開發(fā)能力,即使設(shè)計完成以后用戶通常也是不能對其中的程序功能進(jìn)行修改的,必須有一套開發(fā)工具和環(huán)境才能進(jìn)行開發(fā)。
5、嵌入式系統(tǒng)通常是面向特定應(yīng)用的嵌入式CPU,與通用型的不同就是嵌入式CPU大多工作在為特定用戶群設(shè)計的系統(tǒng)中,它通常都具有低功耗、體積小、集成度高等特點,能夠把通用CPU中許多由板卡完成的任務(wù)集成在芯片內(nèi)部,從而有利于嵌入式系統(tǒng)設(shè)計趨于小型化,移動能力大大增強(qiáng),跟網(wǎng)絡(luò)的耦合也越來越緊密。
6、嵌入式系統(tǒng)和具體應(yīng)用有機(jī)地結(jié)合在一起,它的升級換代也是和具體產(chǎn)品同步進(jìn)行,因此嵌入式系統(tǒng)產(chǎn)品一旦進(jìn)入市場,具有較長的生命周期。
五.職位分析
嵌入式開發(fā)涵蓋硬件軟件,開發(fā)鏈條很長,要根據(jù)自己的實際情況選擇適應(yīng)的職位。
嵌入式的職位大概有:
1、硬件工程師:
負(fù)責(zé)底層的硬件設(shè)計,主要要用到:
1.處理器:ARM9,DSP;Niosoll;FPGA(用于高速特殊場合)
2.PCB:EMC設(shè)計與仿真;
3.通訊:IIC,IIS,SPI,UART,CAN總線;RS232、PSTN Modem、網(wǎng)絡(luò)、GPRS通信;
2、驅(qū)動開發(fā)工程師:
負(fù)責(zé)底層和上層的通訊,主要要用:
1.系統(tǒng):Linux非實時系統(tǒng)/VXworks實時系統(tǒng)+架構(gòu)/文件系統(tǒng);
2.內(nèi)核與BOOT:內(nèi)核裁剪與移植、boot loader和驅(qū)動編寫,驅(qū)動程序開發(fā)
3.上層接口:USB,網(wǎng)口,
4.底層接口:SPI、UART、IIC、I2S,CAN、IDE
3、軟件工程師:
負(fù)責(zé)上層應(yīng)用軟件,主要要用:
1.CPU:51/MSP430/ARM7/ARM9;
2.外設(shè):AD/DA、UART、USB、LCD;
3.總線和通訊接口:I2C,SPI,RS232,RS484,CAN,USB,以太網(wǎng)||||||BACnet、 MODBUS(或有實時性要求)
4.環(huán)境:Linux/QNX+ARM匯編;
5.GUI:VC++/VC#/LABVIEW;
4、系統(tǒng)開發(fā)工程師:
負(fù)責(zé)系統(tǒng)架構(gòu)設(shè)計
5、DSP軟件工程師:
負(fù)責(zé)數(shù)字信號處理部分,主要要用:
1.CPU:固定為一個小系列(如TI DM642/648/6467、TI C6000、TMS320C5000、Freescale StarCore);
2.算法:熟悉圖像、音頻、視頻相關(guān)處理算法很重要,要會修改和優(yōu)化;
3.接口與驅(qū)動:網(wǎng)絡(luò)協(xié)議(MAC、IP、UDP、TCP)等;
4.操作系統(tǒng):架構(gòu)設(shè)計和操作系統(tǒng)配置;
6、FPGA設(shè)計工程師:
負(fù)責(zé)高速信號處理和部分?jǐn)?shù)字信號處理,主要要用:
1.語言:VHDL/Verilog ;
2.環(huán)境:modlesim、Synplify、Quartus、ISE、ispleverEDA;
3.調(diào)試:設(shè)計、仿真、調(diào)試能力;
4.算法:數(shù)字信號處理、濾波設(shè)計等算法;
5.接口:E1 Framer/Deframer、HDLC控制器、以太網(wǎng)MAC控制器、SDH Framer/Deframer、SDH Mapper/Demapper、SPI4.2、HiGig、DDR、PCI、PCI-E、DDR-II、HD-SDI
在一個完整的項目中,每個工程師分工合作,完成架構(gòu)師分配的模塊。每個職位深入研究下去的水都很深,一旦決定很難再順利轉(zhuǎn)行了,所以畢業(yè)選擇職位時一定要慎重。總的來說軟件方面的需求在國內(nèi)更大,當(dāng)然競爭也更加激烈。硬件很多是直接買國外解決方案的,所以硬件職位需求較少,但高級人才非常吃香。
另外某嵌入式er對于核心競爭力這樣看:
在天龍八部中有這樣的一個情節(jié),蕭遠(yuǎn)山和慕容博在少林寺強(qiáng)練武術(shù)套路而未潛心修習(xí)內(nèi)功心法,最終導(dǎo)致練武不成反傷及自身的情況發(fā)生。而少林掃地僧則達(dá)到了可以摘花傷人的地步。這就可以看出,同是練武之人,抓住核心競爭力很重要。而在這里,內(nèi)功就是核心競爭力。蕭遠(yuǎn)山和慕容博恰恰是因為沒有抓住核心競爭力,而只抓住了練武的套路,最終不僅練武不成,還導(dǎo)致自身出現(xiàn)內(nèi)傷。所以,無論對于一個人還是一個企業(yè),一定要認(rèn)清到底什么才是自己的核心競爭力!而在對核心競爭力的認(rèn)識上,鄙人也犯下了蕭遠(yuǎn)山和慕容博兩位前輩都犯了的錯誤。
今日在此述說一下自己的想法,但因個人閱歷有限,說辭之中片面之處在所難免,望各位看官保持紀(jì)律,不要隨便扔鞋和臭襪子,鄙人先行謝過啦!
嵌入式系統(tǒng)核心競爭力:
1、裁剪性——嵌入式系統(tǒng)支持可伸縮性和開放性的體系結(jié)構(gòu)。
2、接口——可為設(shè)備提供 統(tǒng)一的驅(qū)動接口。
3、實時性——EOS實時性一般較強(qiáng),可用于各種設(shè)備控制中。
4、操作性——操作簡單方便,視圖易學(xué)易用。提供強(qiáng)大的網(wǎng)絡(luò)功能,支持TCP/IP協(xié)議及其他協(xié)議,提供TCP/UDP/IP/PPP協(xié)議支持及統(tǒng)一的MAC訪問層接口,為各種移動計算設(shè)備預(yù)留接口。
5、穩(wěn)定性——唯一指令讓用戶不需過多介入操作,通過系統(tǒng)的調(diào)用命令向用戶程序提供服務(wù)。
6、移植性——更好的硬件適應(yīng)性,也就是良好的移植性。
等等,以上舉出嵌入式系統(tǒng)比較常見的自身核心競爭力。如此可以看出,2016年嵌入式開發(fā)前景一片利好。未來隨著物聯(lián)網(wǎng)科技發(fā)展,嵌入式系統(tǒng)將會面臨著巨大的機(jī)遇和挑戰(zhàn),嵌入式開發(fā)工程師也將成為企業(yè)核心競爭力的重要指標(biāo)之一。
下面切入正題。
先直截了當(dāng)?shù)恼f一個基本論點:對于嵌入式行業(yè)的研發(fā)人員和企業(yè)來說,各種性能強(qiáng)勁的芯片和各種各樣花樣百出的軟件,都不是嵌入式行業(yè)的核心競爭力。好芯片和好軟件,只是“工欲善其事,必先利其器”中的器,而要“善”的事,才是一個研發(fā)人員和一個企業(yè)的核心競爭力。
下面來舉例說明一下。鄙人從事的是工控領(lǐng)域的嵌入式開發(fā),比較典型的一個應(yīng)用技術(shù)是根據(jù)一個設(shè)備運行時產(chǎn)生的振動的情況來分析這個設(shè)備的運行狀況。這里涉及到兩個部分的技術(shù),一個是設(shè)備的振動的信號的采集,另外一個是振動信號的分析。先從一個企業(yè)來說吧,一個企業(yè)想做出這樣的產(chǎn)品,然后在這個行業(yè)立足,那么使用什么芯片和什么傳感器進(jìn)行信號的采集,這絕對不是核心競爭力了。如果企業(yè)里有個會使用COTEX-M3單片機(jī)的人才,那么可以使用COTEX-M3單片機(jī)進(jìn)行信號的采集,如果有個會使用ARM9的人才,那么可以使用ARM9進(jìn)行信號的采集,這是可以改變的。
由此看來,振動信號的分析才是核心競爭力。但是如果僅僅做到把振動的信號使用傅里葉變換分析出幾個具體的信號波形,也不能構(gòu)成核心競爭力,因為傅里葉變換技術(shù)是隨便一本振動信號分析的書里都有的東西,拿來就用,這也只是一個工具。而且,做這種信號的變換的軟件也有很多,可以用MATLAB,可以用組態(tài)軟件,也可以用LABVIEW,企業(yè)想做不同的界面,只要招聘不同的人才便可,這構(gòu)不成核心競爭力。而倘若能夠通過采集到的振動信號分析出這臺設(shè)備的每一個重要的零部件的具體數(shù)據(jù)信息,然后判斷出這臺設(shè)備中各個零部件分別工作的狀態(tài)如何,這才能構(gòu)成核心競爭力。當(dāng)然,這是書上沒有的東西,是需要企業(yè)自己進(jìn)行研發(fā)的技術(shù),這也是其他企業(yè)無法抄襲的東西。
從以上對企業(yè)的分析中可以看出,對于一個嵌入式研發(fā)人員來說,核心競爭力不是你會使用什么高級的芯片,或者你會使用什么先進(jìn)的程序設(shè)計語言或者軟件。從以上的分析可以看出,對于一個研發(fā)人員來說,核心競爭力也是信號的分析技術(shù)。至于原因,不再贅述。
另外再舉一個例子。
現(xiàn)在炒的比較火的一個無線應(yīng)用是“物聯(lián)網(wǎng)”,在這個物聯(lián)網(wǎng)中,其核心的東西是無線技術(shù),而適合于“物聯(lián)網(wǎng)”的無線技術(shù)首推ZIGBEE無線網(wǎng)絡(luò)。對于ZIGBEE技術(shù)來說,其核心競爭力是什么呢?由上面的分析可以輕易得出結(jié)論,ZIGBEE網(wǎng)絡(luò)構(gòu)成的算法就是其核心競爭力。因為ZIGBEE的協(xié)議是公布出來的,大家都看得懂;而各種無線通信的芯片和電路也都是琳瑯滿目,可以盡情選擇;而怎樣通過這些無線芯片實現(xiàn)ZIGBEE網(wǎng)絡(luò),才是其核心。擁有ZIGBEE網(wǎng)絡(luò)協(xié)議算法技術(shù)的企業(yè),已經(jīng)在無線領(lǐng)域邁出一大步,比如目前在國內(nèi)做的比較火的DIGI公司推出的XBEE無線模塊。對于個人來講,道理是一樣的。你會用無線芯片,別人也會用,這都是可以通過書學(xué)會的東西。但是,如果你自己研發(fā)出來了ZIGBEE網(wǎng)絡(luò)的協(xié)議堆棧,那么這個就是別人無法從書上去學(xué)的東西了,這就構(gòu)成了個人的核心競爭力。
當(dāng)然,這里并不是說工具不重要。對于個人來講,會使用一款芯片或一款軟件,乃是安身立命的基礎(chǔ),也是實現(xiàn)核心競爭力的基礎(chǔ)。而對于企業(yè)來說,道理是一樣的。所以在嵌入式行業(yè),必須做到內(nèi)外兼修,方能成大業(yè)。
最后
無論對于企業(yè)還是個人,做到在外修武術(shù)套路,方能安身立命;做到在內(nèi)修內(nèi)功心法,方能稱霸一方。所以一定要兼修內(nèi)功心法和武術(shù)套路,如此方能稱霸于武林,有資本參與華山論劍!
另外,著名嵌入式工程師火哥對于嵌入式行業(yè)核心競爭力的看法:
相信很多剛?cè)胄?-2年,甚至5年10年的嵌入式工程師都會有這些疑惑。我做的事情好像沒有多少技術(shù)含量,我做的事情好像沒有多少創(chuàng)新,做嵌入式的技術(shù)競爭力到底在哪?嵌入式到底是做驅(qū)動好還是做應(yīng)用好?很多人說,嵌入式要學(xué)習(xí)很多很多的技能才能找到工作,既要懂硬件,還要懂編程,精通C/C++,懂操作系統(tǒng)Linux內(nèi)核,懂通信(4G 5G),懂自動控制,懂?dāng)?shù)字信號處理,懂網(wǎng)絡(luò)協(xié)議棧,懂FPGA,懂電磁兼容,懂Android,是這樣嗎?
一、嵌入式的技術(shù)競爭力必須因地制宜,根據(jù)你所在的具體環(huán)境具體分析,case by case, 沒有萬能藥方
說到做嵌入式的技術(shù)競爭力,其實是和每個嵌入式工程師所身處的環(huán)境有關(guān)。所謂的環(huán)境包括:你的學(xué)歷,你的家庭因素(是否已婚,家里老人妻兒是否需要時間精力照顧),你所在的城市以及該城市的嵌入式相關(guān)產(chǎn)業(yè)結(jié)構(gòu),你目前從事的行業(yè)和業(yè)務(wù),你現(xiàn)在的工作年限和當(dāng)前已經(jīng)有的基礎(chǔ)技能與業(yè)務(wù)技能積累深度,你所認(rèn)識的或互相信任的同行業(yè)的人脈等等。
火哥所擁有的技術(shù)競爭力,放在你所處的環(huán)境往往不一定有競爭力,這就好比你在一個二三線城市,整個城市沒有一家做AI深度學(xué)習(xí)相關(guān)的公司,火哥如果給你分享嵌入式+AI深度學(xué)習(xí)的技能,在你的環(huán)境里就毫無參考意義,如果你只是公司的一個小兵,工作權(quán)限只能修改一個模塊,火哥給你分享的復(fù)雜業(yè)務(wù)場景下大規(guī)模軟件架構(gòu)技術(shù)也意義不大。很多時候個人是難以改變現(xiàn)有環(huán)境的,要么重新選擇環(huán)境,要么適應(yīng)環(huán)境,再參考別人分享的經(jīng)驗,根據(jù)自己當(dāng)前的環(huán)境狀況,做出對自己最有利的選擇。
另外還有一個老生常談的撕逼問題,嵌入式到底是做驅(qū)動好還是做應(yīng)用好,其實也是要根據(jù)所在城市和公司的組織架構(gòu)情況而定的,沒有絕對優(yōu)劣。
火哥第一家公司是屬于傳統(tǒng)行業(yè)大廠的嵌入式Linux產(chǎn)品開發(fā)(火哥在應(yīng)用部門),內(nèi)核驅(qū)動和應(yīng)用軟件部門是嚴(yán)格劃分的,驅(qū)動部門大部分都是5年經(jīng)驗以上核心老員工(相對薪資也高一些),一般不直接校招,應(yīng)用部門工作3-5年經(jīng)驗的也可以轉(zhuǎn)到驅(qū)動部門,沒有絕對限制和門檻。應(yīng)用軟件部門員工相對年輕,經(jīng)驗淺,應(yīng)用軟件部門沒有權(quán)限提交驅(qū)動代碼的修改,只能定位到驅(qū)動問題,讓驅(qū)動部門的工程師修改。當(dāng)時這家公司很多核心的業(yè)務(wù)邏輯和通信協(xié)議的代碼在驅(qū)動層,公司設(shè)計的這套組織架構(gòu)也是為了保證核心部門員工的穩(wěn)定性,并不是說做應(yīng)用就沒有技術(shù)含量,就很難再轉(zhuǎn)驅(qū)動了。
火哥第二家公司是新興行業(yè)小廠AI相關(guān)嵌入式Linux產(chǎn)品開發(fā),嵌入式開發(fā)就一個部門8個人(小廠人少,分工就不細(xì)),7個人做應(yīng)用層開發(fā)(火哥還是做應(yīng)用),1個人做底層驅(qū)動。但是底層驅(qū)動的人,只是負(fù)責(zé)新的硬件和驅(qū)動功能集成到系統(tǒng)里面,做應(yīng)用開發(fā)的同事,如果遇到底層的驅(qū)動的bug,也要自己有能力解決,底層驅(qū)動的同事并不會幫你處理舊的模塊的bug。
火哥第三家公司是新興行業(yè)大廠的Android系統(tǒng)平臺開發(fā)(火哥終于有做底層驅(qū)動的機(jī)會了)。公司組織架構(gòu)上根本就不是按驅(qū)動開發(fā)部門和應(yīng)用開發(fā)部門這樣劃分的,而是按模塊劃分部門,比如攝像頭組,存儲組,視頻編解碼組,音頻編解碼組,藍(lán)牙、wifi組,功耗電源組,bsp組等等。每個組,只要你負(fù)責(zé)的模塊有問題,不管是在內(nèi)核驅(qū)動層還是在應(yīng)用層,都屬于你要處理的。比如攝像頭組,你要有獨立解決攝像頭驅(qū)動和應(yīng)用軟件的能力,而不是說我只做攝像頭驅(qū)動,應(yīng)用不管。
另外火哥還了解到,在二三線城市甚至深圳這種一線城市,一些小廠(尤其是做單片機(jī)mcu項目的小廠,可能就二三十人甚至更少),由于人手不夠,或者硬件部門,軟件部門暫時沒有招到合適的人,所以有些嵌入式軟件工程師不得不暫時甚至長期兼顧PCB硬件原理圖設(shè)計的工作。當(dāng)然火哥認(rèn)為軟硬設(shè)計都做的工作實在是不合理,分散精力容易出很多問題,但是不得不承認(rèn)這種分工的工作在嵌入式(尤其是單片機(jī)mcu開發(fā))工程師中是客觀存在的,老板安排的硬件相關(guān)工作也不得不去承擔(dān)。
雖說每個人具體的技術(shù)競爭力問題要根據(jù)實際情況,case by case分析,但是火哥還是希望通過本文,拋磚引玉,給出一些case,來引導(dǎo)小伙伴們進(jìn)行深度思考。
二、能保證飯碗的基礎(chǔ)技術(shù)競爭力
一般嵌入式工程師都是指在嵌入式平臺做軟件開發(fā)的工程師,沒有專門的嵌入式硬件工程師說法(硬件工程師自有專門的硬件工程師,這里以軟件為主)。雖然沒有萬能的技術(shù)競爭力,找工作也不是什么都要懂(公司招人的基本要求是能夠馬上干活幫老板解決問題,而不是啥都懂吹技術(shù)牛逼),但是嵌入式還是有些通用的技術(shù)技能需要掌握才能成為一個合格的嵌入式工程師,隨時保證有一個嵌入式的飯碗,能在一線城市找到月薪10K以上的工作(二三線城市根據(jù)實際情況遞減),火哥還是建議你要掌握以下幾點通用嵌入式基礎(chǔ)技術(shù)。
1. 編程能力
編程能力不用多解釋,嵌入式開發(fā)主要還是軟件編程嘛,C語言盡量精益求精,各種指針、結(jié)構(gòu)體,聯(lián)合體的高級用法滾瓜爛熟不需要問人(可以上豆瓣搜3-5本高分的C語言編程書籍細(xì)看),C語言編程能力就是嵌入式開發(fā)的命根子。另外,數(shù)據(jù)結(jié)構(gòu)對于現(xiàn)代的大規(guī)模嵌入式軟件開發(fā)(不管是單片機(jī)mcu還是Linux)也是必學(xué)科目,我知道很多電子通信,自動化專業(yè)出身的嵌入式工程師沒有學(xué)過數(shù)據(jù)結(jié)構(gòu)的課程,所以在這里啰嗦一下,去學(xué)吧,不然很難看懂別人寫的復(fù)雜的程序結(jié)構(gòu)(盡管學(xué)了也不保證看得懂)。另外,基本的計算機(jī)算法(堆和棧搜索,鏈表反轉(zhuǎn),哈希表,二叉樹,紅黑樹,深度優(yōu)先廣度優(yōu)先,時間復(fù)雜度……),有時間盡量學(xué)一學(xué),補齊短板,雖然并不是說工作中要自己從頭實現(xiàn)或者工作中絕對能用到(知道你們大部分人都是寫業(yè)務(wù)邏輯代碼),但是很多公司筆試面試要考,不學(xué)可能過不了面試,學(xué)了可以開拓思路。C++語言應(yīng)該也是要懂的,但是C++范式太多,學(xué)習(xí)時間會比較長,而且每過幾年還會更新,可以先工作,然后工作有時間慢慢學(xué)。不要求精通C++(根本就不可能精通所有C++特性和范式),但是至少能夠看得懂基本的語法代碼,能改動別人的C++程序,能調(diào)用別人實現(xiàn)好的class實現(xiàn)你的功能。另外最好懂一門腳本語言,比如Python,?Python在做測試用例代碼和自動化工具的時候還是用得挺多的,也不難學(xué),比C/C++簡單(我覺得可以先學(xué)Python,再學(xué)C++,這樣C++反而不會那么難)。
2. 操作系統(tǒng)與計算機(jī)體系結(jié)構(gòu)知識(包括一些編譯,鏈接的知識)
嵌入式程序員和非嵌入式程序員(純APP或者web開發(fā))最大的能力差別就在解決操作系統(tǒng)底層,計算機(jī)體系結(jié)構(gòu)相關(guān)問題的能力。操作系統(tǒng)知識對于做Linux/Android 或者 RTOS開發(fā)的嵌入式程序員,不用我啰嗦,學(xué)吧,最好還要能看看Linux內(nèi)核源代碼,理解其中的各種子系統(tǒng)的設(shè)計機(jī)制和設(shè)備模型。對于單片機(jī)MCU裸機(jī)開發(fā)的程序員,雖然可能暫時用不上,但建議你們有時間還是應(yīng)該學(xué)一下,這樣對以后換環(huán)境跳槽選擇的路子會更寬(相比于完全不懂操作系統(tǒng)的老單片機(jī)工程師有優(yōu)勢),而且Linux FreeRTOS等操作系統(tǒng)內(nèi)核都是開源的,里面有豐富的代碼可能可以給你單片機(jī)編程提供參考(抄),擴(kuò)展思路。
計算機(jī)體系結(jié)構(gòu)的知識,可以說是做嵌入式程序員(不管是做Linux、Android、RTOS還是單片機(jī)MCU裸機(jī))的內(nèi)功心法。一個CPU是按照什么樣的流程執(zhí)行程序,cache是什么有什么用,TLB是啥,MMU有什么用,中斷流程是怎么執(zhí)行,中斷服務(wù)函數(shù)和一般函數(shù)有啥不同,一個程序運行的地址空間和各種段是怎么樣的分布,系統(tǒng)是怎么啟動最后運行你的應(yīng)用程序,系統(tǒng)是怎么管理內(nèi)存,防止碎片化,動態(tài)庫靜態(tài)庫原理上有啥區(qū)別,你所使用的編譯器工具鏈,硬浮點軟浮點的基本原理和使用條件。。。(不懂的可以從《深入理解計算機(jī)系統(tǒng)》這本書入手)。這一系列體系結(jié)構(gòu)有關(guān)的知識,火哥認(rèn)為,不管是做操作系統(tǒng)還是做裸機(jī)嵌入式,都必須掌握,才能在面試中,得到面試官對你技術(shù)底子的認(rèn)可(很多候選人,可能公司相關(guān)業(yè)務(wù)知識不熟,但是技術(shù)底子不錯,面試官也會考慮給機(jī)會)。
3. 硬件的基本知識
關(guān)于嵌入式要學(xué)多少硬件的問題,眾說紛紜,有些文章渲染地神乎其神,軟硬通吃。但是火哥在嵌入式軟件工程師的面試中,其實被問的真正的硬件問題(CPU中斷這些體系結(jié)構(gòu)知識不算真正硬件知識,體系結(jié)構(gòu)知識是嵌入式必備的)并不多(50次面試就2-3次問過硬件),而且火哥是自動化專業(yè)出身,讀書的時候模電,數(shù)電都有認(rèn)真學(xué),課程設(shè)計都有認(rèn)真做,讀書的時候也有過電力電子的項目經(jīng)歷,因而面試的硬件問題對火哥來說基本不是問題。
火哥的觀點就是,對于電子通信、自動化專業(yè)出身的嵌入式工程師,以前學(xué)校讀書學(xué)的模電,數(shù)電課本知識基本能夠滿足平時嵌入式軟件開發(fā)中,看懂原理圖,看示波器,和硬件工程師合作溝通,定位軟硬件問題的需求,并不需要再加強(qiáng)多少硬件知識,也不需要真正去設(shè)計電路圖,PCB,EMC電磁兼容之類的東西,當(dāng)然懂一些更好,但是也對找工作加不了太多分。
但是如果是計算機(jī)類專業(yè)出身,對硬件完全沒有概念也不行,還是需要花1-2個月時間,看看模電、數(shù)電的課本,學(xué)習(xí)示波器的使用,3個月足以學(xué)習(xí)基本的概念知識,示波器的使用也就像使用一個辦公軟件一樣,不需要多精通,會用就行,沒有網(wǎng)上吹的那么神(動不動示波器分析射頻電路,fft頻譜特性,動態(tài)響應(yīng)特性)。
當(dāng)然如果是在做單片機(jī)MCU開發(fā)的小公司,由于公司缺乏人手,需要兼顧硬件開發(fā)的話,那只好硬著頭皮上了,但是這樣花費的時間精力可能比較多,對你跳槽正規(guī)大廠的嵌入式也沒有多少好處。
4. 計算機(jī)網(wǎng)絡(luò)知識
計算機(jī)網(wǎng)絡(luò),TCP/IP,套接字編程,如果是電子通信專業(yè)出身的,學(xué)吧!現(xiàn)代嵌入式設(shè)備連接網(wǎng)絡(luò)的功能越來越多,越來越常見,不一定要把TCP/IP協(xié)議啃得很深(Linux內(nèi)核有現(xiàn)成的開源實現(xiàn)代碼,不需要你從0開始做),但是基本的概念和網(wǎng)絡(luò)應(yīng)用編程還是要懂,才能增加你的就業(yè)機(jī)會。
5. 各種寄存器,軟硬件調(diào)試方法和經(jīng)驗
調(diào)試配置寄存器,軟硬件聯(lián)調(diào)就是傳統(tǒng)嵌入式代代相傳的手藝活了。這也很能體現(xiàn)大部分人所謂的實際項目中解決問題的能力(定位問題到寄存器配置上,解決問題真有成就感哈!),這項能力還是要靠實際的項目來鍛煉,也就是嵌入式中所謂的吃經(jīng)驗的東西。
但火哥認(rèn)為,現(xiàn)代嵌入式開發(fā)不要太迷信這種調(diào)試寄存器帶來的成就感,還是應(yīng)該把大部分精力放在計算機(jī)軟件、操作系統(tǒng),體系結(jié)構(gòu)等基礎(chǔ)知識的學(xué)習(xí)上。調(diào)試寄存器的能力就像NBA比賽的灌籃技能一樣,很有成就感,帶來全場歡呼,但是畢竟不是常規(guī)得分手段,也不是常規(guī)技能(大部分得分還是要靠戰(zhàn)術(shù)配合,投籃,上籃,三分遠(yuǎn)射),嵌入式開發(fā)大部分精力還是要放在編程,實現(xiàn)業(yè)務(wù)邏輯上。
三、升職加薪的業(yè)務(wù)技術(shù)競爭力
要想在公司升值加薪,除了基礎(chǔ)技術(shù)競爭力之外(這項只能幫你好跳槽,找工作,不保證升職加薪),還需要和公司業(yè)務(wù)相關(guān)的技術(shù)競爭力(這項競爭力只在同行業(yè)跳槽有效,不保證跨行業(yè)跳槽)。
所謂業(yè)務(wù)技術(shù)競爭力,就是在特定行業(yè)和公司才有價值的技術(shù)競爭力,是無法輕易從書本獲取的技術(shù)。盡管火哥承認(rèn)Linux內(nèi)核,操作系統(tǒng)原理,計算機(jī)基礎(chǔ)算法,計算機(jī)體系結(jié)構(gòu)這些知識有一定難度,不是那么容易學(xué)的,但是畢竟一個沒有工作經(jīng)驗的學(xué)生都能從書本這種最廉價的途徑獲取,所以無法構(gòu)成業(yè)務(wù)競爭力的壁壘,業(yè)務(wù)技術(shù)競爭力也是學(xué)生和有工作經(jīng)驗的工程師最主要的差距。
一般來說,業(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)入某個行業(yè)某個公司之后,只有多學(xué)習(xí)積累公司業(yè)務(wù)相關(guān)的知識,才能自己獨立完成業(yè)務(wù)相關(guān)的項目,然后指導(dǎo)新人、同事,帶領(lǐng)團(tuán)隊做業(yè)務(wù)相關(guān)的更大的項目,進(jìn)而在公司掌握更大的業(yè)務(wù)話語權(quán),和高管討論公司業(yè)務(wù)規(guī)劃,乃至戰(zhàn)略規(guī)劃。
一般站在公司高管的角度,思考的問題都是業(yè)務(wù)發(fā)展方向和戰(zhàn)略上的問題,一個工程師Linux內(nèi)核底層驅(qū)動理論和技術(shù)能力再好,如果不是在Red Hat SUSE 或者華為的Linux內(nèi)核部門這種把內(nèi)核開發(fā)作為業(yè)務(wù)方向的公司和部門,那么你牛逼的底層技術(shù)能力,也只是一項基礎(chǔ)技術(shù),平時工作解決的再復(fù)雜再難的底層內(nèi)核問題,寫的再風(fēng)騷的代碼,在高管眼里都只是解決一個普通問題,實現(xiàn)一個普通功能而已。這些都是為公司的業(yè)務(wù)服務(wù)的鋪路石而已,而高管就像在路上開車,眼里只有終點,盡管鋪路石的好壞可能導(dǎo)致路上的顛簸,但是只要順利到達(dá)終點鋪路石看起來并沒有那么重要。
可以說,在公司,你所掌握的和公司戰(zhàn)略方向相關(guān)的業(yè)務(wù)技能,就像一個放大器,把你實際的技術(shù)能力和價值放大多倍,進(jìn)而帶來更高的收益。但這也帶來了一些問題,如果公司近年的業(yè)績不夠好,你牛逼的業(yè)務(wù)能力可能不會給你帶來等價的回報,那就得考慮你在公司業(yè)務(wù)方向上花費的時間和精力到底值不值?;鸶绲谝患夜揪陀胁簧贅I(yè)務(wù)專家,但是公司業(yè)績一年不如一年,導(dǎo)致業(yè)務(wù)專家也和普通小兵一樣拿死工資,沒有得到相應(yīng)的年終獎,最后,火哥跳槽出來的時候,差不多算跨行跳槽,相關(guān)的業(yè)務(wù)知識也在面試中沒有太大的幫助。同時,火哥也在和很多面試官聊天中,發(fā)現(xiàn)很多業(yè)務(wù)牛人,出來面試,雖然業(yè)務(wù)技術(shù)牛逼,但是基礎(chǔ)技術(shù)花費的精力不夠,所以沒有得到面試官的認(rèn)可。當(dāng)然,在同行跳槽的情況下,業(yè)務(wù)技術(shù)能力的加分還是很大的,比如手機(jī)行業(yè),高通跳槽去OPPO、小米的對口部門,待遇上的提升就很多,但是這種真正業(yè)務(wù)對口的跳槽機(jī)會,火哥認(rèn)為占少數(shù),所以在業(yè)務(wù)技術(shù)競爭力上,行業(yè)的選擇一定要有眼光,高薪跳槽機(jī)會多的行業(yè),業(yè)務(wù)技術(shù)才是有競爭力的技術(shù)(盡管可能不是最難的技術(shù))。
四、無法輕易獲取的門檻技術(shù)競爭力
所謂無法輕易獲取的門檻技術(shù)競爭力其實也是業(yè)務(wù)競爭力的一種,只是相對于常規(guī)的業(yè)務(wù)競爭力來說具有更高的獲取門檻。上一節(jié)所說的業(yè)務(wù)競爭力是指一般的業(yè)務(wù)競爭力,可以在公司內(nèi)部,通過參與公司實際項目,業(yè)務(wù)知識培訓(xùn)或者老員工指導(dǎo),口口相傳中獲取。而這種門檻技術(shù),在公司中一般也是保密的,非偶然機(jī)遇,無法獲取,靠自己找資料自學(xué)琢磨基本行不通。嵌入式開發(fā)相關(guān)領(lǐng)域無法輕易獲取的門檻技術(shù)競爭力一般有這些(如果火哥說的有遺漏,可以后臺私信補充):
4G/5G 通信基帶算法與核心業(yè)務(wù)邏輯
WiFi、藍(lán)牙驅(qū)動加載的固件或IP中核心的算法與業(yè)務(wù)邏輯
Camera驅(qū)動加載的固件或IP中,MIPI-CSI高速數(shù)據(jù)采集接口相關(guān)的核心業(yè)務(wù)邏輯,ISP(數(shù)字圖像處理)相關(guān)的核心算法與業(yè)務(wù)邏輯
GPU驅(qū)動加載的固件或IP,以及OpenGL、CUDA、OpenCL等API標(biāo)準(zhǔn)的庫實現(xiàn)中核心的算法與業(yè)務(wù)邏輯
音視頻編解碼Codec驅(qū)動加載的固件或IP,以及OpenMax等API標(biāo)準(zhǔn)的庫實現(xiàn)中的核心算法與業(yè)務(wù)邏輯
高清LCD/OLED屏幕,或者HDMI屏幕驅(qū)動加載的固件或IP中核心的業(yè)務(wù)邏輯和實現(xiàn)
嵌入式設(shè)備電源低功耗相關(guān)技術(shù)
嵌入式設(shè)備信息安全與密碼保護(hù)相關(guān)技術(shù)
這些門檻業(yè)務(wù)技能,除非你有偶然的機(jī)會,去了某個IC原廠專門的部門,否則基本不可能接觸到這種高門檻的業(yè)務(wù)技能。如果你在OEM產(chǎn)商從事相關(guān)的崗位驅(qū)動(比如在小米做手機(jī)的camera或者WIFI開發(fā)),你也只能從高通或MTK拿到二進(jìn)制的固件,幾乎不可能看到核心業(yè)務(wù)邏輯的源代碼。這些模塊雖然Linux內(nèi)核驅(qū)動部分可能為了遵守GPL協(xié)議開源,但是一般這種開源的驅(qū)動都是hardware enable的驅(qū)動,也就是說驅(qū)動里面只有使能或者停止設(shè)備的基本功能,核心業(yè)務(wù)邏輯相關(guān)的代碼都抽出來做在固件(可以是內(nèi)核加載的固件,也可以是應(yīng)用層的閉源庫)。
有機(jī)會接觸這類高門檻核心業(yè)務(wù)崗位,也算一種幸運,如果能跳槽到對口的公司,可能拿到非常高的待遇(當(dāng)然也可能跳槽要簽競業(yè)協(xié)議,每月從老東家拿錢)。
這種崗位的員工,在就業(yè)市場上是非常難招的,公司也會出于防止核心門檻業(yè)務(wù)技術(shù)機(jī)密泄露的目的,花大價錢留住這些核心員工,也不會培養(yǎng)太多懂得這些核心門檻業(yè)務(wù)技術(shù)的員工。有機(jī)會從事相關(guān)門檻業(yè)務(wù)技術(shù)的開發(fā),如果跳槽到對口的賺錢的公司,就有突破年薪50W甚至100W的機(jī)會,也算是一種幸運吧。這種嵌入式領(lǐng)域的門檻業(yè)務(wù)技術(shù)本身的難度相對于Linux內(nèi)核,Android系統(tǒng)框架等復(fù)雜系統(tǒng)而言,也不是絕對的難(畢竟大規(guī)模應(yīng)用的技術(shù),本身不可能比理論性的東西難,智商良好的大學(xué)生應(yīng)該都能學(xué)會),但是輕易無法獲取,會有一種神秘感。
五、跳槽漲薪的新興技術(shù)競爭力
目前嵌入式相關(guān)的行業(yè)和領(lǐng)域,出現(xiàn)了很多不同于傳統(tǒng)嵌入式領(lǐng)域的產(chǎn)品與解決方案,比如嵌入式+物聯(lián)網(wǎng)+云端,嵌入式+大數(shù)據(jù),嵌入式+人工智能,嵌入式+無人駕駛……
關(guān)于這些新興技術(shù),也有一些爭議,有些老的工程師對這些東西表示不屑,認(rèn)為也不是很有技術(shù)難度和深度,就是調(diào)用一下別人做的云端或者AI的API,有很多泡沫,無法落地等等……他們覺得做嵌入式還是不能浮躁,應(yīng)該踏踏實實去鉆研Linux內(nèi)核,網(wǎng)絡(luò)協(xié)議棧等非常深非常難的已有技術(shù)。
但是,火哥對年輕的嵌入式工程師往新興技術(shù)領(lǐng)域發(fā)展,持支持的態(tài)度,我也相信我們公司總監(jiān)說的“right time to do right things”。而且從大的趨勢上看,NVIDIA公司推出的Jetson平臺,AI邊緣計算解決方案以及Xavier平臺無人駕駛解決方案;Intel公司收購以色列無人駕駛芯片公司MobilEye;ARM公司在CPU里面做的神經(jīng)網(wǎng)絡(luò)并行矢量計算加速庫,最近也大規(guī)模招聘物聯(lián)網(wǎng)與云端項目相關(guān)的工程師;華為的海思麒麟970芯片集成AI加速單元NPU;瑞星微RK3399Pro也有NPU支持各種AI應(yīng)用的部署……
行業(yè)領(lǐng)軍公司的布局,種種跡象表明,AI、物聯(lián)網(wǎng)、云端+嵌入式解決方案的新興技術(shù),已經(jīng)是大勢所趨,并不像某些有經(jīng)驗的老工程師所說的都是泡沫,無法落地。
所以,火哥還是建議剛?cè)胄凶銮度胧降哪贻p人,盡量地往嵌入式+人工智能+物聯(lián)網(wǎng)+云端的應(yīng)用解決方案領(lǐng)域靠攏,要敢于嘗試新生事物。新興技術(shù)能夠落地應(yīng)用,就證明這里面并不是特別難學(xué),也不是一定要鉆研內(nèi)核驅(qū)動,積累很深的東西才能學(xué)新興技術(shù)。而且不難學(xué)的技術(shù),不代表沒有技術(shù)含量,技術(shù)上的東西,很多時間是在信息不對稱的情況下,打一個時間差,搶到一個合適的崗位,雖然以那些老工程師的智商,應(yīng)該也能學(xué)會這些新興技術(shù),但是他們不一定有這個時間和精力(時間成本可能是最大的成本),換行成本也比較高,所以這塊更適合年輕人爭取時間差,在懂得這項技術(shù)的人還不多的時候,趕快搶到一個好的位置,能夠有業(yè)務(wù)上的話語權(quán)。
從另一方面說,由于之前2節(jié)所描述的嵌入式領(lǐng)域業(yè)務(wù)技術(shù)上的競爭力,在傳統(tǒng)領(lǐng)域,由于已經(jīng)發(fā)展了一段時間,有很多行業(yè)大佬已經(jīng)掌握這些傳統(tǒng)業(yè)務(wù)的技術(shù)話語權(quán),而且部分業(yè)務(wù)還有很大的獲得門檻,必須要努力+機(jī)遇才有機(jī)會進(jìn)入對應(yīng)崗位做下去,靠自學(xué)很難積累。一旦一個領(lǐng)域,在你前面積攢了8年,10年甚至15年以上經(jīng)驗的大佬太多,并且制定了太多的行業(yè)標(biāo)準(zhǔn)和專利,你就只能被別人的業(yè)務(wù)標(biāo)準(zhǔn)和專利牽著鼻子走,很難做到很高的位置。這就像很多工程師說,在單片機(jī)上實現(xiàn)藍(lán)牙,WIFI,TCP/IP協(xié)議棧也是很難很有挑戰(zhàn)的,然而,做技術(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)品哪怕實現(xiàn)了所有功能,但是如果功能不符合一些公司制定的標(biāo)準(zhǔn),那就拿不到認(rèn)證,產(chǎn)品不允許在這個市場出售,比如音頻相關(guān)的產(chǎn)品如何沒有通過杜比認(rèn)證,在很多市場就不被接受,你不得不花時間學(xué)習(xí)很多別人制定的標(biāo)準(zhǔn),而有制定標(biāo)準(zhǔn)話語權(quán)的大佬,可以隨心所欲修改標(biāo)準(zhǔn))。所以年輕人靠新興的技術(shù),在嵌入式+人工智能,嵌入式+物聯(lián)網(wǎng)+云端等領(lǐng)域,通過同起點,同樣的學(xué)習(xí)時間,可能可以做到彎道超車,3年之內(nèi),在收入上超過那些工作8年,10年的大佬。
當(dāng)然,火哥所說的這些新興技術(shù)領(lǐng)域和行業(yè),也要根據(jù)你自身的情況因地制宜,制定學(xué)習(xí)的計劃。
首先,不是所有城市都有這些新興技術(shù)領(lǐng)域的相關(guān)企業(yè),如果你想入行新領(lǐng)域,可能就得做出跳槽去北上深等一線城市的決策,如果已經(jīng)在二三線城市安家,要照顧家人,可能就得做一些取舍,不得不放棄這些發(fā)展計劃,繼續(xù)在舊的領(lǐng)域深耕。
其次,第二節(jié)所說的基礎(chǔ)技術(shù)競爭力應(yīng)該放在首位。在夯實基礎(chǔ)(不一定要達(dá)到精通,但是還是要扎實)的情況下,保證能得到面試官的對你技術(shù)底子的認(rèn)可,能找到合適的工作的前提下,跳過二、三節(jié)所說的傳統(tǒng)業(yè)務(wù)技術(shù)的學(xué)習(xí),直接進(jìn)入新興技術(shù)領(lǐng)域,彎道超車。
最后,要保持一雙火眼金睛,要能夠識別出你所做的新興業(yè)務(wù)到底是真新興,還是傳統(tǒng)業(yè)務(wù)包了一層皮。比如有些童鞋在所謂做嵌入式+物聯(lián)網(wǎng)業(yè)務(wù)的公司,實際上每天的工作就是用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)的公司,雖然嵌入式工程師不一定要懂得自己實現(xiàn)AI核心算法,但是核心技術(shù)競爭力也不是指調(diào)用別人的人臉識別閉源庫函數(shù),做簡單人臉識別應(yīng)用?;鸶缯J(rèn)為嵌入式+AI相關(guān)領(lǐng)域的核心業(yè)務(wù)競爭力,也是在熟悉整套邊緣端到云的AI計算系統(tǒng)架構(gòu)和解決方案,懂得一些AI算法的基本原理(不一定要自己獨立能實現(xiàn)),各種神經(jīng)網(wǎng)絡(luò)的優(yōu)劣,能對嵌入式平臺的AI軟件做系統(tǒng)級別的計算性能的加速優(yōu)化,部署落地,解決客戶實際應(yīng)用場景中的問題,提供反饋給做AI算法的工程師,幫助他們修正訓(xùn)練出來的模型。
天龍八部想必各位一定不會陌生,或許你看完了僅僅過了眼癮,不過這位同學(xué)在看電視的同時結(jié)合自己的行業(yè)悟到了一些嵌入式er核心競爭力的問題。一起來看看。
另外,著名嵌入式工程師老石也對FPGA工程師的核心競爭力進(jìn)行了講解:
老石認(rèn)為,這個問題其實可以引申為以下兩點:
1、什么是只有FPGA工程師能做的
2、作為FPGA工程師,我們應(yīng)該如何培養(yǎng)這些能力
接下來就是老石的解答。
什么是只有FPGA工程師能做到的
對于上面提到的一些回答,的確是FPGA工程師不可或缺的能力,但老石總覺得沒有說清楚這個問題的本質(zhì)。
?
首先給出老石的回答:FPGA工程師最核心的就是全棧能力。
?
這里的全棧,指的是系統(tǒng)級的軟硬件全棧能力。它既包括了在系統(tǒng)層面的架構(gòu)設(shè)計、芯片開發(fā)的前后端流程,也包括了軟件設(shè)計的全棧流程,甚至還有后期的項目維護(hù)、技術(shù)支持、與客戶的溝通等等軟技能。它可以看成是綜合多種技能的技能樹。
?
老石隨手寫了一下FPGA工程師的全棧技能樹,見下圖,盡管很不完整,但仍可供大家參考。之前很多人提到的,諸如調(diào)試與分析的能力,其實是這個全棧技能樹里的一片樹葉,或一個分支。
只有FPGA工程師能做到一人成團(tuán),在短時間內(nèi)將想法落實到高質(zhì)量的軟硬件系統(tǒng)實現(xiàn)。這是其他系統(tǒng)架構(gòu)師、ASIC工程師、單片機(jī)工程師、軟件工程師等等都無法單獨完成的。與這些工程師相比,F(xiàn)PGA工程師有著很強(qiáng)的單兵作戰(zhàn)能力。當(dāng)然,技能樹過于龐大也是為什么很多人認(rèn)為FPGA難學(xué)的本質(zhì)原因。
?
有人會問,為什么其他類型的工程師沒有這種全棧能力,或者換句話說,為什么只有FPGA工程師才能做到全棧?這和FPGA本身的特點有關(guān)。
?
在下圖中,老石對比了FPGA與ASIC、CPU(或單片機(jī))的特點與主要開發(fā)方式和風(fēng)格。
對于傳統(tǒng)的IC工程師而言,他們的具體職責(zé)可以大致分成前端和后端兩部分。前端主要負(fù)責(zé)邏輯實現(xiàn),后端負(fù)責(zé)芯片物理實現(xiàn)。兩路人馬通常有各自的技能樹,需要互相配合才能完成產(chǎn)品級的芯片,這個過程往往很久,而且伴隨著巨大的前期投入和風(fēng)險。
?
對于單片機(jī)或CPU工程師而言,更多的是基于給定的單片機(jī)架構(gòu)和API,使用諸如C或C++的高層語言編寫應(yīng)用程序。如果要寫出高質(zhì)量的應(yīng)用,固然需要了解目標(biāo)芯片的硬件結(jié)構(gòu),但并不需要對硬件的邏輯實現(xiàn)有過多了解。雖然基于CPU或MCU可以靈活實現(xiàn)各種應(yīng)用,但由于架構(gòu)限制,在很多諸如人工智能的應(yīng)用領(lǐng)域里并不能達(dá)到很好的性能。
?
FPGA很大程度上結(jié)合了兩者的優(yōu)點。在硬件方面,F(xiàn)PGA底層架構(gòu)固定,因此不需要做太多芯片后端的工作,但仍需要FPGA工程師掌握時序優(yōu)化、面積優(yōu)化、功耗優(yōu)化等后端技能。因此一個優(yōu)秀的FPGA工程師憑借自身的前后端與軟硬件技能,就可以完成一個完整的而且質(zhì)量比較高的FPGA項目。
?
軟件方面,F(xiàn)PGA可以靈活定義API與軟件架構(gòu),并可以通過內(nèi)置的處理器內(nèi)核完成軟硬件協(xié)同開發(fā),這樣也能兼顧應(yīng)用的靈活性。因此,一個優(yōu)秀的FPGA工程師通常也具有優(yōu)秀的軟件編程能力。
?
在系統(tǒng)層面,F(xiàn)PGA工程師可以自定義軟硬件整體架構(gòu),不會像CPU或單片機(jī)一樣存在明顯的架構(gòu)瓶頸,也不會像ASIC一樣需要考慮過多底層電路單元以及工藝的具體實現(xiàn)。
綜上,只有FPGA工程師能擁有軟硬件系統(tǒng)的全棧能力,這也是FPGA工程師的核心競爭力。并且,這種能力可以在工程實踐中不斷自我豐富和提升。這使得優(yōu)秀的FPGA工程師不需要太過依賴其他人,能夠自己或少量人很快完成完整的系統(tǒng)級方案。
現(xiàn)在很多AI初創(chuàng)公司選擇使用FPGA作為硬件平臺的主要原因之一,就是看中FPGA工程師的全棧能力,使得公司能在較少投入的情況下,取得性能、靈活性、可擴(kuò)展性等多個方面的良好平衡。
?
全棧能力是FPGA工程師需要的完整技能樹。至于很多答友提到的調(diào)試和debug能力,更多的是在回答這個技能樹的技能點分配問題。這就是老石要講的第二個方面:
作為FPGA工程師,我們應(yīng)該如何培養(yǎng)這些能力
相信很多人會問,老石你說的這種全棧能力,究竟是不是在畫大餅吹牛逼?在實際生活中,到底是不是真的有人能全部精通技能樹中的所有分支?老石的答案是,雖然很少,但確實有這樣的大牛,而且老石有幸和他在一個團(tuán)隊里工作。
?
一般來說,如果一個FPGA工程師能在這個FPGA技能棧里精通某一項,就可以成為這個領(lǐng)域的大牛和權(quán)威。比如,像很多人提到的,如果你特別會調(diào)板子,硬件調(diào)試能力很強(qiáng),那你就可以很好的負(fù)責(zé)項目中的硬件測試環(huán)節(jié)。再比如,你RTL寫的很好,或者驗證很強(qiáng),或者對系統(tǒng)架構(gòu)有很深的理解,你都能在項目里成為不可或缺的人。
?
但是,在老石所在團(tuán)隊里就有一位帶頭大哥,可以從系統(tǒng)架構(gòu)、模塊設(shè)計、驗證、系統(tǒng)整合、FPGA后端優(yōu)化、硬件測試、軟件開發(fā)和調(diào)試等等全部環(huán)節(jié)一個人搞定,可以說是點滿了技能樹上所有的技能點。
這樣的人就像阿里的多隆,一個人可以頂一支團(tuán)隊,公司缺他不可。因此如果一個FPGA工程師能夠獲取軟硬件的全棧能力,將是團(tuán)隊乃至全公司的最主要競爭能力。
作為一個新人,應(yīng)該如何培養(yǎng)自己的FPGA全棧能力呢?其實,帶頭大哥的技術(shù)功底也并非通過一天練成的,最重要的是時間的積累,不斷的鉆研以及真正的興趣。這些道理在任何行業(yè)都是一樣的。一開始可以先重點突破技能樹的某個分支,但最終的目標(biāo)還是要讓整個技能樹枝繁葉茂。
?
此外,工程師需要的軟技能也是不可或缺的,例如獨立思考的能力、溝通、寫作以及良好的英語等等。