嵌入式是坑?別鬧了

整合自網絡,觀點僅代表作者個人觀點。

互聯網向來流傳嵌入式是大坑的說法,大部分人眼裏的嵌入式:1、工資低的不像話,2、小學生乾的活,3、學的要死要活的,付出很多,最後付出得不到回報,還不如趁早轉互聯網。

據Kerr Wang表示,上述觀點裏面初看有那麼一點道理,但是很多人從來就不想想,現在自稱是嵌入式工程師的,有幾個具有正兒八經的完整的知識體系的,大部分人眼中認爲會玩點ARM,會點C語言,甚至連指針都用不熟的就是嵌入式工程師了。

那些個幾天嵌入式培訓課程上完,一點原始的技術積累都沒有,能拿着人家弄好的內核鏡像燒着玩,拿着人家的程序也能改幾行,大部分這樣的人實際上只是搬磚的,拿低薪也是正常的。

不過話又說回來了,現在很多小公司也只需要這樣的人打打下手的也就行了,主要是開發平臺越來越先進,開發的成本越來越低,而且小公司壓根就不需要保證性能和可靠性,直接使用芯片提供商或者硬件提供商的評估板評估代碼改改就能用,並不需要去了解架構這些東西,只需最後的東西能工作就行了,你覺得這些工作需要什麼水準的人?我覺得這樣的工作讓小學生去幹,確實是可以的。

但是嵌入式開發真的就這麼簡單嗎?我一個師兄在華爲無線部門,上次聊了會天,他們給設備寫代碼增加功能,代碼功能一加再加,但是要求編譯出的二進制文件體積和程序運行佔用的內存不能比之前的代碼大,因爲新代碼要兼容舊設備,舊設備的flash和ram就那麼大,你增加了體積,舊設備就沒法用了,所以就得不斷的優化,甚至得到彙編級別,寄存器級別去優化。這要是換在小公司或者初創的公司的話,沒事,代碼體積增大了,換大存儲大內存完了咯,這樣他們需要的就不是嵌入式工程師了,或者只需要水平很低的所謂的工程師了,工資拿不高也是正常的。

這個時候有人就會說,那些大公司進不去啊,那沒辦法,自己水平低又不願意突破還天天抱怨那又有什麼辦法呢?但是有人會說,那些初創的互聯網公司要的人水平也不咋地,隨便培訓幾天工資就很高了。這個是真沒辦法,這個是由經濟情況決定的,互聯網經濟下熱錢多,投資人不差錢,自然給的就多,這個不是技術水平決定的,反觀嵌入式開發,實體經濟下滑,真正能開起大價格的只有大公司,從這個角度來看,嵌入式工程師的工資是很符合經濟規律的。互聯網公司的大牛的工資也很高啊,所以就得出結論,不論是嵌入式還是互聯網,真正能稱得上是工程師的工資都不會低,你看今年海康的嵌入式開發就比軟開高了1K。工資差異大的,只是那批打下手的,這個是經濟情況決定的,但是三十年河東三十年河西,誰敢保證互聯網經濟就不是一個泡沫呢?到那時,只剩下大公司能夠運營,情況你就可想而知了。仔細研究一下你就會發現,嵌入式的公司大多都是服務提供商,提供的是通信,基站等等行業,這些行業永遠都是不會垮的,所以在經濟危機當中,嵌入式行業不見得就是一個坑,中國可以沒有那些創業的電商,但是絕對不能沒有華爲,中興這樣的公司。另一方面,現在智能硬件火起來了,你看各種智能家居,各種無人機,VR都需要嵌入式的支持,今年網易不是還有招硬件開發的麼?到這裏,搞嵌入式的是不是心情爽了一點。總之一句話,不論哪一行,互聯網還是嵌入式還是其他行業,你要想不被淘汰,只需要一個字,牛,牛就行了。

說嵌入式“坑”僅僅是一個導火索,具體也發生了這樣的現象:

現象1:

