參加工作後的過來人告訴你,嵌入式工作是什麼樣的,要學什麼?
既然有後生問了,我就再補充一點,希望大家做出選擇之前充分考慮好,擺正學習態度。
其實這類問題不光是逼乎上天天有人問,每年我們招來的實習生也沒有一個不問這個問題的:做電子、做軟體、做硬體、做嵌入式,待遇到底如何??
很遺憾,我必須得說,玩技術的,在中國,網際網路公司,確實是最掙錢的。如果諸位學弟學妹們是為了掙錢,大家還是去學做網站吧,那個門檻又低,短期回報率也高。
是的,在中國做電子就是這樣苦逼:勤勤懇懇工作十多年,到頭來和一些剛畢業3年的做遊戲小兔崽子工資也差不多。雖然技術上確實比人家紮實,對系統的理解也確實更深入,可架不住人家網際網路公司工資就是高~~~~
可能是我老了,我對現在的小兔崽子身上很多東西真是看不慣!理論基礎一塌糊塗,項目實踐等同於沒有,就他麼敢跟你開工資,1萬、一萬5、2萬!!按說像我們這種甚至是更老一輩的老哥們,從小物質條件很一般,長大後對財富的渴望特別劇烈我倒還能理解。照理說你們這些90後的成長過程中物質條件還是可以的,能讀到研究生的,沒有誰說是從小吃不飽穿不暖吧??可為什麼找工作時只考慮工資,而想的不是「我是否喜歡這份工作」呢??
按理說你們90後是改革開放後最有資格將「興趣」放在首位去擇業的一代了吧??為什麼學電子的出發點依然是為了工資呢???
不是說我這人思想老,作為過來人,我他麼太了解電子這一行的艱辛了!它需要你長期耐得住寂寞、耐得住誘惑,一門心思鑽研技術。別人掙2萬的時候你只能掙1萬,但沒辦法,這種日子起碼還要熬10年。一開始996那是日常,等10年後開始入門了,可以自己接點私活項目了,更是得沒日沒夜地干!
請問,如果你不是打心底喜歡電子這份職業,你怎麼能堅持得下來???
在這裡,我要奉勸各位後生,如果你吃不了苦、耐不住誘惑、自己也未必真心喜歡,還請三思吧。真的,掙錢的工作有的是。電子這行錢又少,成長期又長,淘汰率又高,沒有充分的思想準備,你會受不了的。
首先你得搞清楚「嵌入式」三個字到底是什麼意思。我發現很多人張口閉口「嵌入式」,卻又說不出「嵌入式」到底是什麼東西。搞得好像硬要和「上位機」進行區別似的。手機算不算嵌入式?家電算不算嵌入式?遊戲機、汽車、機床…………算不算嵌入式??powerpc的電腦算嵌入式還是算電腦?powerpc的DVR算電腦還是算嵌入式??
所以你要做的第一件事就是把「嵌入式」三個字從腦子裡趕出去,因為那屬於舊時代的產物。現在只要記住一句話即可:計算機系統本質上將就是一種控制器,這種控制器可以複雜也可以相對簡單,可以昂貴也可以廉價。計算機系統在硬體上只有架構的區別、只有外設的區別,除此以外原理上沒有區別!而在軟體上更是幾乎沒什麼區別!所以你的問題更合適的表達應該是:做軟體需要學什麼?做硬體需要學什麼?如果二者都做應該怎麼學??
那麼既然你問的是「嵌入式」,我就假定你想問的是軟硬體都做應該怎麼學——這就是為什麼所謂的「嵌入式」工程師要求更高的原因。因為一個合格的電子工程師,必須做到軟體也懂,硬體也懂。你可以懂得不深,這不要緊,可以慢慢學——電子工程師的成長周期是以十年為單位的。
數電、模電、微機原理、C語言(少扯什麼python、java、c++,你真想學會軟體的話就老老實實鑽研C!當然你要牛叉鼓搗彙編也成,但既然你都問出這種問題來了,所以,咱現實點,先把C鑽研頭再說吧)、編譯原理。這幾門都是基礎,基礎中的基礎則是高數和大學物理。
在學習這些基礎的時候我非常反對只看書做題不練習!電子是一門以理論為基礎,以實踐為方法的綜合學科。書當然要認真看,習題當然要認真做,說得誇張點,連一個標點符號為什麼要這麼標你都得弄懂!但是如何弄懂這些標點符號的意義呢?唯有實踐這一條路!!所以在學習的時候,一塊像樣點的開發板是必須的!
硬體方面,數電相對容易,本質上就是各種與非門的組合;模電就相對難很多,一顆電阻橫著擺還是豎著擺,可能出現兩種截然不同的結果。那麼如何精通模電呢?很遺憾,沒有什麼好的辦法,只有不停的畫圖、不停地實驗、不停地思考、不停地總結經驗。等你踏踏實實畫個7、8年圖,自然也就明白為什麼電阻不能瞎放了。
但是有件非常好的事情就是現在的學習條件真的要比當年好太多,計算機仿真軟體的大量出現可以極大提高學習效率、降低學習成本。畫完原理圖、layout你不需要去真打板子,完全可以通過仿真軟體來驗證設計是不是ok。雖然不能100%覆蓋各種需求,但總是要比做板子來的有效率吧?可以說原先做10年模電你可能才剛剛入門,藉助現代化的仿真軟體,這個時間可能可以縮短到5、6年——當然前提是你真的認真學習。
軟體則相對容易些。首先大量成熟的IDE省去了以前搭環境的煩惱。其次以前學單片機最痛苦的就是開發板很大、很貴,並且種類少、外設也少。現在淘寶上隨便一搜就滿是開發板,各種單片機的都有,外設通常還都很強大,價格卻很便宜。除此以外,以前學習資料真的很少。現在不但原廠手冊隨便你下載,各種第三方的學習資料也幾乎是免費在網絡上提供。可以說學習門檻比起十幾年前大大降低了。
前面我也有提到,學習軟體就踏踏實實把C學好,而C的關鍵或者說計算機軟體的核心,就是如何理解內存、管理內存、安全使用內存。所以說如果你懂彙編,就能更好地理解這句話的含義。不懂就老老實實學C吧。中國軟體工程師的一個最大的壞毛病就是張口閉口就是一些什麼前端後端咯、領域對象咯之類的fancy words——做網際網路站的特別多。表面上花里胡哨貌似很專業,其實懂的只是一些皮毛,或者說懂的只是一些別人已經實現好了的東西。至於這些實現的底層落實到硬體層面意味著什麼,統統說不出來。你非要追問他們,標準回答一般都是:那些東西不需要我關心~~
好啦,不扯那些沒出息的混子了。既然學電子,硬體是具體某個功能的實際對象,而軟體則是實現這些功能的載體。對於一個計算機系統來說,對於一個計算機系統軟體來說,無非就是將硬體各種外設設置好,然後調用這些外設去實現具體某種功能。前者我們叫驅動,後者我們稱之為應用。所以學習的思路這個時候也就應該有了——光學應用開發不去學硬體設置你真能學好軟體開發???
如果之前沒學過,那麼現在最簡單、也是最佳的方式就是先買一塊51開發板,通過51去學習什麼是計算機系統,CPU這種東西到底是什麼,如何設置一塊CPU,如何應用一塊CPU。無需覺得51是不是太落後了之類的問題,麻雀雖小五臟俱全,51看著簡單,但它包含了所有有關處理器的硬體、軟體原理。先通過簡單的東西把基礎打牢,然後再談其它的。學電子是有門檻的,一開始就學複雜的單片機,勸退率必然100%。
作為一個曾經走過很多彎路、從事了十多年電子研發、現在剛覺得入了門的偽非混子,給你一句忠告就是:電子的門檻不低,甚至可以說有點高,選擇了電子就意味著一輩子都要學習,就意味著你越是學得多,就越是覺得自己有多無知。
但同時獲取到的成就感、滿足感以及穩定且頗豐的收入,至少還是能讓你過上體面有尊嚴的生活的。
哦對了,你還有提到希望少走彎路。我的意見是:如果你對你自己有要求,有些彎路,必須要走!