整理自貼吧電子信息工程,ID:玄妙漪瀾,內容有刪改,編輯:付斌
本人本科非985/211,工作地點廣州,現職業(yè)為linux C軟件開發(fā)工程師,但我的工作背景相對廣泛,干過硬件測試工程師,嵌入式軟件開發(fā)工程師,電子信息工程畢業(yè)。接下來我會說幾個挺大家都關注的問題:(偏向于大學生,僅供參考)
電子信息工程的就業(yè)方向
其實這個問題應該從電子信息工程這個專業(yè)是什么來分析,你們可能會去百度然后得到一堆不實用的官方言論,說下我的認識:
從字面上分析 電子 ,有硬件、弱電、非電力能源強電類、信息、軟件甚至編程,所以這個專業(yè)的就業(yè)方向可謂是廣泛到漫無邊際,各行各業(yè)都能涉及到。
專業(yè)對口的職業(yè)硬件上有電子設計工程師、硬件工程師,半軟硬的有嵌入式硬件工程師、單片機開發(fā)工程師、嵌入式軟件開發(fā)工程師,純軟件甚至已經不能算是百分之百對口,但同樣可以有,而且大概率主要偏向于計算機專業(yè)系,比較正統(tǒng)的有C/C++軟件工程師、linux系統(tǒng)開發(fā)工程師,稍微擦邊的有java開發(fā)、安卓開發(fā)工程師,學個html5做個前端開發(fā)工程師,學幾門腳本php、Python等等都沒問題,而且我的身邊大把這樣的人,我說的還只是研發(fā)方向,不包括測試類。
其實就業(yè)這個東西,你得再從行業(yè)和公司去分析——行業(yè)即是你的這些技術本領最后都應用在什么方面上,比如通信、網絡、醫(yī)療電子、汽車、智能制造、物聯網智能家居、外包公司、系統(tǒng)運維等;公司指的是你最后選擇去的公司情況,大小規(guī)模以及技術力量。為什么要特別指出這些東西呢因為涉及到就業(yè)中大家最關注的點——就業(yè)工資高不高。
就業(yè)工資,其實取決于很多方面,但最重要的肯定是和你自身的能力有關,能力越高,能拿到的也就越高。這里所指的能力包括一切硬實力,甚至學校的知名度也算一方面。
另外,與所在的公司盈利情況、發(fā)展情況及所在的地域也有關,本人位于廣東,對其他地方沒有太大了解,廣州深圳了解的更深一些。對于剛畢業(yè)可能參差不齊,我認為廣州深圳研發(fā)類轉正后是不會低于5K的,當然,如果從高處想的話,高的可以無限的想象,工資高的人大有人在,不過這取決于自己的心有多高。
雖然工資永遠是我們追求的核心,但也不要過于好高騖遠,一畢業(yè)就想蛇吞大象,對于畢業(yè)生,一般公司給一般群體都是1w以下的,其實你剛畢業(yè)能拿到7k+就可以安然自得了,已是高于平均水平。另外還有些公司是包吃住的,可能剛入學的人不會有考慮這個因素,實際上,開給你的工資和你每個月能存到的錢那不是一回事,如果包吃住6000,那可要比你那7000啥都沒有劃算多了。
如果你在廣州深圳找不到一份工資高于5k的工作,那說明你學的還不到家,這個跟學校和學歷關系不大。因為技術類這行就是靠實力說話,筆試面試下來,人家公司不會冤枉你,所以別問我什么我是大專的是不是就拿不到這個數。
另外,當你報了這個專業(yè)或者你在選專業(yè)的時候優(yōu)先從工資就業(yè)這一點開始考慮,那么你是不明智的。術業(yè)有專攻,三百六十行,行行出狀元。無論是建筑、金融還是管理,只要學的好,本領過硬,都可以混的好,一句話,還是靠自己。
再者,有很多人聽說很多身邊的朋友這個專業(yè)工資待遇什么的出來還不錯就選過來了,其實,這個專業(yè)對等的行業(yè)不是個混吃等死的行業(yè),你的工資通過跳槽會升的非??欤荒昶迫f是普遍情況,穩(wěn)定下來以后基本工資都只會停在15k到20k,再漲很難,這時就要看公司了,有很多公司有項目獎,年終分工,股份等等,這個對于干了好幾年的老員工才是拿大頭的地方。如果漲不上去,你就只能轉行轉型了,而且這里有一個硬道理,你工資越高,代表你能力越大,能力越大,你的責任越大,你要扛的事就越多,壓力很大,總監(jiān)級別的心態(tài)不好頭發(fā)掉光是肯定的。
所以,從選專業(yè)的角度來說興趣是關鍵,當然很多調劑過來或者已經稀里糊涂報進來的人就沒辦法。如果想以技術類作為看家本領只能好好學,平心而論,技術的路屬于“穩(wěn)”的路,換句話說,如果你有一顆不滿足于現狀喜歡搞事情,年輕力壯意氣風發(fā)一心想賺大錢做馬云的那種,那請你放棄本專業(yè)別浪費時間馬上開始考慮其他發(fā)展道路。因為技術類的工作就要坐得住、有興趣,靠著你對本業(yè)堅持不懈地探索。一步一步來,你才有可能走的更遠。我不會因為我是業(yè)內人士就很推崇本業(yè),找到自己的道路,明白自己想要什么,才是真的,特別是大學生,最好在大二就有自己的方向,這樣,你有充足的時間做一切準備,比如換行!
求職方法和行業(yè)大背景
因為我是專業(yè)對口的,所以我就從對口的角度,說下我們專業(yè)學的啥以及怎么學。有很多人在問專業(yè)難度,以及哪些課需要讀好認真學等,其實這些需要看你的心有多大,才能決定你要走多遠。
另外,電子信息的專業(yè)難度只要智商沒問題其實一般都學的來,男女都一樣,至少學到就業(yè)水平是沒問題的,所以別問我什么對女生是不是不友好,女生是不是學不來,我只能說那是因為很多女生最后沒興趣沒堅持下來。對于女生來講,這確實是一條孤獨之道,學的人不多,學成的人更不多,但我覺得是個人思想和學習環(huán)境導致的,大環(huán)境下女生都不喜歡這個,所以想走遠可能會難。但現在女程序員也已越來越多,“誰說女子不如男”?
如果你想搞科研,有什么高端大氣上檔次的理想,那本專業(yè)就很難。對于任何工科類的專業(yè),肯定是智商高和有毅力的人最后能走的遠,所以也沒有必要去比較,優(yōu)秀的人大有人在。學的東西很泛,開的課程情況看學校,主要的課程還是偏硬件類、模電、數電、電路,好的學校會開通信原理、計算機網絡、單片機、c語言這些、專業(yè)課很多,我就不一一列舉了,反正我大學的課是排的滿滿的,一般來說你有一兩門學的精基本就能吃飯了。
這個專業(yè)應該怎么學,有哪些出路決定于畢業(yè)后想從事哪種工作,此處暫且先不討論技術外的出路。大一大家都比較迷茫和青澀,估計不明不白所以也沒什么決心,對未來有各種憧憬和期待,野心勃勃,各種搞活動搞事情。到了大三才明白過來,一事無成,才又回頭揚言搞技術!接下來就是學不會、難入門、堅持不下來的狀態(tài)……崩潰、懊悔、迷?!鋵?,這是大部分本專業(yè)學生的現狀。
我建議花一年時間,即大一就去闖去蕩、去搞事情,最后確定你是不是想穩(wěn)下來搞技術。大二開始認真學習,堅持下來你到大三就會很強了,沒錯,已經強到可以找初級工作的地步。如此,便可早入行,到大四大家一起找工作的時候就會比別人起點高一些。當然如果你在大一就一心一意就想搞技術那就更不用說了。
那么這個專業(yè)具體怎么學?我接下來的建議只適用于普通想找工作出路的人,對于胸懷鴻鵠之志的請忽略。其實一般的課程你只要過得去就行了,有的人問什么高數物理很難啊用不用學好啊,其實我大二開始混飯吃(本人是相對特殊的大學生,比較早工作),到現在好幾年了都沒用過高數和物理。但并不建議完全舍棄高數和物理,因為其他科目都與高數物理息息相關,雖然工作上用到的機會并不多,實在無力回天的話,即使不太精通也無妨。
有人問C語言用不用學好?這決定于你從業(yè)的工種,目前,我的工作偏軟件,吃飯的家伙就是C語言??梢愿孕诺母阒v,精通c語言很重要,不是熟悉,不是了解,就是精通。那么如果不喜歡軟件,你是一個硬件工程師或者單片機工程師,那么c語言就用得偏少,那么只要會語法、會編程就可以了。雖然單片機工程師也玩C語言,但相對用的比較淺薄,就是用來控制硬件,主題還是硬件,所以就相對不那么重要。
其實很多男生一開始對本專業(yè)有興趣都是因為硬件,確實動手焊焊東西,看到作品還是蠻有成就感的。有些小項目,智能尋跡小車,看看小車在跑啊或者搞個光立方燈閃啊閃的,看著特別好玩,確實比較吸引男生,這些以前本人都玩過深有體會。但是大部分人其實入門之后后面放棄了硬件搞軟件去了。
究其原因有兩方面:第一是硬件確實很難,存在瓶頸,入門容易,也很好玩,大部分人只要會焊個東西,會畫個板,造一輛會跑會叫的小車就算是入門了。但是真正從業(yè)的時候會發(fā)現以前都是玩玩具。工業(yè)級的產品都要求過硬的質量,要經得起風霜的考驗,要經得起人為的摧殘,也就是說實際上除了功能之外的東西,還得做很多措施保護,除了這個,單單就產品的功能也有嚴格的要求——精確到每個電阻、每個電流和電壓,要有過硬的理論基礎、電路分析、模電、數電、電磁波原理,可能還需要物理。畫板要考慮干擾、emc、信號完整性、紋波等,沒錯,聽起來是不是很難,所以其實一般的應屆生都不具備一定的經驗和水平,書也讀的不夠扎實,所以很難做到這些,工作中就經常犯錯,壓力很大,局限性很大,會發(fā)生很多你不可理解的事情,就會做著做著發(fā)現,啊,不是應該是這樣的電流這樣的功能嗎,怎么沒反應或者不是這樣的!?然后連查問題都不知道怎么查,然后拋給大佬。
由此引申出第二個原因,因為你一畢業(yè)能力不夠,其實很難,很少人能達到工作需求,所以企業(yè)一般不會開給你高工資,而且還要教你,還要容錯,所以剛畢業(yè)普遍看起來硬件工程師工資比軟件的低,因為軟件很多人在校期間就能學好,甚至達到社會工程師水平,所以工資自然就高了,三五年后誰也說不好,硬件確實是個需要積累的東西。所以對于有志于此的人,我還是鼓勵學硬件,別老看個待遇,而且硬件工程師比較穩(wěn),一般公司想動你都得想一想,畢竟是社會稀缺資源。
怎么學習硬件?大部分課程過得去就成,但是,你最好把電路、模電、數電都讀精通。對于已經到了大三下學期然后突然想搞技術的人,其實純硬件對你來說有點接近關門了,除非你很有毅力,因為這時候你沒時間補基本功,后面要想玩好電容、電感、運算放大器、二極管、三極管、mos管很有難度,而且這些理論課程偏枯燥。此外,對于已經在大二鋪設好了理論的人,大三就要開啟你的魔鬼積累之路,多呆實驗室,找老師,找?guī)熜种笇?,盡你所能做作品去吧,可以找?guī)妆倦娮釉O計類的書籍或者網上的論壇照著搭,盡量多地積累小電路模型,盡可能多地熟悉一些集成芯片,比如LDO之類的,特別推薦思維好的同學學習開關電源,很考硬件功底,如果你能自己搭出合格的拓撲較為復雜開關電源,那么你的純硬件已經過關,可以考慮實習了,然后這個時候要學畫板,layout那些,熟悉altium designer,俗稱AD,但是其實大企業(yè)用的不多,多數是allegro,CAD。很多公司畫板的工程師是女生,而且其實女生會更有優(yōu)勢。大學期間盡量多參加比賽,電子設計大賽和各種杯,瑞薩杯,飛思卡爾杯等等等,有沒有獲獎都行,這些就是你的經歷,你的簡歷,寫的就是這些你做過的項目,大小都行,寫的就是你參加過什么比賽,有獲獎更會在你面試的時候加上不少分。然后,還是要盡量早點實習,學校的環(huán)境和公司的差距還是很大,出來一趟你會發(fā)現強的不是一星半點。對于純硬件設計工程師,言盡于此。
單片機開發(fā)工程師和嵌入式開發(fā)工程師
說起電子專業(yè)最對口的就是這兩樣了,因為純硬件還有一個叫應用電子技術的或者是什么電子科學與技術,但是這兩個職業(yè),絕對是首選考慮電子信息工程的。
很多不了解行業(yè)的人說起嵌入式,他們就會說,“啊,我知道,就是搞單片機嘛。”甚至,連我們本專業(yè)同班同學百分之五六十的人都是這么認為,然后我內心就如火山在奔騰,有一種想拍人的沖動。
其實從廣義上的來說,單片機確實算是嵌入式的,特別是能跑系統(tǒng)的單片機,像stm32和高級一點的凌陽單片機。但是狹義上的單片機,就是泛指這一類不跑操作系統(tǒng)的單片機,也就是我們常說的MCU、stm32雖然可以跑系統(tǒng),但是大家都是裸機開發(fā),基本不會給它上系統(tǒng),所以單片機開發(fā)工程師干的,用的芯片平臺,也就是stm32這個級別的了,而嵌入式搞什么呢?嵌入式寫全叫嵌入式系統(tǒng),需要往芯片上植入高級系統(tǒng),一般是Linux,高級的就是安卓,windows都有,玩的芯片平臺都是arm9以上的芯片家族,什么飛思卡爾啊,TI的芯片啊,中國自己做的有華為海思啊,安凱啊,這類叫SoC,片上系統(tǒng)。
其實還有一些比較特殊的芯片平臺,前幾年也挺火的,比如FPGA,這個平臺的編程語言不是c,是VHDL,做并發(fā)處理,速度快,主要做儀器儀表,高精密那種。剛畢業(yè)的時候有一個師兄專門學的是這個,后面放棄了改學安卓去了,然后后來比較冷門,反正我畢業(yè)之后就沒再聽過做這個的工程師。不過我在畢業(yè)找工作那會去面過海格集團旗下的海華電子,他們好像是用這個的,海事電子,航海儀器啊,還有軍用野戰(zhàn)電源,不過后面面試沒成功,從此也就與FPGA再無交集。
個人認為能搞嵌入式硬件開發(fā)的都能完美勝任單片機開發(fā),所以嵌入式硬件開發(fā)的市場價值實際上也要比單片機開發(fā)工程師要高級的多,其實你在招聘網站上看到的單片機開發(fā)工程師一般都是門檻比較低的,真正招高級的單片機開發(fā)都會打上“嵌入式開發(fā)”的標簽。
比如我最近面的cvte,這是個行業(yè)內很出名的公司??赡苡腥岁P心面試的過程,但這里不討論,以后有時間寫寫,反正他當時招的嵌入式,但是其實是搞單片機開發(fā),雖然本人最后很幸運拿到了offer,但沒有去?;剡^頭來說下嵌入式硬件,實際上就是嵌入式驅動開發(fā)工程師,這是嵌入式業(yè)界內難度最高的一個工種之一,沒錯,嵌入式業(yè)界很廣泛,實際上嵌入式開發(fā)囊括的內容很多,由底層往上,就是嵌入式驅動開發(fā)工程師,大家都在說裝驅動。
那么驅動是個什么玩意?所謂的驅動,簡單理解就是控制硬件的那部分程序,這部分程序在單片機上直接用C語言寫就行了,只要你步驟對,沒配錯,一般都ok,但在SoC上需要套上linux內核的框架,需要考慮系統(tǒng)性能,數據處理,相對的要難上不少。所以驅動工程師就不止要會硬件,懂硬件的原理和控制方法,還對軟件能力有很高的要求,而現在軟硬兼修的工程師少之又少,身價很高,凌駕于純軟件之上,所以前面有人說我們專業(yè)啥都要會一些,這其實是一件值得慶幸和稱道的事。
實際上剛畢業(yè)的學生基本沒有辦法做驅動開發(fā)工程師,只能從其他領域入手,慢慢向底層過度,有一定工作經驗后才會被認可為合格的驅動開發(fā)工程師。嵌入式除了驅動開發(fā),還有系統(tǒng)開發(fā),系統(tǒng)架構工程師,這個也是高難度職業(yè),一般都是公司的總監(jiān)級別人物,所以,剛畢業(yè)的新同學其實百分之八九十都是搞linux應用開發(fā),即是在已經有系統(tǒng)的基礎上開發(fā)程序,就好像你在windows上開發(fā)軟件,在安卓系統(tǒng)上開發(fā)app是一個道理的,也就是大部分嵌入式軟件工程師的工作,也就是編程,用c/c++寫軟件,和一般軟件工程師其實也沒兩樣,只是你需要懂很多系統(tǒng)層面上的東西,多進程多線程編程,數據保護,數據結構,你還需要懂網絡編程,可能需要了解各種協(xié)議,還有就是嵌入式軟件工程師比一般的軟件工程師能更多地接觸到硬件層面上的東西。
話說到這,應該沒有人再以為嵌入式軟件開發(fā)是搞單片機了,實際上加了一個操作系統(tǒng),就完全不是那么一回事了。那么軟件工程師就該有軟件工程師的樣子,本人沒進行過其他種類的軟件開發(fā),不知道java、安卓、H5那些是怎樣的,但嵌入式搞的軟件,絕對不是之前在學校從頭搞的一個小程序,每個公司都會有自己對應產品的代碼倉庫。而嵌入式產品的代碼,規(guī)模都很龐大,成千上萬個C文件和各種其他文件,有很多公司校招面試會問你敲代碼的代碼量之類的,就是這個原因。所以沒有哪個人搞嵌入式是從第一行開始敲代碼的,嵌入式工作的大主題就是移植和加功能,在“祖?zhèn)鞔a”的基礎上搞事情。所以很少有嵌入式的項目是一個人搞定的,一般都是一組好幾個一起做一個東西,好幾年、好幾代程序員積累下來的玩意,最終堆疊成了公司的產品。
為了總結,稍微提及一下嵌入式的基本架構,嵌入式產品一般都包括bootloader(uboot)、linux內核、文件系統(tǒng)以及居住在文件系統(tǒng)里的各個應用程序。對于嵌入式來說,移植和可裁剪是一個很重要的主題和特點。
說說單片機
大概總結一下嵌入式開發(fā)工程師的工作內容,做底層驅動的人的工作大致是幾樣:1.搭系統(tǒng),裁剪和移植內核 2.編寫外部設備驅動 3.驅動移植 4.數據處理,為上層做應用的人提供接口和參數 5.做技術文檔,而做上層應用的人的工作則是:1.根據產品功能設計和搭建產品的軟件框架 2.移植或編寫應用程序,調用底層接口實現功能 3.根據產品需求加模塊,加功能改功能等等 4.界面操作,會涉及到QT開發(fā)或者是GUI,一些集成圖形庫等等。
另外,一個公司做上層跟做底層的工程師比例是8:2,因為驅動這種東西一旦做好,就不需要再去修改功能和更新迭代,相對穩(wěn)定,所以公司不會需要難么多人去開發(fā)和維護驅動,而只需要高薪聘請少部分人。
有些公司對你的工作會有一個明確的定位,會給你定主要負責的項目和功能,有些公司則不會,就是有什么開發(fā)需要,根據能力以及你過往的經驗來決定你在新項目里的位置,所以學的好的人,上下層不脫節(jié),軟硬件不分家。這樣,有些公司會根據你的興趣和方向給你分配和工作,其實對于有工作經驗的嵌入式求職者,一般技術面時會問你的規(guī)劃和發(fā)展方向。
很多人其實一開始對這個專業(yè)感興趣都是因為看過一些單片機的項目覺得有趣,學了一陣子,然后后面又聽說嵌入式工資待遇很好,就轉學嵌入式。
其實這里有個誤區(qū)就是還是覺得嵌入式是搞類似單片機的東西,以為一入門就能搞驅動,搞創(chuàng)造,當年我一開始也是這么想的。但是要開始學那會師兄問我,你知道嵌入式是干嘛的嗎?你知道嵌入式怎么學好嗎?你知道嵌入式學出來能干嘛嗎?我一臉懵。
第一個問題樓上說的很清楚了,接下來講第二個問題,因為我是正兒八經的嵌入式工程師從業(yè),所以這塊我了解的多,就多說一些。其實學嵌入式的話基本就是先從單片機開發(fā)工程師的路線來,一般來說,學校是會開設單片機一類的課程的,但這里有兩個弊端,一是單片機課程開的時間問題,很多學校都是大三才開課,那個時候黃花菜都涼了,二是不少學校教單片機死扣微機原理,甚至還用匯編教,教學還跟實際脫離,不動手。建議是這樣的,大一或者大二找淺顯易懂的單片機書籍去讀,推薦郭天祥寫的那本書,然后買一塊開發(fā)板去玩,這個東西,會玩上癮的,不騙你。
當你點一點流水燈,搞一搞串口通信,再弄一塊液晶顯示屏1602刷點什么圖案,會獲得很大的成就感,反正我是這樣的。而且單片機這個東西的入門很簡單,你只要有點微薄的c語言基礎就行了,不需要懂什么微機原理和匯編語言這些古董!我的同學大一就在玩了,那時都沒有c語言的課程。實際上,我只花了一個月就學完了51單片機,我覺得一個月算長了,因為如果一兩個月下來你沒學的七七八八,說明你對這個東西沒興趣,或者真的不適合搞技術,至少不是很適合單片機或者嵌入式,可以考慮想下其他道路了。單片機說白了就是學引腳,配寄存器,當你學會51單片機之后其實你就可以玩很多單片機的小項目了,花點小錢買點材料找些去搭一搭,會獲得一種造物主的喜悅感,至于項目,大把是,書籍,或者網上找很多。簡單的有那些小車,光立方,計算器,交通燈……還有需要涉及到一些簡單的傳感器,比如什么紅外對管啊,超聲波測距啊,霍爾元件啊。其實51單片機沒多少資源可用,算是比較初級的芯片,后續(xù)可以考慮變種的八位單片機,比如stm8,stc,中穎,瑞薩那些,引腳復用關系更復雜,資源更豐富一些,可以涉及到adc,i2c,spi這些東西,需要配置寄存器,配時鐘,配中斷,或者有庫函數可以給你學習和調用,這些網上的論壇也一大堆,然后作為進階,最后學習stm32,算是一個典型而且被廣泛使用的高級單片機,已經可以初步跑系統(tǒng),諸如ucos一類的小型系統(tǒng),功能也是應有盡有,把stm32玩熟的話基本就能吃飯的了。至于stm32的學習資料非常多,教學視頻什么的都有,而且玩stm32的人非常多,你不會是孤獨的,遇到有什么問題解決不了,上網一搜一堆答案。
單片機的基本說完了,反正你最終的目標是掌握全部的外設,熟悉UART、SPI、I2C、USB總線,有很多人用過,但是都是一知半解,把這些真正搞懂很重要,因為面試的時候面試官最喜歡讓你說一下這些東西怎么配,這些東西的過程,或者對比下這幾個玩意,厲害一點的就問你這些東西出了問題該怎么查,思路有哪些,答不出來你就再見。
單片機沒多少內容,所以各位少年基礎打好,別太自信,有多少同學不知道UART分為好幾種類型,比如RS232和和RS485兩種不同的協(xié)議。然后最后厲害點的再玩下觸摸屏和dma等等高級的操作,然后做幾個作品就可以準備出道了,單片機作品不低于5個,最好有十個左右,復雜度高的至少要有一個,什么叫復雜度高呢,就是用上我上面說的總線兩種以上加上些吊炸天的外設,比如電機,flash,攝像頭,屏幕等等,OK,單片機的我就言盡于此了,如果你想往嵌入式的驅動工程師方向發(fā)展,也得這么玩,但是不用玩的賊溜。接下來我來說說嵌入式怎么玩,應該很多人關心這個問題,因為嵌入式的學習對于畢業(yè)生非常不友好,而且條件非常有限,可以說你在學校很難有條件掌握。
首先第一點,其實很多學校的電子信息工程都沒有開設嵌入式的課程,有些學校可能開設了嵌入式的課程,但其實教的是stm32,比如我的學校就是這樣,我是二本a的學校,但當時我們學院根本就沒有會嵌入式的老師,可笑到就連帶我的指導老師都叫我放棄學嵌入式去搞php(因為當時大熱門),說什么工資高,還說什么linux連他都學不會我學去干什么。,我有我學的理由,這里暫時不討論,后面有時間寫寫。反正事實證明我就是嵌入式開發(fā)出道了,最后啪啪打了老師的臉,畢業(yè)設計那會我用嵌入式做了個東西,在座的老師都不會,給了個全班最高分。當然啦,對于那些學校好,有開設真正嵌入式課程的同學,你們要懂得珍惜,因為帶你學嵌入式的老師和師兄就是你最寶貴的資源,是你道路上的一盞明燈。
其實linux也沒有那么難,我的導師會那么說的問題在于我要說的第二點,在我看來,嵌入式就目前來說沒有系統(tǒng)完善的學習資料,因為嵌入式這個東西涉及的面太廣,根據各行各業(yè)的不同,會涉及到硬件、軟件、網絡、操作系統(tǒng)等,所以書籍要么就是講的很泛,軟件硬件都講一些,我記得韋東山寫的有一本灰色的書就是這樣,啥都涉及一點,但很多沒講明白,而且點太多,記不住,看完云里霧里的,還有好幾本書講嵌入式的也這樣。
其實嵌入式的詳細資料大部分都是分開的,很零散,軟件吧,比如單單講linux的,就有好幾本,什么unix環(huán)境高級編程,unix網絡編程,深入理解linux內核,Linux設備驅動開發(fā),每本都是你高數書上下兩冊加起來那么厚,想看完夠你喝一壺的。再者硬件吧,其實壓根就沒有必要,因為我們開發(fā)所用的芯片一般都會有芯片使用手冊,供應商寫的很全面詳細,比如華為海思有一款芯片就寫了九百多頁,包括三星的s5pv210和TI的數字信號處理芯片,都有詳細的數據手冊,還都是英文的,我記得我們上DSP那會,用的課本就是芯片手冊直譯過來的。手冊上什么都有,開發(fā)商還附帶給你提供軟件支持包,都有這么權威的東西了,還有誰去出書呢。所以嵌入式的學習資料要么不全面,要么零散學不完,對于初學者極不友好,就此又刷刷刷打壓一大片同學放棄。
第三點,嵌入式的demo很難找,我想學嵌入式,那我總該找個嵌入式產品的代碼來看看吧,對不起,這是個很難的事情。我上面說過了,嵌入式的代碼大部分都是超大規(guī)模工程,那是企業(yè)雇了好幾代程序員花了好多錢積累下來的東西,是一個企業(yè)的命脈,那是商業(yè)機密來的,怎么可能隨隨便便就給你找到呢?其實就算你是本公司的員工,在沒得到公司認可之前也是看不到全部的代碼的,公司一般都會有代碼版本管理工具,比如git、accurev,一開始不會把全部代碼權限開放給你,對于核心的代碼,都編譯成靜態(tài)庫或者動態(tài)庫,在最后編譯固件的時候鏈接進去就行了,你壓根看不到源碼。上面有人說想把C學精通,其實找一份嵌入式的代碼去磨一磨就行了,但是很難找,網上只能找到一些嵌入式產品的“零件”,比如各種glib庫,協(xié)議庫,各種驅動源碼,但是很多同學沒概念,不懂找,于是GG。綜上所述,這三座大山壓死了一大片來學嵌入式的人。
說說驅動
驅動實際上就是裸機開發(fā)的原理再套上Linux的框架,實際上,大部分,或者說常用的驅動,都是那些總線,UART,SPI,I2C,CAN,USB等最是常用,所以學裸機或者學單片機的時候,一定要把這些總線的工作原理搞清楚,實際上外設有很多種,但很多時候SoC跟外設交互的渠道就是通過總線來實現的,所以驅動實際上最難的那部分就是要調通總線,舉個例子,比如現在有個觸摸屏或者電源管理芯片要做驅動,然后用的是I2C,那么你的第一步肯定是寫個驅動,調通I2C,能用I2C讀取到觸摸屏控制器或者電源管理芯片里的寄存器的值,然后才是對它們進行配置,至于配置,實際上也是基于總線去配。如果硬件原理你已經懂了,那么,最重要的,實際上就是學習Linux底下的框架,也就是驅動模型。
驅動模型有很多種,包括字符設備模型,網絡設備塊設備,混合設備,平臺驅動模型等等,實際上也就是Linux底下的一個框架,就是說人家linux已經幫你設計好了,你只要調用linux下現成的函數接口一步一步來就行,往框架里面注冊東西,填回調,填參數,這里又說到了兩個東西,“注冊”和“回調”,沒實際去做過嵌入式工作的人可能很難理解好這兩個東西,所以學了半天都不知道驅動在搞什么,回調,是大規(guī)模的代碼工程里最常見的東西之一,特別是一個東西好幾個人做的時候,比如A在做一個控燈的項目,有界面啥的一整套都全,然后在這里面A只會調上層的界面,但他不會調流水燈,而B他知道怎么控制流水燈,但他又不做上層,那么他就搞了一大堆功能函數,比如開燈,關燈,每個功能封成一個函數,然后A設計了一個結構體,里頭設計好了開燈關燈函數的接口形式,即結構體里提供了一個函數指針,而B只負責用他做的那些功能函數給這些指針賦值,這樣A雖然不會調燈,但他知道那個結構體里有控燈的函數,他要控燈時直接調那個函數指針就行了,在這個過程里那些“函數指針”以及指向的函數就是回調,然后B所做的事情就叫“注冊回調”。
可能我這么說還不清楚,那從驅動的實例來看,好,就說字符設備,比如串口,你做好驅動并且成功裝進去linux之后,在/dev目錄下會有設備名xxx,這個xxx是你做驅動的時候填進去的,當你用系統(tǒng)調用open,linux就會初始化串口,你調用read的時候就會就會讀串口,write的時候就會通過串口發(fā)數據,但是設計linux的人比你早生那么多年,他哪知道你調這些鬼東西的時候你要收發(fā)串口。但,他就是知道,你open的時候,我就調驅動里某某結構體a的某個成員a.open,read的時候就調另一個成員a.read,a.open和a.read都是個函數指針,他不知道這個函數指針后來人都拿他來干嘛,但他就是知道你調open的時候要執(zhí)行a.open這個函數的功能,至于這個功能是啥,我不管,那是后面寫驅動的人干的,這個就是回調的作用。
注冊,即是你往linux設計者提供的結構體里填東西,包括回調,包括上面說的串口的名字,即填進去給linux知道,這個過程就叫注冊,注冊還有一個深層次的含義,實際上你把結構體填好后,linux會把這些設備的結構體全部串成鏈表,統(tǒng)一管理,linux調用驅動里的回調實際上是個很復雜的過程,這里就不展開說了,有興趣的人再去自己研究。好,回到上面說的驅動模型,寫驅動就是上面B同學干的事,你做好一大堆功能函數,然后填結構體,注冊設備,注冊驅動,注冊匹配函數,注冊處理函數等等,當然啦,簡單說就是這樣,這只是個概貌,論細節(jié)還是能很復雜的。
回調還有一種好處,就是移植性好,非常符合嵌入式的主題,因為你在這個平臺注冊的是這個回調,換個平臺,寄存器什么的都變了,好,我只需要換一下我注冊的回調就行了,我驅動的總框架不用變啊,這個,就是我們經常說的驅動移植了,簡單理解就是如此,當然,實際上沒有這么好做。至于那些注冊什么的,內核那邊會有相對應的結構體和注冊接口,linux內核基于各種外設,其實都有處理這些東西的現成的框架核心,比如I2C核心,usb核心,linux input子系統(tǒng)等等,實際上做驅動的除了這些,還需要了解很多內核的東西,內核的工作隊列,內核線程,內核休眠喚醒,除了硬件中斷注冊還有tasklet軟中斷等等,因為我這篇不是技術貼,目的旨在說明方向,所以就不在這里討論,只要你學嵌入式驅動,就會涉及到我上面講的東西。實際上很多東西你在學校學不到,書本也講的很片面,分不清側重點,所以還是要找實例,或者直接去工作中實戰(zhàn),如果你們已經學完了驅動的基礎理論,那可以去github或者哪里找?guī)讉€驅動去看看,比如wifi驅動,觸摸屏驅動等等,雖然我打包票你們一定看不懂就是了,因為即使理論學的再好,這些驅動都是要對應上芯片手冊,開發(fā)文檔,并且具有一定行業(yè)知識才能用,不然你甚至都不知道人家寫的變量是什么意思,比如wifi驅動你肯定還要懂802.11無線網絡的,至少要知道wifi的行業(yè)知識,ap,sta代表的啥意思,人家變量寫個adapt_obj,你也不知道是啥。當然,如果你在學校就不必顧慮那么多啦,應屆生不用懂這些,學了基礎理論,會點皮毛就能去找工作了。
嵌入式工程師出路之我之見
學嵌入式的主要有兩個專業(yè)的人,一個就是我們電子信息工程,另一個是計算機,我們一般從下往上學,人家計算機的從上往下學,但是相信我,其實我們專業(yè)好一點,因為你學過硬件要過度軟件,相對簡單,但是你要是純軟沒接觸過硬件,那么你想邁這個坎可就難了。我說這話還有另一個意思,就是你學嵌入式也可以不必懂硬件只會軟件,因為應用面廣一點,社會上招的基本都是嵌入式軟件開發(fā)工程師。
以下這些都只是我的個人想法。首先,那些學校有開設相應的嵌入式系統(tǒng)的課程的同志,請抱緊你們學校的大腿,跟老師搞好關系,老師活了那么多年比你我經驗豐富,肯定會指導你怎么學,我說的不是課上認真聽講,而是課后趕緊去拜師,一般大學的老師都會擁有自己的實驗室?guī)W生一類的,沒有的話課余帶帶學生在老師那也是小菜一碟,而且有積累的學校,你肯定有很多強大的師兄師姐,有很多前輩可以抱大腿,師兄師姐很熱心,人很好,會無條件幫你的,再不然,你說不定有學霸同學也在學這個,和他一道組個隊,一起蕩起雙槳,他肯定有屬于他的資源,不然不會冒然學這個,學嵌入式有風險,分分鐘學不成的玩意。而且你在學嵌入式的過程中會遇到很多離奇的問題,很多很多,肯定會有,沒有人帶著很容易進坑,很容易放棄。還有一個好處,就好像一個人考研沒辦法成功,兩個人可以,因為你需要有一個群體,有一個堅持下去的動力和目標,有一個互相鼓勵的伙伴……也有可能你們一起進坑死了。
如果你跟我一樣是孤兒,然后有一顆想要堅持下去的心,那唯一的出路就是盡快走出學校,前面我說過了,我們學院沒有相應的資源,我有師兄學這個,但是很少,我只認得三個,可能你們會覺得我寫這么多看起來很強大很厲害離你們很遙遠脫離實際一類的,但,其實我就是大三才開始學習的嵌入式,沒錯,在我開始學的時候,那三師兄里的倆已經實習去了,見不著面,聊不著,還有一個師兄學成在工作的,但是他不懂嵌入式硬件,他搞的主要是QT,界面開發(fā),所以我是真真正正的孤兒,所以要有信心,連我這種**渣渣都可以,哈哈哈哈。好,回到正題,我們的目標是出去工作,那么嵌入式達到出去工作的條件是怎樣的呢?基本的理論你一定要會,項目你一定要有。但是人家企業(yè)也不是**,都知道搞嵌入式的應屆生都是渣渣,因為你想真正會只有去企業(yè)里學公司的嵌入式代碼,所以公司來學校招人,對應屆生的要求不會特別高,但,也是很難,所有嵌入式的招聘,基本離不開筆試,企業(yè)會關注你的項目經驗,但是你做的東西在他們看來是玩具,能用來體現你大學的刻苦用功以及對知識的掌握度,但不保險,他們還要考你的基礎,考你的智商,所以百分之九十九會有筆試題,本人面過很多企業(yè),但是只有cvte和海格比較奇葩,沒有筆試題,但不是不用,而且比較變態(tài),會直接把筆試題難度的問題在面試過程問出來,看你的反應。所以基礎打好很重要,筆試的話基本就是C語言的題還有l(wèi)inux的東西,多進程多線程,考你的編程能力,考你書讀的扎不扎實,有興趣,對自己C語言能力自信的吧友可以百度些筆試題做一做就知道自己幾斤幾兩了,反正你對指針和鏈表一定要絕對熟悉。
學嵌入式的第一要務不是之前我說的那么多的硬件能力,而是你的C語言功底,所以如果你學了一陣子單片機而且具有一定功底然后想轉嵌入式,那么非常好,你只要花點時間再補下C語言,如果你覺得你已經學完了,那么上網百度些C語言的小項目做上幾個,沒問題的話你可以開始刷C語言的筆試題了,這些網上都找得到。有很多學校教的都是譚浩強版本的C語言,這里我推薦下華章教育出的那本C語言,那是創(chuàng)造C這門語言的作者寫的,薄薄的,但有難度,適合進階,如果你覺得智商很強大不夠玩,好你買一下華章教育同系列的另一本書,數據結構,看看頭發(fā)能不能掉光,當然,這些不是必要條件,只是說你有能力有興趣有時間想訓練。嗯,這個就是統(tǒng)一回復之前以及以后想問我怎么提高C語言能力的同學了
先說說有關Linux的,說實在的,大多數人在大學期間沒辦法把這個學的多好,至少,本專業(yè)的相比于計算機系的算是輸在了起跑線,看看你學校夠不夠好,有沒有操作系統(tǒng)這門課,非一流學校的電子信息工程是不會有的。那么你就只能靠自學,如果你大一大二然后很想搞技術,并已經確立了從嵌入式或者linux的方向出頭,那么你很有時間,你可以買買我上面說的那些巨厚的書去研讀一下,講的很好很全面,以前雙十一的時候當當打半折,本人我買了十幾斤。
如果你大三大四,那么你最好是找一些資料先全面地了解下概貌,包括linux是個什么東西,包括什么部分,系統(tǒng)調用,多進程,多線程編程,其實也就是一系列l(wèi)inux的posix接口,說的通俗一點就是人家Linux給了你一大堆函數,你去學下這些函數怎么用,跟學安卓那些一樣一樣的。特別是信號,信號量,管道,消息隊列,socket這些進程間通信的理論,還要自己編一編程序去用一用,線程互斥,線程同步,線程池這些等等,找一些講嵌入式的書就會有講,或者找些視頻資料去看,比如國嵌的,韋東山的,鳥叔的,但是這些全部都要錢,幾百塊還是要出的,我之前是看的國嵌,買了它講嵌入式的全套資料,五百多塊,客觀地評價,他講的還行,就是順序不對,先講的硬件,再講linux,然后它驅動那塊講的也不太行,初學者看完應該是分不清重點的,反正我看完都沒明白嵌入式能干嘛,企業(yè)的嵌入式怎么開發(fā),以及嵌入式能做什么,一臉懵逼,但是看看還是不錯的,因為我覺得都這樣。其實關于這部分我也比較無奈,韋東山的書我也觀摩了,還看了好幾本其他的書,但還是沒弄懂前面那三個關鍵性問題。前面說了我學嵌入式的道路是孤獨的,雖然我看完一知半解,但后面迅速就業(yè)彌補了,至于為啥我為啥能迅速就業(yè),是另一個故事,后面再討論。我的師兄有看鳥叔和韋東山的,我的同事有看書自習的,所以我覺得雖然懵懵懂懂,但有個概貌就OK的。
Linux的理論和編程簡單其實也挺簡單的,就是靠背就成了,沒有其它花花腸子。想搭架構和設計程序以及代碼嚴謹性等,那還是得去看企業(yè)的代碼,還是得啃那些厚厚的書。還是大概說說嵌入式的開發(fā)環(huán)境吧,這個學嵌入式一定會學到,但我可以說說公司里都用的啥。你要有個虛擬機,裝的可以是vmware或者virtual box,前面比較耗電腦內存,相對較卡,但界面友好,工具齊全。有了虛擬機你要裝Linux,Ubuntu,debian,紅帽都行,但紅帽偏向于網絡運維方面,從業(yè)這么久,大部分搞嵌入式的都用Ubuntu。然后你要熟悉linux的指令和shell腳本語言,這個不用我說了,必備的,一般在企業(yè)里開發(fā)都會需要你配好幾個東西,samba、tftp、ssh、git。
電腦裝上Xshell或者secureCRT,用來看設備串口控制臺,與設備交互??创a用的工具是source insight,看腳本一般用的notepad++,還有文本比較工具。然后關于代碼編譯,呵呵,嵌入式不是單片機,不會有keil啊IAR啊這些集成開發(fā)環(huán)境的,也就是說你自己寫的代碼你要自己寫Makefile去編譯,也有很多用cmake的,Makefile的語言你不用很熟,會簡單的就行,像企業(yè)編譯那么大規(guī)模的Makefile不會叫你寫的,你也寫不出來,但是有時加個模塊什么的需要改動,所以你還是要會一些基本的。還有要熟悉編譯選項,-l,-L,-I(大寫i)等等。我說這些如果你還沒學嵌入式,可能看不懂,但是如果學過一些再來看就會很清晰了。我不是培訓機構,不可能教那么龐大的東西,我寫這個也只是說一些道理、經驗,給迷茫的人指個方向罷了。
行業(yè)大背景和求職方向
學嵌入式和硬件門檻很高,嵌入式門檻最高,需要你懂N種東西,然后硬件入門容易,學好最難,那為啥不找個純軟件去學?學個java,學個php,或者當個安卓開發(fā)工程師,ios開發(fā)工程師多好。先不說我為啥最后選擇了嵌入式,我的故事我后面會講,這里不討論。我剛剛提出的東西確實是個問題,而且是個已經導致了社會現象的問題,就拿我們班來說吧,窺一斑可知全豹,我一個二本a線學校,專業(yè)兩個班,每個班約五十人,全專業(yè)就我一個人是搞嵌入式的,嗯,還有兩個硬件工程師,一個單片機開發(fā)工程師(其實這個人也是嵌入式的,不過后來給南方集團忽悠去搞mcu了,就是我前面說的打的嵌入式的標簽實際上搞單片機),專業(yè)對口率百分之四,哈哈哈,所以說如果你們最后調劑啊,或者覺得選錯專業(yè)啊,沒關系,因為你選專業(yè)只是決定了你的大學四年以及多了選擇可以從業(yè)本專業(yè)的東西而且會比較有優(yōu)勢而已,你如果不打算搞本專業(yè)的東西,完全不是問題,活生生的樣本,如果你擔心是不是轉行就不行了沒優(yōu)勢,那我告訴你,你要相信自己,雖然專業(yè)對口率百分之四,但是畢業(yè)一年大家目前的平均待遇是7k+。嗯,雖然不對口,但是搞技術的還是很多的,我們班有一半以上,學的都是純軟件方向,java開發(fā)工程師啊,安卓開發(fā)工程師啊,php開發(fā)工程師啊,ios開發(fā)工程師啊,游戲開發(fā)啊。雜七雜八的也很多,比如維達紙巾搞銷售啊,在廣州銀行數錢啊,或者去阿拉伯帶團隊做跨國貿易,或者黃埔船廠造船,只有你想不到,沒有不可能。
其實還有各種各樣有趣的,比如還有去西藏支援的,還有去聯通維護光纖電纜現場技術支持一類的,當村官的也有,女生我們班七個,有去搞游戲策劃的,有去搞html5開發(fā)的,有去電信的,有自己在做微商的。我覺得我們班不是個個例,我們學校也不會是個個例,應該各大高校這種情況很普遍,不信去問一下你們師兄師姐。你可能會問我為啥會知道這么多,因為我呢,其實不是你們想的那樣,別看我前面說的頭頭是道會的東西很多一副技術宅工科男的樣子,實際上,我是個很outgoing的人,看我能吹這么多就知道了,我的交際能力和人脈資源其實好的很,不想搞技術也完全沒問題。
現實其實很殘酷,很多人最后選擇了不搞技術,很多人選擇搞技術,但是卻是純軟件的方向,因為確實社會是這樣的,學習難度是純硬件>嵌入式>純軟件,收入卻是反過來的,吃力不討好的東西很多人不會去干,特別是那些本身沒有情懷沒有能力的人。
說實話,硬件我們班雖然只有兩個,但是有一個確實學的很可以,工資水平在水線以上,還有一個就很不行了,而且就我所干的公司里,硬件工程師的工資確實比軟件同比稍低一些。我前面分析過原因了,我那個水線以上的同學就是最好的證明,當然啦,硬件確實有難度,但只要你有興趣,有心認真學,我覺得都是一樣的,那些做不到的只不過不感興趣了中途放棄掉,要不就是壓根沒有好好學習。
世界上只有兩種人,一種是成功的,還有一種是沒堅持到成功的。那么說說嵌入式的,嵌入式的其實也是有很多硬件成分在里面,門檻還高,我前面已經分析過了,嵌入式在學校學不好,在學校學的再好,出來也是菜雞,這一點企業(yè)也是知道的,所以嵌入式是個低起點的職業(yè),就是一開始普遍工資不高,很多企業(yè)看重的是你的學習能力,所以嵌入式必然有筆試,而且招進去之后企業(yè)還得花很長時間培訓你,用工作鍛煉你,這個過程真的很長,一個畢業(yè)生要成長為一個對企業(yè)真正有作用的成熟工,至少要花三到六個月不等的時間,但是嵌入式聽說很多人說做嵌入式待遇很好啦,很吃香啦,而且你去各大招聘網站上查啦,嵌入式都是五位數起叫的,招五位數以下的還少呢,咦,這又是啥回事嘞。原因嘛,也很顯而易見啦,因為學的人本身少,學的人里最后還有學不成找不到工作的,所以社會上成熟的嵌入式工程師是數量有限的,那么根據市場原理,物以稀為貴,所以當你成長為一個成熟的嵌入式工程師的時候,就會發(fā)現待遇蹭蹭地漲。
其實很多學嵌入式的人都知道這個行情,包括招嵌入式的企業(yè)更是知道,所以他們都知道花時間和精力把你培養(yǎng)會時你就直接跑了,那我還給你那么高工資干嘛,反正你是短時工嘛,雖然一般你進企業(yè)后每年都會有調薪,但是其實漲幅不會太大,也就是五百一千這樣,所以肯定不如跳槽來的快。基于這樣的行情,除非公司真覺得你是個人才,在你要走時才會提出比較高的待遇留你,而一開始都是開低待遇的,5~6k左右,不會再怎么高了,當然我說的都是一般企業(yè)啦,你要是跟我說什么華為啊,cvte啊,那我沒法跟你解釋,反正只要你進的去這么牛逼的企業(yè)自然是天有多高,手有多騷,能拿多少拿多少。有人說你不是拿了cvte的offer嗎,我不是校招拿的,我是工作一年后確實有實力了才做得到,如果你是在學校校招嵌入式就給cvte招走了,那你確實是大神
我最后沒選擇硬件,還有選擇嵌入式,都沒有考慮過工資待遇這個問題,這點要先澄清一下,因為我算不上窮,有自己的追求,而且雖然以上說待遇會有差別,有高有低,但實際上剛畢業(yè)除去個別優(yōu)秀的人,其他人待遇就算有差別也不會太多,也就一兩千,算不得啥,如果你要說工資收入代表了你的能力,那么其實這個也不算太準,特別是剛畢業(yè)那會,但是你再過個三五年回頭看看你那幫同學,雖然說出來特別中二,但三十年河東,三十年河西,莫欺少年窮。
選擇行業(yè)的時候一定不要優(yōu)先從待遇這些去考慮,先問問你自己喜歡什么,如果有人說我就喜歡賺錢啊,那你應該去做生意,經商搞貿易,創(chuàng)業(yè),而不是選擇去搞技術,本人我有個高中同學,大學不一個學校,他學校也是一般,搞國際貿易的,說起來也算是銷售,畢業(yè)一年,有車,他的收入單每個月扣掉的稅就快趕上我之前的工資了,另外他不是富二代,沒關系,也是靠自己。如果你本身對技術有興趣,那也應該遵從本心,而不必執(zhí)著于太多待遇方面的,因為差別都不太大。技術路相對生活會比較枯燥,如果你本身不喜歡這一行,那就是個煎熬。
而且一分錢一分貨,你拿的工資越高,你要承擔的責任越重,要干的活也越多,公司可能會把很多很難的任務給你做,然后又趕時間,壓力會特別大,不是開玩笑的,所以高工資也常常意味著高壓高強度,上面有人問這行是不是青春飯,我認為是的,因為搞技術就是靠智商,而且上班挺多公司還是挺累的,你工資高不可能拿錢不干活,所以也是變相“搬磚”,只不過別人付出的是體力,你付出的是腦力,本人我體驗過不停加班天天九點十點,一個月只休息兩天的工作節(jié)奏,我相信那不會是你想經歷的,當然,也不是全部的都這么累,我現在的公司就還好,至少目前是的。
所以后面工資如果拿的高,有可能工作任務,壓力等等會對身心造成打擊,我以前公司的總監(jiān),年過三十然后脾氣暴躁怪異,至今未娶,多多少少和工作有點關系。而人一旦上了年紀,腦力下降,身體各方面能力下降,扛這些,確實有可能熬不住,所以青春飯一說也非空穴來風。當然啦,這些也很看公司的,所以進一個好公司比你拿高工資更重要。
其實我說了那么多嵌入式的,這些特征也同樣適用于硬件,不過更極端而已,純硬件起點更低,然后需要積累的時間更長,一般可能兩到三年左右才出真知,不過這些都有一個特征,就是特別穩(wěn),后面我會再說下這點。先分析下天下大勢,其實每隔幾年,都會有某些技術突然火起來了,然后霸占市場,待遇高,需求量大,從前幾年看是這樣,物聯網概念剛起來的時候,嵌入式和FPGA火了一把,互聯網起來的時候,安卓應用開發(fā)和ios應用開發(fā)又火了一把,大數據時代來的時候,java,php又是大火,本人畢業(yè)在2017年那時候就是java和安卓應用開發(fā)很熱門,很多人都在學,那時候小程序的概念一來,html5前端開發(fā)也火起來了。但是從17年開始,ios應用開發(fā)已經處于比較低迷了,前幾年學ios的多,市場比較飽和,后面市場需求量減少,對工程師的能力要求也就相應高了,于是很多人找不到工作,現在這個現狀在18年也同樣適用于安卓和java。對于那些還沒有技術定型和沒有喜好方向的人,是要提起嗅覺,敏銳察覺并做出正確選擇的。
當然,只要技術功底過硬,不需要考慮這些東西,但是對于那些技術學著玩,準備進去it業(yè)混吃等死的人,是要這么考慮的,我相信貼吧里肯定有這種人,還不少。這兩年因為AI,機器視覺和5G又火起來一個python,這個是可以考慮的技術之一。今年火的概念有哪些呢,AI,5G,云計算,大數據,區(qū)塊鏈。嵌入式跟頭三個都能扯得上關系,時代的發(fā)展方向只要是向著智能化和自動化的主題去發(fā)展的,那么嵌入式就不會落伍,而且嵌入式所牽扯的技術甚廣,你只要學的好,身子稍微一偏,就能換到其他行去了,就比如我現在嚴格來講就不算是搞嵌入式開發(fā),只是我會的linux和軟件開發(fā)這一塊,再加上網絡方面的知識,剛好夠我加入另一個新行業(yè),5G和網絡虛擬化。其實還有一種嵌入式學的是docker容器那些,那么又可以往虛擬化和云計算這塊去靠。
上面我這么一說,還會有人覺得自己的專業(yè)是“學的雜而不精”嗎?其實錯的人在自己而不是專業(yè),如果你最后學藝不精,那么一事難成,而學的好,萬般通吃,包括現在嵌入式硬件方向,安卓驅動工程師也是嚴重市場稀缺,沒錯,雖然我一直在說linux系統(tǒng),但其實嵌入式用的最廣的不是嵌入linux,而是安卓喲,那些市場上裝了安卓系統(tǒng)的數字電視,那些地鐵口給你買票還能掃碼付款的售票機,那些銀行里給你自助服務自助辦卡辦理業(yè)務的機器,都是嵌入了安卓系統(tǒng)的嵌入式產品,包括你們拿在手上的智能手機,背后可算是一群嵌入式大佬在搞事情。
所以嵌入式是個超級長青的主題,需求量穩(wěn)定,而且往下只增不減,但是嵌入式又對從業(yè)人員的要求很高,特別是當你不是校招而是社招的時候,企業(yè)就不是招你過來培養(yǎng),而是找你過來干活的了,你們可以去獵聘啊,拉勾網,智聯招聘,前程無憂等等看看嵌入式的招聘要求以及工資待遇,那都是掛在牌面上的東西,待遇就那樣,應該能滿足大多數人心目中的要求,但是你們有沒有看下要求呢?從業(yè)經驗那是肯定要求的,一年到三年不等,特別是驅動工程師,沒有三年以上工作經驗那都沒人要你,然后你再看看它的技術要求,你是不是會了嘞?比如最簡單的我上面說的搞過并且熟悉串口,I2C、SPI、CAN總線驅動中的一種或者兩種。有些招聘要求會寫的很詳細,有些寫的很簡單,咋一看你好像都符合要求了,但你投過去可能簡歷都沒過,過了人家才在現場用嚴格的筆試和面試推敲你的能力。
最近一次我找工作,其實已經錯過了秋招,有點晚,當時我以為可能會很難找,很怕招聘需求慢慢變少了,因為本人好幾個同事先后離職都是在今年九月十月左右找到不錯的工作。我只在獵聘網上掛了我的簡歷,一開始投了三四家,都像石沉大海,但后來我發(fā)現我的擔心是多余的,從某個時間點開始我開始接到好多面試通知,排不完,整整排了兩個星期滿滿的(獵聘網有個功能,你不用投簡歷,那些公司的hr看到你的簡歷會來主動找你,這里面其實很多不是我投的,包括我現在所在的公司),我面了六家以后找到好的,就沒再去后面的了,后來有個獵頭告訴我,其實這些大公司招聘嵌入式的需求一直都有,一直都要人,只是要求都很高,要你會干活,待遇也比較高,但如果沒有找到他們心目中符合要求的人,這個崗位就會一直空著。我說這個是想說并不是說你學了嵌入式,就能找到工作,并不意味著你跳了槽,就能換到好工作,所以最重要還是你得學的好。
事實上我不建議像我這樣畢業(yè)一年就跳槽走,我跳槽走不是因為我嫌待遇低,而是因為實在熬不住了以及我有我自己的理由,這個后面有機會再說。搞技術的,最好還是在一個地方窩上兩到三年再跳,不然很危險,高不成低不就。特別是硬件和嵌入式,如果不是因為我的項目經驗確實多,估計要吃癟。因為這兩個很吃行業(yè),比如你直接是搞醫(yī)療電子的,然后突然要換去汽車導航的或者安防行業(yè)的,那其實蠻困難的,一般這種跳槽都是同行業(yè)互跳,比如從搞醫(yī)療電子的公司a跳去同樣是搞醫(yī)療電子的公司b,因為你熟悉原本這一行的行業(yè)知識,你一來就能干活了,所以企業(yè)愿意開高薪給你。如果你突然想跑去安防,那你懂ipc怎么調圖像嗎?你懂nvr怎么錄像嗎?你懂流媒體怎么傳輸數據和優(yōu)化方案嗎?h264和h265壓縮編碼算法和視頻傳輸協(xié)議onvif你又懂不懂嘞?我相信如果你只是搞醫(yī)療電子的話你肯定不會知道這些,ok,那你過去人家公司就是一個高級的畢業(yè)生?。?/span>
你還是得來學習,我還是得教你,如果你還想要高工資,那么企業(yè)就不會要你了,因為你沒達到從業(yè)要求,這也是為啥我說嵌入式穩(wěn)得一匹的原因,因為你走了對公司是一個大損失,他要去招一個同行業(yè)的成熟的工程師又很難,要招一個別的行業(yè)的工程師又得不償失,招一個應屆生又得培養(yǎng)好久,如果在做緊急項目搶占市場,呵呵呵,黃花菜都涼了,而且對于成熟的工程師,一般都是一個人負責一個項目,一個功能,你走了,你留下的功能別人要接手還不是太容易,嵌入式的代碼要是寫的不好,那跟天書一樣,你走了,你的代碼也就成了斷代的“祖?zhèn)鞔a”,別人要接你這個燙手的山芋,欲哭無淚,如果你以后從事嵌入式,你就會明白接別人的任務,那是一個天大的鍋。綜上所述,很穩(wěn)很穩(wěn),只要你不想走,除非公司要倒了或者你真的傷天害理不仁不義,不然不會叫你走。我走那會我的組長應該是各種心酸的,我跟他說了一句“梁園雖好,終不是久留之地”,他大概也就知道留不住我。
換行如隔山,這是我這次跳槽最大的體會,不過其實樓主我又是比較幸運,因為之前做的項目偏底層和通用類別,所以我完全換了個行業(yè),哈哈哈,我前前后后在三個行業(yè)內混過,樓宇自動化,懶得解釋了,嗯,可以認為儀器儀表類吧,另一個是安防行業(yè),還有一個是移動通信網絡行業(yè),公司嘛,一共干過四個,公司規(guī)模從小換到大,從只有幾個人的公司換到現在的跨國公司。
求職的時候的選擇
其實我也就想說說兩個問題而已,一個是畢業(yè)的時候選擇社招還是校招,另一個是畢業(yè)的時候是選擇大公司還是選擇小公司。
先說說第一個,其實這個各有千秋了,看你的自身情況去選擇,校招的話門檻很低,對應屆生的能力要求不高,所以會去校招的公司自然給你開的薪水不會特別高,但是公司相對會正規(guī)一些,大公司都不會參加“擺攤”的,都是以宣講會的形式去各大高校宣傳,然后當場筆試,面試,然后再叫你去他們公司第三輪面試。所以我說筆試很重要,因為應屆生啥都不會,基礎薄弱,他們的第一關想篩選人才自然是考試,要有心理準備,筆試很難,樓主我當時就是很懵逼那種,啥都不知道也沒準備,給筆試打了個措手不及。然后筆試一般做不完也沒關系,因為他都是按照排名去選的,也就是說你要和各大高校學生去競爭啦。校招和社招最大的不同是他不太看重你的社會實踐經歷,不太看重你的項目多少,而偏向于你個人的基礎能力,所以會比較關注的是你在大學做了什么和學習的能力。校招不止有宣講會還有招聘會,各大高校每年都會有春秋兩次招聘會,一個在八到十月,一個在三到四月。招聘會你就要去投簡歷啦,然后會有簡單的面試,過了就會叫你去筆試,再面試。
我舉個例子,就拿我現在的公司來說,我現在的公司是外企,上市的大型公司,聽同事說他們招聘時是這樣的,我們hr拿到你的簡歷,其實看都不看,就是問你,你四六級過了沒有?如果你沒過,那你可以走了,我們公司是外企,所以對英文能力有要求,起碼你四級要有,如果你有,就會再問你你學習成績在你們班排的位次怎樣?如果你回答中下等或者不太行一類的,ok,你又可以走了,書都讀不好的人,在公司看來沒什么用了,如果你回答一般啊,還行,過的去這些很中性的答案,就會開始看你的簡歷了,沒有什么項目經驗的估計也要gg,有一定項目且在?;顒迂S富的,會讓你參加下一輪筆試。如果你學習成績很優(yōu)秀,就直接讓你去參加筆試了。所以上面有挺多人問我這個課要不要學好啊,那個課要不要學好啊,人家校招就看這,你要是真是個學渣,要進大公司會比較難,哪怕你做的項目特別多,或者像我這樣工作經歷很豐富的人。樓主我簡歷雖然很漂亮,但不能掩蓋我是個學渣的事實,我只有某些專業(yè)課的成績特別高分,所以感覺那會想找大公司好困難,當然啦,也不是叫找不到工作,機會還是特別多的,項目經驗和社會經歷多的人肯定不會壞到哪,只不過是大公司有門檻,如果你沒拿到某些通行證就只能跟你說對不起了。
至于社招嘛,依然是留給有社會經歷的人的,所以社招其實對畢業(yè)生很不友好,對各方面能力有一定要求,不過適合那些在學校就已經學的非常厲害的,而且社招工資稍微會比較高,樓主還有同學是偽造自己已經畢業(yè)一年去找工作的,特別是那些純軟件開發(fā)的工程師,很多這樣,因為他們在學校就學的不錯,已經會干活了,已經達到了社會人士的標準,所以他們出門的工資就很高了7k的8k的都有。至于你要是硬件或者嵌入式,嘿嘿嘿,還是別太自信的好,像樓主我項目如此多以及在校期間湊起來有兩年工作經驗的人來說都沒什么信心去社招。但是我校招最后也拿到了6k,有點虛,不過就是這個數。
再來說說小公司和大公司,其實個人也是覺得你能進大公司會比較好,不過對于公司的情況非常復雜,不能一概而論。大公司體制完善,反正相對于小公司肯定是各種好,你想你要是在什么騰訊啊,愛奇藝啊,怎么可能會比你進了一個聽都沒聽過的公司不好?但是大公司對應屆生都有嚴格的體制,工資該多少多少,所以不要去看待遇,能進大公司還是進。大公司門檻也會比較高,對于大多數人而言,你其實上也只有校招那一年比較有可能上大公司,因為那些超級公司,都是只要校招,社招都是秘密渠道挖人,不會公開招聘的,比如你聽過或者見過騰訊出現在招聘網站上?大公司的人員流動性相對比較低,因為各方面都很好了,所以從大公司走的無非就三類人,一類是大公司真的比較閑,對于畢業(yè)生來說確實很不好,因為你剛出校門需要積累經驗,學習才是你的主題而不是賺錢,聽說海格和安居寶就是這樣的,相對較閑,有同學和同事是進去后沒多久跳槽出來了。
另一類是嫌公司給的薪資低,實際上大公司都是體制完善,對工資評定有自己的標準,不會隨隨便便升職和猛漲工資,除非你能力超脫。大公司因為各方面都好,所以人員流動性也比較低,上面老大不走,你想升遷談何容易?所以除非有職位空缺或者公司規(guī)模擴大你才會有機會。挺多人其實進了大公司就待遇不錯了,但如果談到成家立業(yè)結婚生子那又是九牛一毛,所以很多人最后在公司沒拿到所需要的待遇,只好向下跳槽了。大公司還有一個好處,那就是你有了大公司的經歷想進中小公司就會比較容易,門檻較低,而且從大公司跳槽到小公司待遇會漲上不少,這個過程叫“鍍金”,你想你要是說你是從騰訊出來的想找工作會太難嗎?然后最后還有一類人是本身能力逆天,心懷遠大理想,一心要劍指蒼穹武動乾坤的人,想憑借自己在公司的經歷和大招牌出來闖蕩搞事情。好了,大公司說了這么多說說小公司,有很多其實衡量一下,確實沒資本去大公司,那么你只能從小公司干起啦,小公司一般都不會太閑,一般都很忙,很適合你學東西,你可能需要一個人解決很多問題,那會是個修羅場,學完干的差不多再換唄,樓主我就是這樣的路線,從最小最小的公司一路通關打上去的,還有一個是有些小公司可能人文氛圍好的話就會比較溫馨融洽,反正同事間的關系會比你在大公司好上不少,適合你發(fā)展社會關系,當然啦,也有些小公司領導壓力太大脾氣暴躁。好啦,行業(yè)大背景和求職注意事項到這里我就全部說完了,一樓大綱的第一第二點完結,下面有空再說說對大三大四迷途羔羊的建議
如果你是一個大一大二已經玩廢了的學生,然后來到大三幾乎啥都不懂,然后還很迷茫找不到方向。那么這里我提出一些建議,只當是一個過來人的想法,當然,我不是什么神仙,也不是什么大佬,畢竟我確實才畢業(yè)了一年,很年輕,我說的話包括我以上的言論也純粹都僅供參考。也許以后回過頭來會發(fā)現我現在的想法很膚淺也說不準。首先你確實已經荒廢了兩年,所謂種什么因,得什么果,荒了兩年肯定是注定你已經少了很多選擇了,天上不太可能掉餡餅,這點你要接受現實。那么這個時候很多人回過頭來就慌了陣腳,昨日不可追,明日又不知何去何從。這時候你需要想清楚一個問題,很重要,是要繼續(xù)當前的日子這樣荒廢下去,還是從明日起找點什么目標奮斗一下?因為我見過很多人這個問題想不清楚,要么不去想,一直逃避,繼續(xù)游戲人生,這種無疑只有一個后果,那就是最后碌碌無為,很多新聞說本科大學生找不到工作,不是騙人的,確實很多人畢業(yè)找不到工作,不是沒有工作提供,而是因為低的兩三千,三四千的工作,大家都覺得我一個本科生去干這么無聊沒有社會地位的工作很可恥,然后工作內容好一點的又沒有條件,找不到,高不成低不就。
上面的問題只是一個決心問題,因為如果你真的不是王思聰,而是像我一樣的草根,那如果想要一個美好的未來,只能靠自己去爭取。所以你肯定要戒掉一些東西,去改變自己,凡事都是要付出代價的。如果你確定決心下夠了,那就來思考第二個問題,你是還要不要搞技術?這個問題 是個方向性問題,因為我們專業(yè)給你提供了一個搞技術的可能性。到這里先不考慮能不能做到,能不能實現的問題,而是單純的想不想搞的問題。有人說我可能要從待遇方面去考慮啊,各種各樣復雜的因素要想,其實不是,你想賺錢,送外賣也能能送到萬把塊,賺的可能不比你搞技術的少,而且搞技術也沒一般人想的那么輕松。那不搞技術還能干嘛,大把去了,社會很大,各行各業(yè)很多,銷售,做生意,搞產品,做文員,或者考個公務員,考個教師,你在大三的階段,想搞什么都還來得及。所以最重要的是是不是自己真的想要的先,我也見過不少人決心倒是下夠了,反而是因為到頭來發(fā)現不是自己想要的,最后沒堅持下去,浪費時間,不是每次撞了南墻都有的回頭。哪怕你是考研,這個問題也務必想清楚,因為你遲早要工作,這個決定將決定你選擇什么類型的工作。
當然也有人不知道自己想要的是啥或者干脆什么都想要,比如我,那么這種沒得解,我就是這樣,我整個大學不算迷茫也不算荒廢,而且在一般人看來很勵志,但是我所做的一切選擇都沒有任何目標目的性,因為我從頭到尾都在找自己想要啥,沒錯,我是在“找”,不是在逃避,我一早就知道自己需要一個目標,在來大學之前就知道了。我大學沒有做錯太多事,因為我的行為準則都是降低“職業(yè)臺階”,降低入百行的行業(yè)風險,廣泛的攝取各類知識但又只涉獵不專精,同時在做各種大膽的嘗試,我希望在我做錯啥撞了南墻發(fā)現自己要啥的時候還來得及,不至于沒得選。所以你到了大三還啥都不知道,以前到現在也啥都沒準備,那么這個事無解,如果你只是不知道自己想要啥但是像我一樣不算太荒廢,那么可以找有優(yōu)勢可能性大的方向嘗試。
如果你不打算搞技術了,那么最好是趕緊出去混,如果你在學校當過什么學生干部,參加過多類活動,或者其他一些什么非技術類的比賽,比如演講啦,創(chuàng)業(yè)大賽了,那就更好了,你的簡歷上就有的吹,因為你不會技術,那么你只能用別的東西證明你自己足夠的優(yōu)秀,成績好也算一項。如果你啥都沒有,然后又不想搞技術,那你只能攢閱歷,哦,這里那些學校吊炸天的要除外,因為非技術類的,學校本身就是個硬實力,985的學校,說出來已經就是個招牌了,足夠證明你很優(yōu)秀,所以你學校好,那你只要能寫出簡歷,會說,就成。那么攢閱歷,指的就是社會實踐經歷,做兼職啊,打零工啊,參加各種工作啦,那些都算,因為他們招人的時候看重的是你的表達能力,組織能力,還有情商啥的,這些東西很玄乎,沒什么能證明,所以你的簡歷和經歷很重要,再者就是面試了,反正面試官會從當場你的表現和反應能力來推斷你是不是ok的,其實據其他人描述,非技術類的應聘帶有比較強烈的感情色彩,面試官看你順眼就成,他判斷的標準有時候也是完全沒道理,總之,除了簡歷,其他的都是隨緣的。而你的簡歷占了很大的比重,包括簡歷的樣式和內容,工科的可能一張白紙黑字就能搞定,而非技術類的應聘,簡歷最好是“別出心裁”的。簡歷上要有經歷,所以上面我說的那些你要是沒有,就想辦法去拓展,什么志愿者活動啊,跑馬拉松毛筆字比賽啦,那些都行。畢竟企業(yè)招校招生時其實也有那么一點招“培養(yǎng)生”的意思,主要還是看中你各方面的基礎能力。如果你要是告訴我你那些都拓展不了或者不知道怎樣可以弄到這些經歷,那么我只能說你不適合這類職業(yè),因為非技術類的,個人認為比較適合outgoing和energetic的人,這類人肯定會有一定的人脈關系可以利用。
我沒從事過非技術類的工作,但因為我心很寬,其實我一直想嘗試一下,甚至在最近一次換工作還有想過轉行去搞點別的,但后面發(fā)生了很多事,導致我又回來搞技術了,比較重要的其中一個原因是我?guī)讉€月前突然得了很嚴重的胃病,呃……應該說我一直腸胃都不是太好,但是半個月前突然嚴重起來,所以我放棄了去闖蕩一番的想法。因為在我看來身體健康遠比什么都重要,身體是革命的本錢,再忙的人也會有時間去看醫(yī)生。技術類的生活比較平穩(wěn),哪怕是加班,作息什么的還是能保證規(guī)律的。但是像搞銷售一類的,就保不齊了,有個同學雖然做銷售很好賺,現在在廣州買車買房,但是據他說他的三餐很不規(guī)律,睡眠時間也很難保證。當然啦,不僅僅是銷售,還有好多非技術類的工作,但是呃……如果都是打工的話,其實在那么多行里面,要想找份工作是比做技術來錢快的,還是銷售類,管理類和金融類。但是金融類和管理類都得去進大公司,而且個人認為對學歷一類的會比較看重,門檻偏高,我沒有相關方面的資本,所以不在我的考慮范圍內。每個人都不一樣,還有的人就圖個穩(wěn),一心準備考個公務員回家,畢竟像廣州這種大城市很難混,要想在這里安身立命,還是路漫漫其修遠兮。說一下幾個同學的經歷吧,呃……有一個我們班的,大概從大一下半學期開始就覺得自己不是那塊搞技術的料,然后就積極參加各種活動啦,什么班干部啦,校辯論隊啦,人脈很廣泛,還參加創(chuàng)業(yè)大賽什么的,后面好像還自己搞過一些小創(chuàng)業(yè)。然后據他所說,他在大學就一直很看重英語,做英語練習,反正雖然是我們專業(yè)的,但是口語很溜,后面進過智聯招聘,然后不知怎么的就變成做外貿了。其實,我也覺得英語很重要,如果你的英文交流沒問題,那么是一個很值得稱道的資本,去哪都會很吃得開。然后因為我現在就在外企,每天看的資料什么的,也不會有中文的。所以如果各位有機會的話,還是要把英語學好,可以的話把六級過了也是不錯的。
還有一些是借住家里的人脈關系弄去一些單位,比如船廠,比如深圳某居委會,或者某地的聯通、移動、電信等都有,如果你家庭有某些資源可以利用,也是要列入人生的考慮范圍內的,我家里其實也有這方面的人脈,但是前提要去考個公務員。但是我是不喜歡師醫(yī)公的,前兩個是責任太大,后面一個是真的太穩(wěn)了,穩(wěn)到什么地步呢,如果你真的考上了公務員并且有編制,如果你沒犯錯,你的領導是沒有辦法開除你的,所以,哪怕他叫你干活,你大可以以一句“不會干”搪塞過去,你的領導拿你一點辦法都沒有,飯碗很鐵,不會丟,但相對的,如果你真這么做,那有什么好處和升遷的機會,相信下次領導也不會考慮你了。公務員的待遇跟地方經濟有關,忙不忙也跟具體崗位有關。然后樓主我有一顆不安分的心,所以并不是很想去做個小公務員,但其實它在我的考慮范圍之內,因為后面發(fā)生了很多變故,具體我就不說了,如果后面有時間我再寫寫。非技術類的出路我就說這么多了,這些也只是我的看法和見聞,不喜勿噴。
如果你到了大三大四還想搞技術有哪些選擇
大三了,然后之前如果有過一些基礎,我的意思是說你對電路有一定的認識,課本上的東西能懂個七成以上,那么你還是可以從純硬件去發(fā)展的,其實個人覺得這個應該和學校有特別大的關系,一般來說學校如果在硬件和動手能力這方面重視,那么其實還是很多同學能從這里出道的,如果學校不行,比如我們學校,那么可能整個班,整個專業(yè)都放棄硬件都是很正常的,總之綜合自己的興趣和實際情況去評判。如果硬件學的實在不行,那么還有嵌入式和純軟可供選擇。嵌入式嘛,其實你大三的時候是個小白,連單片機和c都不懂,其實也是可以入手的,我就是個活生生的例子。雖然我有硬件基礎,但實際上在大三剛開始那會,我的單片機和c比較空白,不過,我們專業(yè)只有我學下來了……
所以也不知道算不算是個例,總之老夫作為過來人告訴你,雖然挺艱難和迷茫,但是這是條可行的路子就是了然后純軟就更合適入手了,因為個人認為,學一門語言三個月就夠你學的很溜了,你想去學什么java,安卓,ios,c++,python,php,html5都ok,任何一種學完你都能吃飯,至于待遇水平看造化,至少可以保證你能就業(yè),純軟其實到了大四也是可以入手的,想好好學不算太晚。從結果來看,我認識的人基本都是大三或者大四開始精修一門軟件,最后混的還行,至少畢業(yè)一年有吃有穿能養(yǎng)女朋友,不至于露宿街頭夜棲天橋。嵌入式嘛,就不建議了,但是對于那些大三大四幡然悔悟又突然特別有情懷能堅持的人,還是可以破釜沉舟錘一下的。人嘛,總要受點苦,付出點代價,才能獲得你想要的。
其實搞技術的不限于研發(fā),現在很多測試工程師也很厲害,特別是樓主現在公司這些測試工程師都有不亞于研發(fā)工程師的能力和待遇。測試不是以前那種重復同一個動作的機械測試,雖然現在也有,就是比較low了。測試現在很多都是自動化測試,自己用腳本語言,python,tcl,java等等,做測試用例,做集成測試,自動化測試,對線上運行的軟件進行實時監(jiān)控,logging,tracing等等,涉及l(fā)inux的出了問題還要抓core,用gdb等工具調試等等。
? ? ? ? ??
我對培訓的看法
其實現在社會上現在涌現出了一大堆培訓機構,培訓的內容基本都是和軟件掛鉤的,在廣州這邊比較出名的傳智播客,小碼哥,粵嵌等,前兩個是培訓純軟的,后面那個一聽就是嵌入式。培訓費高昂,看學的什么東西,一萬多到兩萬不等。其實我本人以前很反感培訓機構,一直覺得非走投無路不可不然不要輕易去培訓。一個是有點看不起去培訓的,以前認為去培訓的都是在學?;斓牟恍辛瞬湃?,對于那些大一大二有點上心的人來說去培訓其實是沒必要的,另一個是培訓費確實貴,至少對于一個不想拿家里錢想靠自己的人,出不太起(雖然培訓機構確實是有先培訓再工作后付款的機制)。我們專業(yè),不,應該說我們整個學院,后面有大量的人去參加了培訓,因為大一大二玩脫了,所以硬著頭皮趕鴨子上架,抱團培訓給他們自己“一個學習的理由”。當然,從現在來看,挺多人效果不錯,待遇比我高,而且培訓速度快(不過培訓期間你需要承受巨大的壓力以及高強度的訓練)。
培訓的過程也還是挺艱苦的,課程一般是三到四個月,那段時間你基本上不了學校自己開的課,為了你自己交的“巨款”,你必須去培訓機構上課。他還有一系列“激勵學習”的制度,比如遲到會扣你錢,考核不過要補點錢“重修”等等,啊,總之就是你交了錢“上了賊船”現在非學好不可了。于是那些自制力差的人終于可以好好靜下心來,摒棄游戲的侵蝕。這么看來培訓機構還算是個好東西,反正現在沒有以前那么厭惡這個東西了。一個是他效果好像還行,至少在我那一屆還是不錯的,我們班有三分之一的人(十來二十人)沒有好好上課,在大三或者大四報了班,然后這部分人里又有差不多三分之一的人最后沒學成,或者說學完沒有以技術從業(yè),當然,有些不是技術學的不好的原因,比如后來被安排去船廠。然后培訓的這部分人里還有幾個待遇比我高的。
不是我自命清高,但是我的大學確實過的蠻拼的,但是這些個培訓的,無一例外,都是以前沒有好好學技術的,所以感覺培訓機構蠻“bug”的,有時候想想會還有點心理不平衡。所以那些實在自控力差但有點錢又想好好學技術的還是可以考慮一下培訓機構的。至于培訓效果,還是得靠自己的,看你有多認真了,我覺得我那一屆也不能完全說明問題,畢竟當時我記得是培訓機構的初期,比如學安卓那些好像是小碼哥前兩三期的學員,培訓機構前期為了打出名聲,是會很注重培訓效果的。但是到了現在,已經蠻久的了,過了一期又一期,培訓機構不停地在為社會量產工程師,一批又一批人不停地涌向社會,社會競爭必然加劇,社會對工程師的需求貌似也會漸漸趨于飽和,個人覺得情況應該不能與我當時那一屆的同日而語。當然啦,這些都是靠自己,學的好管他天崩地裂世界末日競爭激烈需求飽和,一技在身不怕沒人要。這里我還是比較客觀,別問我適不適合培訓什么的,能評判適不適合需不需要的只能是你自己。
總結
首先你要明白你要學到什么地步能從業(yè),大概就是C語言學的不錯,Linux基礎理論過關,入門級就夠了,熟悉arm的啟動流程,工作模式,稍微懂些硬件,然后有兩到三個嵌入式項目??赡苣銜X得這些好像很容易掌握,很淺顯,沒錯,其實你只要有心,認認真真就可以在有課的情況半年內完成這些嵌入式的學習,然后可以在大三下學期初步進入實習,在大四再換一個好一點的公司實習?;蛘吣阋呀泴W的很好,直接進了大公司去實習。如果你到了大四下學期或者很后面才學完開始去實習那意味著你畢業(yè)時就確實只能去差一點的公司拿微薄的工資或者根本找不到工作。
再細化一下要求,其實也就是你可以寫在簡歷上的東西:
1.熟悉C語言,了解C++
2.熟悉arm啟動流程,了解uboot,并且有過自制簡易uboot的經歷
3.熟悉linux下多進程,多線程編程及線程池技術,熟悉網絡編程,熟悉時間編程
4.了解Linux內核,能進行簡單配置。5.熟悉文件系統(tǒng),能自行用busybox制作簡易文件系統(tǒng)
6.了解linux下設備驅動,包括字符設備驅動,塊設備驅動,網絡設備驅動,平臺驅動,混合設備驅動。
7.熟悉UART、I2C、SPI、USB總線及其工作原理
8.能熟練使用Xshell、source insight、tftp、samba、git等開發(fā)工具
9.了解Makefile、shell腳本、gdb、valgrind
這些就是你的目標,最后不論你是否做到了,都要這么寫,后期也可以補課,總之這樣至少對企業(yè)是有吸引力的。
學嵌入式首先學好C和單片機,單片機不用玩的很溜,但要會,然后就開始全面的嵌入式學習,包括嵌入式系統(tǒng)的一整套基礎理論,你可以看書,可以看視頻資料。嗯,其實昨天本人我靈機一動,搜了一下還有個貼吧叫嵌入式吧,也許里面在嵌入式的學習和資料方面會有更多資源,帖子也會講的比我更詳細專業(yè)。后面如果有人問我要任何資源,我會告訴你沒有,因為如果你連找學習資源都做不到,嵌入式學不會的。這條道坑坑洼洼,一點自主能力都沒有的掉進去爬不來。所以最好還是有人帶著學,老師師兄或者同學都行,像我一樣是孤兒的就會很艱難,對自學能力和意志力要求挺高。然后如果你已經學完了基礎理論,看了我這篇帖子應該不會像我當初一樣一頭霧水連嵌入式是干嘛的都不知道。這個時候你可以做幾個簡單項目,然后算上你的單片機項目和比賽經驗,你可以去實習找工作,找之前一定要找些筆試題去刷,刷到ok成功率就很大了,對于學生,找工作的主要難度還是在于筆試題。