想從事嵌入式方向的學生,大部分是ee專業,學生基礎不紮實。說嵌入式是坑的大部分人有以下特徵:1、死磕單片機,然而單片機只是工具,重點應該放到模電數電等基礎課程上,但這些人大部分基礎很不紮實,非常浮躁,沉迷於校園各種高大上的製作和項目,對原理的思考甚少。2、大部分所謂的項目,是在重複勞動,驅動大部分來自網上,很少有人能看着芯片手冊編程。

在本專業中,單片機被過度神話,尤其在部分院校,單片機被看作是救命稻草的存在。彷彿學好單片機就能走遍全天下,學不好連工作都找不到。

Kerr Wang表示,這個是當前的教育環境與生產環境脫節導致的,體制導致的東西,誰都沒辦法的。儘管學校大搞產學研,但是都是假的,當年嵌入式課的時候,老師一直在那讀PPT,有些關於架構和編程的東西還講錯了,嵌入式實驗課的時候,第一節課發一份pdf文檔教大家ADS軟件是怎麼用的,這個軟件ARM公司當時都不再提供支持了,我的Win7電腦裝都裝不上。第二節課的時候每人發一塊板子,我記得是OMAP138的,給了一個bin文件,燒進去看看現象,代碼都沒開放,這叫上課,這TM在逗我,不過我也不需要那些個實例代碼,因爲我自己也可以寫,成功裝個逼,要不是先前自學了點,還真被忽悠的一愣一愣的,覺得嵌入式開發就是拿着bin文件燒着玩。

據另一位網友表示,電子信息專業的方向大概有:

1、數字電子線路方向。從事單片機(8位的8051系列、32位的ARM系列等)、FPGA(CPLD)、數字邏輯電路、微機接口(串口、並口、USB、PCI)的開發,更高的要求會寫驅動程序、會寫底層應用程序。單片機主要用C語言和彙編語言開發,複雜的要涉及到實時嵌入式操作系統(ucLinux,VxWorks,uCOS,Windows CE等等)的開發、移植。大部分搞電子技術的人都是從事這一方向,主要用於工業控制、監控等方面。

2、通信方向。一個分支是工程設計、施工、調試(基站、機房等)。另一分支是開發,路由器、交換機、軟件等,要懂7號信令,各種通信相關協議,開發平臺從ARM、DSP到Linux、Unix。
3、多媒體方向。各種音頻、視頻編碼、解碼,mpeg2、mpeg4、h.264、h.263,開發平臺主要是ARM、DSP、windows。
4、電源。電源屬於模擬電路,包括線性電源、開關電源、變壓器等。電源是任何電路中必不可少的部分。
5、射頻、微波電路。也就是無線電電子線路。包括天線、微波固態電路等等,屬於高頻模擬電路。是各種通信系統的核心部分之一。
6、信號處理。這裏包括圖像處理、模式識別。這需要些數學知識,主要是矩陣代數、概率和隨即過程、傅立葉分析。從如同亂麻的一羣信號中取出我們感興趣的成分是很吸引人的事情,有點人工智能的意思。如雷達信號的合成、圖像的各種變換、CT掃描,車牌、人臉、指紋識別等等。
7、微電子方向。集成電路的設計和製造分成前端和後端,前端側重功能設計,FPGA(CPLD)開發也可以算作前端設計,後端側重於物理版圖的實現。
8、其他方向。比如音響電路、電力電子線路、汽車飛機等的控制電路和協議。





其中方向1、2、3涉及單片機或嵌入式芯片的開發,而且單片機也是電子信息工程所有學科中最簡單的一門課程了,不會單片機我都不好意思說自己是EE出來的了。所以,說單片機是EE本科生找工作的救命稻草,也不奇怪。更進一步的,我認爲,以單片機爲核心的電子系統設計纔是EE學生的重中之重。這方面還有相關的比賽了:電子設計大賽和單片機設計大賽。(當然電賽有些題目並不是單片機爲核心而是輔助)。

