整合自網絡,觀點僅表明做者我的觀點。前端
互聯網向來流傳嵌入式是大坑的說法,大部分人眼裏的嵌入式:一、工資低的不像話,二、小學生乾的活,三、學的要死要活的,付出不少,最後付出得不到回報,還不如趁早轉互聯網。linux
據Kerr Wang表示,上述觀點裏面初看有那麼一點道理,可是不少人歷來就不想一想,如今自稱是嵌入式工程師的,有幾個具備正兒八經的完整的知識體系的,大部分人眼中認爲會玩點ARM,會點C語言,甚至連指針都用不熟的就是嵌入式工程師了。算法
那些個幾天嵌入式培訓課程上完,一點原始的技術積累都沒有,能拿着人家弄好的內核鏡像燒着玩,拿着人家的程序也能改幾行,大部分這樣的人實際上只是搬磚的,拿低薪也是正常的。編程
不過話又說回來了,如今不少小公司也只須要這樣的人打打下手的也就好了,主要是開發平臺愈來愈先進,開發的成本愈來愈低,並且小公司壓根就不須要保證性能和可靠性,直接使用芯片提供商或者硬件提供商的評估板評估代碼改改就能用,並不須要去了解架構這些東西,只需最後的東西能工做就好了,你以爲這些工做須要什麼水準的人?我以爲這樣的工做讓小學生去幹,確實是能夠的。windows
可是嵌入式開發真的就這麼簡單嗎?我一個師兄在華爲無線部門,上次聊了會天,他們給設備寫代碼增長功能,代碼功能一加再加,可是要求編譯出的二進制文件體積和程序運行佔用的內存不能比以前的代碼大,由於新代碼要兼容舊設備,舊設備的flash和ram就那麼大,你增長了體積,舊設備就無法用了,因此就得不斷的優化,甚至獲得彙編級別,寄存器級別去優化。這要是換在小公司或者初創的公司的話,沒事,代碼體積增大了,換大存儲大內存完了咯,這樣他們須要的就不是嵌入式工程師了,或者只須要水平很低的所謂的工程師了,工資拿不高也是正常的。後端
這個時候有人就會說,那些大公司進不去啊,那沒辦法,本身水平低又不肯意突破還每天抱怨那又有什麼辦法呢?可是有人會說,那些初創的互聯網公司要的人水平也不咋地,隨便培訓幾天工資就很高了。這個是真沒辦法,這個是由經濟狀況決定的,互聯網經濟下熱錢多,投資人不差錢,天然給的就多,這個不是技術水平決定的,反觀嵌入式開發,實體經濟下滑,真正能開起大價格的只有大公司,從這個角度來看,嵌入式工程師的工資是很符合經濟規律的。互聯網公司的大牛的工資也很高啊,因此就得出結論,不管是嵌入式仍是互聯網,真正能稱得上是工程師的工資都不會低,你看今年海康的嵌入式開發就比軟開高了1K。工資差別大的,只是那批打下手的,這個是經濟狀況決定的,可是三十年河東三十年河西,誰敢保證互聯網經濟就不是一個泡沫呢?到那時,只剩下大公司可以運營,狀況你就可想而知了。仔細研究一下你就會發現,嵌入式的公司大多都是服務提供商,提供的是通訊,基站等等行業,這些行業永遠都是不會垮的,因此在經濟危機當中,嵌入式行業不見得就是一個坑,中國能夠沒有那些創業的電商,可是絕對不能沒有華爲,中興這樣的公司。另外一方面,如今智能硬件火起來了,你看各類智能家居,各類無人機,VR都須要嵌入式的支持,今年網易不是還有招硬件開發的麼?到這裏,搞嵌入式的是否是心情爽了一點。總之一句話,不論哪一行,互聯網仍是嵌入式仍是其餘行業,你要想不被淘汰,只須要一個字,牛,牛就好了。網絡
說嵌入式「坑」僅僅是一個導火索,具體也發生了這樣的現象:數據結構
現象1:架構
想從事嵌入式方向的學生,大部分是ee專業,學生基礎不紮實。說嵌入式是坑的大部分人有如下特徵:一、死磕單片機,然而單片機只是工具,重點應該放到模電數電等基礎課程上,但這些人大部分基礎很不紮實,很是浮躁,沉迷於校園各類高大上的製做和項目,對原理的思考甚少。二、大部分所謂的項目,是在重複勞動,驅動大部分來自網上,不多有人能看着芯片手冊編程。框架
在本專業中,單片機被過分神話,尤爲在部分院校,單片機被看做是救命稻草的存在。彷彿學好單片機就能走遍全天下,學很差連工做都找不到。
Kerr Wang表示,這個是當前的教育環境與生產環境脫節致使的,體制致使的東西,誰都沒辦法的。儘管學校大搞產學研,可是都是假的,當年嵌入式課的時候,老師一直在那讀PPT,有些關於架構和編程的東西還講錯了,嵌入式實驗課的時候,第一節課發一份pdf文檔教你們ADS軟件是怎麼用的,這個軟件ARM公司當時都再也不提供支持了,個人Win7電腦裝都裝不上。第二節課的時候每人發一塊板子,我記得是OMAP138的,給了一個bin文件,燒進去看看現象,代碼都沒開放,這叫上課,這TM在逗我,不過我也不須要那些個實例代碼,由於我本身也能夠寫,成功裝個逼,要不是先前自學了點,還真被忽悠的一愣一愣的,以爲嵌入式開發就是拿着bin文件燒着玩。
據另外一位網友表示,電子信息專業的方向大概有:
一、數字電子線路方向。從事單片機(8位的8051系列、32位的ARM系列等)、FPGA(CPLD)、數字邏輯電路、微機接口(串口、並口、USB、PCI)的開發,更高的要求會寫驅動程序、會寫底層應用程序。單片機主要用C語言和彙編語言開發,複雜的要涉及到實時嵌入式操做系統(ucLinux,VxWorks,uCOS,Windows CE等等)的開發、移植。大部分搞電子技術的人都是從事這一方向,主要用於工業控制、監控等方面。
二、通訊方向。一個分支是工程設計、施工、調試(基站、機房等)。另外一分支是開發,路由器、交換機、軟件等,要懂7號信令,各類通訊相關協議,開發平臺從ARM、DSP到Linux、Unix。
三、多媒體方向。各類音頻、視頻編碼、解碼,mpeg二、mpeg四、h.26四、h.263,開發平臺主要是ARM、DSP、windows。
四、電源。電源屬於模擬電路,包括線性電源、開關電源、變壓器等。電源是任何電路中必不可少的部分。
五、射頻、微波電路。也就是無線電電子線路。包括天線、微波固態電路等等,屬於高頻模擬電路。是各類通訊系統的核心部分之一。
六、信號處理。這裏包括圖像處理、模式識別。這須要些數學知識,主要是矩陣代數、機率和隨即過程、傅立葉分析。從如同亂麻的一羣信號中取出咱們感興趣的成分是很吸引人的事情,有點人工智能的意思。如雷達信號的合成、圖像的各類變換、CT掃描,車牌、人臉、指紋識別等等。
七、微電子方向。集成電路的設計和製造分紅前端和後端,前端側重功能設計,FPGA(CPLD)開發也能夠算做前端設計,後端側重於物理版圖的實現。
八、其餘方向。好比音響電路、電力電子線路、汽車飛機等的控制電路和協議。
其中方向一、二、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公司作個兩三年四五年,這個時候也基本熟悉嵌入式是怎麼回事了。