看完這篇文章,還不知道怎么學單片機,來打我!
經(jīng)常有人問我,嵌入式該怎么入門,怎么學習,怎么精通,怎么成為專家。我前思后想掏心掏肺,花了大概2周的時間,寫了這樣的一個成長路徑。注意!本文又干又長,如果此時你無法抽出大約10分鐘時間,建議看個開頭,然后點個關注、收藏之后再(也不)看。首先如圖:嵌入式學習路徑之單片機。為什么單說單片機呢,因為我覺得嵌入式是一個比較籠統(tǒng)的概念,可以按處理器性能大致分成兩類。性能低的比如51、stm32、arduino,這類設備一般用作開發(fā)比較便宜的產(chǎn)品,比如手環(huán)、插座、牙刷、小型玩具什么的,這樣的芯片資源有限,沒辦法運行l(wèi)inux操作系統(tǒng);還有一類是高性能的,像我們手機那種處理器,能運行l(wèi)inux、安卓操作系統(tǒng)的,這類芯片一般用作開發(fā)比較貴的產(chǎn)品,像智能音箱、自動售貨機、攝像頭、路由器等等。這兩種性能不同的處理器都是嵌入式,但需要掌握的技術是有一定區(qū)別的,這期就先講低性能的,單片機的成長路徑,如果看完覺得不錯記得關注,后面會再寫一篇嵌入式Linux的成長路徑。依然是熟悉的4個階段,這是科巖獨創(chuàng)學習4階段,小菜雞、入門雞、進階機、老司機,也就是從入門到精通(入土)的幾個階段。看完歡迎留言告訴我你在什么階段。
小菜雞
先從小菜雞開始,小菜雞就是一個純小白,就是你茫然無知什么都不懂。需要學習的有三個部分,基礎概念、C語言基礎、單片機基礎。如圖,基礎概念內(nèi)容如下:你要知道單片機是什么;要知道MCU、RAM、ROM、IO引腳、中斷、定時器這些概念指什么;另外,常見單片機有8位、16位和32位的。
還要對電路板有概念,什么是原理圖,什么是PCB,這些硬件概念在小菜雞階段知道就行。再然后是軟件,其實也就是運行在單片機中的程序,我們也把它叫做固件。有了硬件和軟件,就要把軟件安裝到硬件中執(zhí)行,這個過程叫做編譯、下載、運行,一般會用到Keil、IAR、gcc等等工具。我們?nèi)松袩浀絾纹瑱C的第一個程序一般是什么呢?就是點燈,點燈其實就是嵌入式工程師的hello world,一般電路板上都有l(wèi)ed燈,LED燈點亮了,就說明這塊板子的硬件,包括電源、處理器、引腳等等是沒有問題的,還說明軟件的燒錄、運行等一系列的步驟是沒有問題的。板子是好的,才有后面的工作。所以作為嵌入式工程師,一般也自稱為點燈工程師。最后一點,就是知道什么是嵌入式工程師,一般行業(yè)內(nèi)稱呼一名嵌入式工程師都是某某工。比如你姓張,大家就會稱你為張公,姓李呢,就會叫你李公,像我呢,我姓老,不知道此刻看文章的你姓什么嘞?工程師上班一般都在做什么呢?就是在畫板子,寫程序,調(diào)板子,燒板子。你燒過板子么,反正我是燒過,特別好玩,直接冒煙,把我們上班的大樓都給整停電了,是不是很有趣。嵌入式工程師的標準穿搭:黑框眼鏡,格子衫,黑色或者灰色的雙肩包。非常典型,工作經(jīng)驗一般可以通過發(fā)際線的高低做判斷。對單片機程序有概念之后,就要學習C語言了。這里寫了三點,參考c語言路徑圖;達到小菜雞水平就可以上手單片機;最好是能達到進階機。
這是什么意思呢,之前我做過一個C語言的學習路徑圖,也是分成了4個階段。小菜雞是基礎就是學C語言的語法;入門雞算是培養(yǎng)興趣可學可不學;進階機比較高級,數(shù)據(jù)結構、算法、網(wǎng)絡、linux都該學了,最好能到這個水平;老司機就不強求了,可以后面再學。具體如下:
這部分可以看看日本作家寫的幾本計算機知識相關的科普書,《計算機是怎樣跑起來的》、《程序是怎樣跑起來的》,這兩本書對新手都非常友好。
看書有一個原則,就是千萬不要把”讀完“當做目的,計算機相關的圖書很多都是大部頭,等到你讀完,黃花菜都涼了。所以最好是帶著問題讀,把它們當做一部字典,只讀你關心的部分,找到答案就可以把書放下了,不要糾結讀沒讀完。對計算機和編程有了基本的概念后,就要學習C語言的語法了。C語言的語法其實非常簡單,里面所涉及的概念也不多,都是一門編程語言中最基礎的東西。數(shù)據(jù)類型、常量、變量、表達式、函數(shù)、分支、循環(huán)、數(shù)組、結構體、指針、C庫,一共就這11個概念,對新手來說,前面的簡單點,后面的可能稍微難理解點,平均每個概念學習3到4小時左右就可以了。
這些基本概念該怎么學習呢?下面說第二個學習原則:一定要有合適的練習題。什么是合適的練習題,合適的練習題有3個特點。一是有明確的訓練目的。比如說學習函數(shù),那合適的練習題就會把練習重點放在函數(shù)的各個特征上,而不應該有其他的一些知識盲點。二是不應該需要花費太長時間。這個花費的時間應該剛剛好能夠使你保持專注,一旦失去專注力,浪費時間不說,還可能完不成練習。三是合適的練習題的難度應該是能夠稍稍高出你自身的水平。使你每次練習都有一點新的收獲,如果每次練習都在畫菱形、畫正方形,畫了也白畫。有了合適的練習題的訓練,你就會比較快的掌握基礎知識了。我建議這個階段快速突擊,小菜雞的階段不宜久留,宜速戰(zhàn)速決,1周時間搞定,最多2周。否則啊,學習很容易變得枯燥乏味,就會產(chǎn)生這玩意到底有沒有用啊,這種負面情緒。還是拿登山做舉例,小菜雞階段就是在山腳下聽老師講理論課,老師講了半天,登山鞋有哪些品牌,如何選擇,登山杖該怎么使用,登山時姿勢是什么樣,全身肌肉如何發(fā)力,遇到雨雪天氣怎么保暖,遇到山體滑坡怎么自救等等,一直講這些理論。你說我報名了登山運動練習班,光理論講了半年,學員當然要問,會選登山鞋到底和會不會登山有什么關系?學登山么,懂了最基礎的理論知識,就趕緊是騾子是馬拉出去溜溜了!先登個幾百、一千米看看,把登山實踐過程中遇到的問題點記錄下來,再翻書本找教練學習理論。學習編程語言也是一樣,懂了最基礎的之后,就可以做些與實際生活相關的小項目,遇到不會的再回頭學就可以。這里我插入第三個學習原則,叫做「最少必要知識」。就是說剛接觸一個領域,一門知識,先把最關鍵的那些知識學會,你就可以做些簡單的東西出來了,這時就應該盡快開始實踐,特別是那種需要動手的學科,沒有必要糾結要全學完再開始,而且有些高級的東西必須需要時間的積累才能理解,就算你學會了考試考過了,沒有時間打磨,那也是紙上談兵啊。所以我再強調(diào)一遍,小菜雞階段不宜久留,應當速戰(zhàn)速決,1周時間搞定,最多2周。得馬上做點有成就感,有滿足感的東西出來。所以,趕緊進入第二個階段,入門雞。這第二個階段的目的是在對編程有了一點初步認識之后,嘗試自我開發(fā)自己對編程的興趣。我建議用windows系統(tǒng)的接口做一些比較有趣、好玩的程序,比如我簡單列了幾個適合練手的小程序。我為什么推薦windows呢?一是因為windows的圖像界面編程是非常方便的,拖拖拽拽就能畫個界面出來,所見即所得很容易形成成就感;二是因為windows特別適合小白,它把程序背后編譯、鏈接等等在新手階段不需要了解的知識全部隱藏掉了,只要關注你的代碼就好。可以從最簡單的開始,比如說先彈出一個這樣的對話框,其實也沒有寫幾行代碼。但是這個東西就很有趣,就要比那種黑乎乎的命令行看著順眼的多對吧,你可以把這個程序發(fā)給你的同學,如果你同學只會寫楊輝三角,那你這簡直就是高了一個段位。這是什么?這不就是成就感嗎?我上學那會就對圖形界面很感興趣,我到現(xiàn)在依然記得第一次用windows編寫了一個最簡單的對話框的那種喜悅,我感覺我就是計算機的上帝,我讓他干嘛他就干嘛,這才叫編程嘛。我用C語言寫過一個音樂播放器,還用java寫過一個撲克牌游戲,當時真的是,課程設計都直接高分。圖形界面編程很容易激發(fā)一個人的興趣,俗話說,興趣是最好的老師,一旦你學習編程的興趣和熱情被點燃,那這興趣會驅(qū)動著你繼續(xù)學習下去,你會不斷完善你所編寫的代碼,直到它展現(xiàn)出你想要的樣子。在這些編程練習中,你會反復用到第一個階段學到的理論知識,遇到不會的,翻翻書,找找視頻馬上補上,這樣的練習有了理論指導會事半功倍。這個階段的時間長短呢,自己決定,如果越做越爽,也可以一直在這個階段玩下去。這里我再插入第四個學習原則,就是要自己給自己訂立目標。不能漫無目的的瞎學,要有個指引,訂立的目標最好是可以衡量的,不然你都不知道自己學沒學會。比如立下目標,要在3小時內(nèi)學習5個C標準庫的接口。能夠知道在什么情況下用、并且會用5個接口就算達成了目標。再比如做個音樂播放器,要把一個音樂播放器做到什么樣的效果,有哪些功能,先從整體上考慮好,然后為了實現(xiàn)這些目標不斷完善,一旦達到了目標,就可以進入下一個目標了。那么下面是第三個階段,進階機。這個階段要學一些編程語言之外的東西。數(shù)據(jù)結構、算法、網(wǎng)絡的理論和實踐都該安排上了。數(shù)據(jù)結構可以先學些最基礎的,像棧啊、隊列啊、鏈表,他們的概念是什么,有什么區(qū)別和聯(lián)系,樹形結構比較難理解,看不懂可以先略過。簡單的算法也要懂一些,排序和查找是最常用的,必須要掌握。計算機網(wǎng)絡是整個互聯(lián)網(wǎng)行業(yè)網(wǎng)絡通信的理論基礎,也必須學,物理層、鏈路層可以不會,網(wǎng)絡層、傳輸層和應用層必須掌握最關鍵的幾個協(xié)議。最后,學習了這些理論知識還是要實踐,沒有實踐的理論就像是蓋在沙子上的碉堡,俗稱沙雕。如果你不想做沙雕,那就把代碼寫起來!這個階段該學習在linux上寫代碼了,畢竟在實際的工作中,基本沒有人在windows上用C語言開發(fā)程序。我覺得非常合適的一個練習項目就是網(wǎng)絡聊天軟件,像QQ一樣的,可以用linux寫服務端,用windows寫客戶端,這個過程中的練習會加深對操作系統(tǒng)的系統(tǒng)調(diào)用、數(shù)據(jù)結構、網(wǎng)絡這些知識的理解。而且網(wǎng)絡聊天軟件很有趣,做起來也沒那么枯燥,做好了之后發(fā)給你女神一個專屬客戶端,你們在你自己寫的軟件里聊天,邊聊天邊吹牛,豈不美哉!這個階段涉及不同課程的知識,應該花費比較長的時間。我建議代碼要一行一行的寫,就像飯要一口一口的吃,三連支持要邊看邊點。項目中每一行代碼都要搞明白什么意思,這樣你才能寫出健壯的、沒有bug的代碼。我在寫這個稿子的時候?qū)iT去找了一些開源的聊天軟件,沒有找到我想要的C語言的windows linux這樣組合的,并且適合新手的項目。那么接下來呢,就來到了C語言學習的最后一個階段:老司機階段。這個階段不再需要學習基礎知識,而是要開始向高手、向大師學習了。使用廣泛、經(jīng)得起時間考驗的開源代碼是這個階段最好的學習資料,我列出了幾個網(wǎng)絡行業(yè)相關的C語言的開源項目,這也是我在工作中經(jīng)常接觸到的項目。有JSON格式數(shù)據(jù)的解析庫cjson、最小的http服務器tinyhttpd、高性能的http服務器nginx,還有物聯(lián)網(wǎng)常用的傳輸協(xié)議mqtt,如果想學習tcp與udp的實現(xiàn),有個協(xié)議棧找叫l(wèi)wip,與linux內(nèi)核的網(wǎng)絡協(xié)議棧相比,代碼量少了不是一星半點,非常適合學習。我不知道你是什么行業(yè),你所在的行業(yè)又有哪些著名的開源C項目,歡迎留言分享給大家!我相信它們都可以拿來做自學的材料。剛開始學習開源代碼肯定是一臉懵B的,你會驚呼,C語言還能這樣寫?你會懷疑,我眼前的代碼還是那個熟悉的C語言么。相信我,每個人都是這樣的,我總結了幾個學習源碼的方法也分享給大家,這個腦圖后面也有:首先要保證代碼是沒有錯誤可以直接運行的,不然一運行就出錯,就沒有辦法繼續(xù)下去;接著我們要先從整體上理解整個項目的功能是什么,它的輸入是什么,輸出是什么,先在頭腦里有個預期;在看代碼的時候可以只關注數(shù)據(jù)結構中最關鍵的字段和最關鍵的語句,與主干邏輯無關的代碼可以直接忽視掉。**進階機階段是學習的是怎么使用接口,老司機階段就是學習怎么實現(xiàn)接口了。能看明白開源代碼,能講明白實現(xiàn)原理,你就踏入了專家之路。有了C語言基礎,接下來就是一些單片機的基礎了。首先要選一款學習資料豐富的mcu,建議直接選STM32,資料非常豐富,如果有任何問題查資料基本都能找到答案,對初學者來說非常友好
接著就要寫代碼了,我們的程序一般是通過輪詢,或者定時器,或者中斷這三種方式來進行觸發(fā),要學會編寫這三種方式的代碼。接下來是外設,單片機存在的意義是什么呢?其實就是通過外設,可能是鍵盤也可能是傳感器,這種輸入類型的外設,輸入一定的數(shù)據(jù),進行處理再通過輸出類型的外設,可能是顯示屏,輸出一定的結果。在小菜雞階段要學習使用各種常見的外設,LED燈、蜂鳴器、鍵盤還有IO引腳,這都是最基礎的。還要學習這3種很常見的串行口,uart、spi、i2c,要掌握通信協(xié)議的設計和編解碼的處理,很多傳感器就是通過固定的協(xié)議與單片機通信,另外單片機再和其他單片機、PC機等設備通信時都會用到協(xié)議編解碼。接著要學習一些調(diào)試手段,比如說Keil和IAR軟件的調(diào)試功能。都挺簡單的,如果程序有問題,可以用調(diào)試手段來查查內(nèi)存、某個變量的值,排查問題。小菜雞最后,要做幾個簡單的實踐。我列出來兩個,一個是測距,可以用紅外或者是超聲傳感器來做。另外一個實踐是,可以讀一些傳感器的數(shù)據(jù),比如溫濕度、人體檢測,把數(shù)據(jù)顯示在屏幕上。小菜雞階段結束后,你就可以做些簡單的小項目。菜雞學習時間呢,大概兩周左右就可以了。
入門雞
接下來就來到了入門雞階段,有這么幾個部分:單片機高級部分,學習電路板知識,再做幾個復雜點的實踐小項目。先看單片機的高級,包括這些內(nèi)容:寫代碼要有一定的規(guī)范,包括縮進、注釋、變量和函數(shù)的命名等等,要按規(guī)矩寫。
入門雞階段,項目中要用一些基礎的數(shù)據(jù)結構了,不要全局變量和flag滿天飛;還要學些基礎的算法,主要的就是排序和查找。接著要會用狀態(tài)機編寫稍復雜的程序,小菜雞學會的輪詢、定時器、中斷只能做些簡單的程序,復雜點程序就要有結構進行控制了,狀態(tài)機是比較好的一種代碼框架,要理解狀態(tài)機的原理、編寫的手法。再復雜點的程序,就得上操作系統(tǒng)了,學會使用嵌入式實時操作系統(tǒng),也就是RTOS,要了解它們的任務、鎖、信號量和消息隊列是怎么使用的。如果做和物聯(lián)網(wǎng)相關的項目,就要編寫網(wǎng)絡相關的程序,得會寫socket程序,調(diào)用socket接口收發(fā)tcp/udp/mqtt的數(shù)據(jù)。單片機聯(lián)網(wǎng)一般會用到無線模塊,可以通過串口透傳或者AT指令控制模塊,比如Wifi、藍牙、ZigBee等等傳輸數(shù)據(jù)。很多項目中的單片機是需要用電池的,電池容量有限,所以要學會編寫低功耗的程序,比如控制單片機睡眠、停機、待機,還有低功耗如何測試、有哪些指標衡量功耗的高低,都要掌握。第二部分,要學習看電路板了。
得能看懂簡單的原理圖和PCB就行。
最后,入門雞的實踐:我建議做一個物聯(lián)網(wǎng)設備,連接某個云平臺。阿里云、騰訊云、百度云,都可以連,他們都有物聯(lián)網(wǎng)的接入平臺,接入后,設備要與平臺 APP打通。比如做一個聯(lián)網(wǎng)的溫濕度采集器,可以在APP上看到設備從傳感器讀取數(shù)據(jù),也可以做一個聯(lián)網(wǎng)的智能插座或者智能燈,通過APP來控制它的開關。入門雞要花一定的時間,可能是你工作個一年后到三年之間的這樣的一個狀態(tài),會靈活的使用以上的這些軟件接口與硬件器件,時間久了就可以編寫復雜的程序,做復雜的項目了。
進階機
接下來是進階機階段,這個階段要學習的東西不但變多了,還更深入了。我把進階機的學習范圍分成2大部分,一部分叫“通用內(nèi)功”,就是幾乎哪個行業(yè)都通用的東西,學會內(nèi)功,才能以不變應萬變;另一部分叫“獨門絕技”,指的是某一個細分領域的專業(yè)技術知識,學會了至少不用擔心失業(yè)。咱們先看通用內(nèi)功,首先是最上層,嵌入式實時操作系統(tǒng)源碼的學習,我建議學習FreeRTOS、RT-Thread、μC/OS這三個比較常用的嵌入式系統(tǒng)。
入門雞階段是會用RTOS,進階機就要學習任務、鎖、信號量怎么實現(xiàn)了。接下來是網(wǎng)絡源代碼的學習,同樣的,在入門雞階段是會用網(wǎng)絡接口,進階機就要學習如何實現(xiàn)了。我們可以通過lwip這樣的輕型協(xié)議棧源碼來學習TCP或者UDP,mqtt是物聯(lián)網(wǎng)傳輸?shù)膮f(xié)議,HTTP是WEB的常用協(xié)議,圖中這幾個源碼都是可以直接學習的。然后是模塊的二次開發(fā),模塊二次開發(fā)指的是基于無線模塊直接做編碼,而不是通過MCU進行控制。這樣可以減少一顆MCU主控芯片的使用,節(jié)約硬件成本,畢竟咱們硬件行業(yè)成本第一?。?/p>接著可以學習對代碼性能進行優(yōu)化,我列出了4種方式,這些都可以了解,有的項目有特殊的需求,咱們就要知道怎么優(yōu)化。下面是代碼的可移植性,其實也是按照一定的規(guī)范編寫代碼,我也是列出了4點。如果寫代碼時習慣考慮代碼的可移植性,那你寫的代碼也能很容易的移植到不同平臺。有時我們做一款產(chǎn)品,產(chǎn)品升級了或者更換了硬件芯片,之前代碼移植性好的話,可以很快替換成新平臺。然后是編譯和鏈接的腳本,要學習C語言代碼是如何編譯成機器指令,機器指令又是如何在芯片中進行組織的。代碼編譯完會進行鏈接,要指定加載地址、指定代碼段、數(shù)據(jù)段地址,這個也是有些特殊的產(chǎn)品需要人工設置。除了C語言,還要掌握幾種其他編程語言,Python、lua、shell都建議學學。學會了C語言,這些語言其實都不怎么用學,看看語法就能上手寫,我們經(jīng)常用這類語言處理有規(guī)律的文本、處理二進制固件,方便快捷。后面三個是學習底層知識,首先要學會看芯片手冊,通過芯片手冊能學到太多東西了。在工作的過程中會遇到各種各樣的芯片,可能會有一些比較少見的特殊芯片,沒有封裝成C語言的庫,或者某些不常用的功能芯片提供的庫沒有封裝,這時你就要通過操作寄存器直接控制它們。芯片手冊第一次看肯定看不懂,這個也需要花時間,時間久了,看得多了自然就懂了。而且每個芯片的芯片手冊套路、結構都差不多,看懂一個,基本其他也都懂了,所以大家不用擔心。再往下一層就是匯編指令集,單片機arm的體系結構居多,應當學一下arm的指令集,比如說Cortex M系列的核,它有37個寄存器,要了解它的一些常見匯編指令。能看懂,能夠編寫簡單的程序就可以了。最后再下一層就是電子學了,要學模電和數(shù)電的知識,電壓電流,電阻電容,半導體二極管等等,都要知道它們是干嘛的,接著門電路、CPU、存儲器的電路是怎么設計的,知道理論就可以了。上面這些知識都是內(nèi)功心法,無論做哪個行業(yè),只要和硬件打交道,都能用得上,是咱吃飯的家把什。下面再看看獨門絕技都有啥,獨門絕技就是能讓咱們吃的爽,吃的久。首先是通信協(xié)議棧的開發(fā),比如PHY層、MAC層、空口各層協(xié)議的開發(fā),像Wifi、4G、5G都有類似的開發(fā)需求、崗位,現(xiàn)在5G這么火,如果你能參與開發(fā)一個5G模組,那就非常厲害了!
下面是算法,算法這個分支也是一個比較專業(yè)性的分支,我列出了一些咱們單片機上可以跑的算法,濾波、姿態(tài),慣導,PID,還有slam算法,有些是做可穿戴設備需要的,有些是無人機、無人車需要。做算法是有很高門檻的,基本都研究生起步,如果你沒有讀研究生,或者讀了但對數(shù)學沒興趣,建議還是不要去搞算法了。我學歷就是個普通小本科,算法這方面簡直是個白癡,不懂。算法是真的牛,算法yyds!接下來是安全,這個我不知道有沒有人了解,也是個細分領域。包括芯片安全,網(wǎng)絡安全。比如為數(shù)據(jù)加個密再存儲、比如給固件簽個數(shù)字簽名再燒錄到芯片,這都是安全工程師需要設計和考慮的。未來萬物互連,越來越多的家電產(chǎn)品,甚至汽車也都能用手機控制。所以,嵌入式、物聯(lián)網(wǎng)的安全不能忽略。再后面是FPGA設計,學習編寫Verilog HDL語言,學會用硬件描述語言設計組合邏輯電路和時序邏輯電路,這也是一個比較細的一個分支,專業(yè)性非常強。學習了FPGA之后呢,還可以再學習下設計CPU,包括流水線,取指、譯碼、執(zhí)行,總線,中斷異常等等這些硬件的設計,這已經(jīng)非常非常底層了。為什么嵌入式工程師要學習FPGA或者設計CPU呢?我覺得這是底層原理,會底層的原理,解決上層的問題會思路更開闊,好比你明白TCP的原理,那如果HTTP出了問題,你會更容易解決。好,以上就是進階機階段需要學習的東西了,此刻的你覺得興奮還是覺得可怕?如果掌握了這些呢,工作中遇到的任何技術問題,基本上沒有你解決不了的了。進階機階段,一般是工作至少5年吧,5年8年10年都有可能。想要理解和掌握,既需要不斷的學習理論知識,也需要積累實踐經(jīng)驗。進階機到此結束,馬上就要迎來最后一個階段,老司機階段。讓我們來一起揭開老司機的神秘面紗吧。
老司機
老司機階段,分了4個部分,技術、管理、行業(yè)、公司。到了老司機階段,你不單單是一個懂技術的人了,還要懂管理、懂行業(yè)。仍然可以繼續(xù)學習技術,可以學一些橫向的技術擴展,比如上位機、APP的編寫;測試工具、測試流程的學習;有興趣可以學學Matlab仿真。
如果喜歡畫板子,可以多畫畫PCB;愿意做設計,也可以學學工業(yè)設計、結構設計這些知識。那么管理呢,包括了這些內(nèi)容:可以邊帶團隊邊學習管理知識,要依靠團隊的力量實現(xiàn)你想實現(xiàn)的產(chǎn)品或者功能。
你還要有一定的行業(yè)認知,就是你要懂行業(yè),我大概總結了幾個單片機涉及到的行業(yè):不要把目光集中在手上開發(fā)板的一畝三分地兒,要關注行業(yè)的市場空間,是否處在上升期。
要努力成為某個行業(yè)的專家,行業(yè)的專家,行業(yè)的專家!什么是行業(yè)的專家?舉個例子,如果你在醫(yī)療行業(yè),那你就要懂些醫(yī)療方面的知識。比如做個血糖儀,要學習血糖對人體有什么作用、正常血糖值是什么范圍,還要懂一個血糖儀是怎么設計、生產(chǎn)的,都有哪些人參與,客戶是哪些人,他們在哪,通過什么樣的方式或者渠道能把產(chǎn)品賣給他們,有沒有什么行業(yè)潛規(guī)則。大家現(xiàn)在聽我這么說可能覺得很難,但其實沒多難,你如果喜歡一個行業(yè),那就去那個行業(yè)干幾年,稍微用點心,都不用太久,慢慢就不知不覺都學會了。老司機的最后一點就是公司了,我列了整個電子行業(yè)上下游的產(chǎn)業(yè)鏈出來:從最上層的芯片原廠再到中間的模組廠傳感器廠、操作系統(tǒng)、云平臺、運營商,最后是B端或C端的硬件廠商,或者是集成商或者渠道商。
無論哪種類型的公司,都會有嵌入式工程師的需求。作為一個老司機的你,應該了解你們行業(yè)中頭部、腰部、尾部的公司,了解他們的商業(yè)模式,他們的生存狀態(tài),了解同行在做什么產(chǎn)品,都有哪些業(yè)務,為什么開展這些業(yè)務,這是一個老司機應該懂的。這些行業(yè)認知和公司認知,都是需要在多年的從業(yè)中,摸爬滾打獲得的,這些經(jīng)驗在哪本書或哪篇文章中都是學不到的。