現象2:

害怕跨專業。從大部分學生的經歷來看,從事的方向應爲嵌入式軟件,但因爲專業的緣故,經常給自己冠名以嵌入式硬件工程師,因爲害怕脫離本專業。結果,兩邊都學的不精。本專業的電路基礎,模電數電,信號與系統,高頻電路等學的非常一般。而軟件方向的,編程語言,數據結構,操作系統等根本沒有系統學過,冠冕堂皇稱之,在項目中學習就可以了。從很多人經歷來看,不懂指針,不懂數據結構操作系統,就開始上手linux。因而校招中,軟件方向因數據結構等課程不過關,筆試被殘忍淘汰,電路設計因爲學校沒有很好的研究環境更是不堪一擊。於是發出了嵌入式要完,我學的那麼用功,依然找不到好工作等言論。

同時,沒有上升到linux,在win裸機中打轉,板子的bootloader甚至沒聽過,對自己的開發平臺一無所知。

Kerr Wang表示,這是自己的問題了,其實很多人都知道問題在哪了,就是不去做不去改啊,老西醫就要說一句了,別治了,已經治不好了,沒救了,等死吧。

本科階段是打基礎的時候,廣而學之,這是很重要的,開闊眼界,串聯各個技能樹和知識體系最重要的階段,培養自學能力和查找資料能力最重要的時候,大一大二的時候就是培養這個能力的,這個時候很多東西自己都要有個概念,什麼叫有個概念,就是這個東西你知道名詞,你知道它是幹什麼,但是可能對細節不瞭解,這個沒關係的,當你遇到一個任務或者需求的時候,因爲你知道每個東西是幹什麼的,你就知道用什麼東西去做,至於細節上怎麼去操作,查啊,網絡這麼方便,至於怎麼查,這個時候就是名詞的作用了,這個纔是你大一大二甚至大三上學期真正應該掌握的能力了,後面的時間就是不斷的深化和實踐。

不要覺得本科的理論課程不重要,記住啊,是理論課程,你應該清楚理論課程都是在大二的時候結束的吧?他們的目的是什麼,目的就是通識,需要你去掌握概念,你要是現在問我,小信號放大怎麼實現,我不一定馬上就能答得出來,但是我可以去百度三極管,靜態工作點,直流通路,交流通路,小信號模型,運算放大器,同相放大,反相放大這些東西了,很快就可以給你一個電路,這就是概念的重要性,但是如果你不知道三極管這個名字或者你也不知道三極管的作用,你告訴我,你拿什麼關鍵詞去查,關鍵詞理不理解?當然,你要是夠聰明,直接查放大器就行了,當然這裏只是舉一個例子而已,不必當真。前一段時間啊,由於一定的需要,去看了一下《數字信號處理》和《現代譜估計》裏面的AR模型,伯格算法,時頻域分析,爲什麼呢?因爲我知道要這麼幹啊,臥槽,看一下還真TM有用,當然啦,這幾門課當年都是學過的,我知道要這麼幹,所以我就去看了AR估計,深入瞭解了一下細節,然後去吹牛逼吹得很是牛逼啊,要是不知道這些個概念啊,這個牛逼啊,它就吹不起來了……

所以,對於這種現象,最重要的能力不是你會寫幾行代碼,會玩點Linux,而是一個完整的體系,這個體系搭不起來,都是扯淡的。軟件工程師也要懂一點硬件啊,硬件工程師也要懂一點軟件啊,不是說精通,但是至少知道概念啊。至於這個能力怎麼培養,我也不知道,我能怎麼辦,我也很絕望啊。我可以猜出來,有人會說,我學校不咋地,學校軟硬件設施跟不上,我該怎麼辦?我也不知道啊,我能怎麼辦,我也很絕望啊,但是我只知道認真學就對了。不要覺得,其他學校就能怎麼樣,馬克思主義告訴我們,“人的主觀能動性是很重要的”,但是事實又告訴我們,“空談誤國,實幹興邦”,所以還是趕緊幹活去了,哎,我能怎麼辦?我也很絕望啊……

現象3:

少部分人聲稱,學好了也沒什麼用,普通人幹10年,最多就20w,和互聯網差太多,而且招的人少。

據網友表示,這些少部分人的觀點,「普通人」——估計指的是普通的本專科生,研究生估計不在這範圍內(當然你們研究生硬要說自己也是普通人我也沒辦法~)。所以,嵌入式三年經驗工程師,12K月薪,一年算它發14個月的工資。12K乘以14等於16.8W,好像和20W有點差距,以後隨着工作經驗增長,也可以達到年薪20W了。985研究生,月薪14K,14個月,是19.6W,差不多了。畢業後就能達到20W,很不錯了。

但是這麼高的工資,也需要個人的長期努力和一定的機遇。

另外從調查來看,嵌入式人才其實也供不應求。嵌入式ARM曾經發布,《從事嵌入式行業年薪有多少,你和高薪究竟差了哪些東西?》,其中從事嵌入式行業年薪相較其他行業來說,也具有較爲客觀的薪資水平。

現象4:

需要學習的東西多,如果是做項目需要學習,會拉長項目週期。

據知乎閼男秀表示,對比於互聯網,「一個熟練的前端的成長週期大概是兩年」,我也認同這個觀點。CS專業學生大學四年裏認真專研前端技術,本科畢業後是有可能進入BAT的。而EE,我大學時的德高望重的老教授還建議我們,我們這個專業(電子信息工程)去考研比較好。而後臺,在我眼中,Java是目前最好就業的,有的人花幾個月學會了Java的SSH框架,就馬上去找工作了(小學生乾的活[doge臉])。

不過其實後臺開發也形成了一個成長體系,複雜度不亞於嵌入式成長路線。

主要原因還是在於「嵌入式」這門技術涉及範圍太大太多太廣泛,以至於「此嵌入式非彼嵌入式」,有定義模糊、定義廣泛之嫌。

嵌入式這個行業還是很不錯的,這是一個要運用到電子和計算機知識的領域。要在嵌入式領域裏如魚得水,一個必要條件是深刻理解計算機組成原理(或微機原理),還有也要熟悉各種開發工具、測試工具,熟悉操作系統、網絡通信等。

當然,14年培訓機構大肆宣傳嵌入式,其實也有被炒作之嫌,不過年輕的時候誰沒有自以爲是,自認爲僅憑短時間的努力就可以學好嵌入式,找到高薪工作,走向人生巔峯,其實還是要踏踏實實走。

另外,我認爲本科畢業的和研究畢業的絕對不可相提並論——平臺和視野不同,還有深度。

本科四年大都是打基礎,廣泛學習的階段,畢業出來後可能對自己的專業領域略懂皮毛,或稍微深入瞭解過某一點,四年時間裏不可能就完全熟悉了嵌入式領域的所有內容。畢業後肯定還需要在某方向加深學習,或者多做項目積累經驗,很多時候會接觸到以前完全沒有接觸過的嵌入式技術!這就是所謂的坑。沒有一定的項目經驗,得不到高工資,這就是所謂的坑。做硬件總會燒壞某些東西,做電路板不小心炸了電容,或者因爲電容放電電到了自己,這也是所謂的坑。

而研究生,至少在某一方面深耕了兩年或三年,在這兩三年間挖坑無數也填坑無數,在技術上,視野及所處的平臺肯定要比本科生高一個層次,學識深度肯定要比本科的深。很多東西別人認爲是坑的在自己眼中則完全不是。這個時候已經具備了大神的身形。出來找工作身價自然就高。

如果真的喜歡嵌入式的或想進嵌入式行業的(特指嵌入式Linux級別而不是MCU級別),一讀研,再花兩三年時間磨練自己的技術;二如果不讀研就去嵌入式Linux公司做個兩三年四五年,這個時候也基本熟悉嵌入式是怎麼回事了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章