1. 程式人生 > >機會總是留給有準備的人--韋東山【轉】

機會總是留給有準備的人--韋東山【轉】

最近電子發燒友(以下稱'發燒友')採訪了韋東山老師,本文是採訪原稿,展示出來讓大家更深入瞭解韋老師的同時也進一步
學習嵌入式Linux經驗。

機會總是留給有準備的人

發燒友:

為什麼要學習掌握ARM裸機?ARM裸機與從事嵌入式工程師職業關聯度如何?

韋東山:

我們講解的ARM裸機,特殊之處在於:不使用IAR/KEIL/MDK等軟體,而是在純粹的linux環境下從0寫程式碼。這些好用的開發工具遮蔽了太多的技術細節,比如:位置無關碼、重定位、中斷環境的儲存與恢復、連結指令碼。而這些細節,在後續的bootloader學習中是需要的。

除上述細節外,ARM裸機的學習目的在於:掌握如何編寫程式來控制硬體。後續的“Linux驅動=軟體框架+硬體操作”,我們先在單純的裸機學習中掌握硬體操作,在後面的學習中就可以把精力放在驅動軟體框架上。

我們學習ARM裸機的目的,是去學習後續的Linux課程,進階為Linux系統工程師。不是要讓你繼續從事微控制器開發,成為微控制器工程師。

在技術層面,Linux系統工程師回頭從事微控制器開發,輕而易舉;但是現在不開始著手Linux的學習,後續轉型很麻煩。2004年我們使用51微控制器從事車載電話開發,所做的軟體已經算是微控制器層面頂尖水平了──我們可以在微控制器上開發自己的作業系統。

但是,我們同事紛紛感覺到了危機,微控制器能做的事情太單一了。當年流行wince,Linux剛起步,我們選擇學習Linux,現在wince已經沒人提及,而Linux仍如日中天。中興公司也是在2005年才全面從vxwork切換到Linux的,我有幸進入中興與他們一起研究Linux。

在收入方面,大家儘可以去51job等招聘網站搜“微控制器”、“Linux”,後者一般是前者2倍以上。

在發展方面,有了Linux知識,幾乎通吃所有產品。我從事過網路會議系統、監控攝像頭、樓宇對講系統、安防、廣告機方面的開發,我只是開發底層系統,不是開發APP,這些產品通通使用Linux。現在興起的機器人、人工智慧,它們要落地的話,執行Linux系統的硬體是必選項。

就身邊事例而言,我是2008年離開中興,隨後幾年裡有幾個同科室的同事也都離開了,他們都做Linux系統;現在都做得很不錯。有人在聯想做Android開發,有人在做POS機,有人自己創業,他們或是團隊領導,或是有股份。

發燒友:

根據您的經歷及見聞,現在ARM嵌入式工程師前途如何?含金量、薪資待遇呢?

韋東山:

理想很豐滿,現實很骨感。所有行業的從事者都是在一個金字塔裡,工作好收入高離家近假期多的人,都只是少數。我只能說,平均而言,ARM嵌入式工程師待遇較好,發展前途不受限。

說好話之前,先說醜話。

ARM嵌入式工程師入門門檻高,職位需求相對APP來說是少的,很多職位需要你有經驗。

所以,有一部分同學最終只能轉行:轉而做微控制器或APP開發。

但是,ARM嵌入式工程師所處位置非常好,向下跟硬體工程師打交道,向上跟APP工程師打交道,可以參與整個系統的開發,前途不受限。

我是個宅男,只能舉身邊的例子:我在中興時從事嵌入式系統的同事,發展都很不錯。

我的科長,擁有專業的Linux底層知識的同時,極具大局觀,他向上研究APP的相關知識、相關協議,上下兼通,是中興的產品經理、總工了。

同事A,早年從因POS機開發(用微控制器),在中興裡天天加班深研Linux技術,現在在創業公司裡當技術頭頭,有股份。加班多,但是收入高。

同事B,在中興裡是做APP開發,後跳槽到OPPO後,深研底層開發,早幾年單是年終將就是我的年薪,現在自己創業。

同事C,女,跑到IBM做伺服器相關的工作去了,嵌入式Linux的知識絕對是幫上大忙了。

同事D,深研Linux系統知識,人稱大師,從不加班(羨慕死人了),有大BUG必定請他出馬、出差。

對於嵌入式工程師,把Linux知識吃透了,可以遊走於幾乎所有行業,因為這些產品基本上都要用Linux。

想當領導的話,向上學習一下APP、業務知識,你就可以掌握整個產品的開發全流程了。

想創業的話,向下你知道需要什麼樣的硬體,向上你知道需要請哪方面的APP工程師。

對於暫時找不到嵌入式LINUX職位的同學,不用擔心,你總會發現機會的。

做微控制器產品的公司,產品升級的話必定要用Linux,到時你就是公司掌握先機的人;做APP的話,如果跟硬體相關,你的嵌入式LINUX知識會提供很多幫忙。

發燒友:

一個合格的嵌入式工程師,需要具備哪些性格和職業特徵?一些理工科學生或剛畢業不久的工程師老說迷茫,產生迷茫的原因有哪些,為什麼?怎麼克服?

韋東山:

嵌入式工程師,必須具備的性格和職業特徵:

究根究底:作業系統層面的問題,必須徹底弄清楚原因,徹底解決,否則隱患巨大。

絕對耐心:嵌入式工程師的程式碼量很少,多數時間是在學習新知識、協助除錯。我在中興工作時,曾經花了一個月來捕捉、解決一個BUG,最能只增加了一條指令。BUG隨機出現,我不斷地重啟系統、重啟軟體;根據新現象不斷地現學現用。

大局觀:你寫的每一個驅動,功能上要實現,效能上也要實現。需要結合產品的實際需要,根據APP的特點,調整你的程式。除錯BUG時,從APP到驅動再到硬體,各種可能的問題都要考慮。

迷茫,唯一的原因就是對未來感到不確定。

我的專業是物理,在大一大二時深感迷茫,不知道畢業後能做什麼,我選擇了學習第2學位:計算機。

我剛工作時用的是51微控制器,對所用的落後技術也深感迷茫,我選擇辭職自學Linux。

我在中興工作時,加班多、工資少、房價高,仍然迷茫,選擇創業。

創業過程中,我錄製Linux視訊,期間iOS火曝、androidAPP火曝,很多人趁著風頭做ios、Android培訓,我也迷茫,最後選擇不跟風:現在這些培訓很快就冷卻了。

我也算工作15年的老工程師了,也接近40歲了,仍不時覺得迷茫。但是我深信兩句話:要收穫,必須先付出;吃得苦中苦,方為人上人。

對於迷茫的工程師,我建議:

根據自己的興趣,選擇不太偏門的方向,潛心學習;選定方向後,不跟風不追熱門。

發燒友:

您是否遇到過女嵌入式工程師?在嵌入式工程師職業上女性有什麼優勢和劣勢?

韋東山:

我在中興時就帶過一個女同事,但是在這領域女性不多。

我認為嵌入式工程師特別適合女性,相對於APP開發,嵌入式工程師工作中的需求交化不大,程式碼量也不大,不需要天天加班。

劣勢在於,嵌入式工程師入門門檻高,需要硬體知識、良好的英文閱讀能力、多層面的軟體知識(作業系統、驅動程式、APP開發),學習強度是挺大的。前期需要付出挺多。

名師引導更容易入門

發燒友:

很多新手學習ARM裸機都會很迷茫,請問在學習ARM裸機過程中容易遇到哪些坑?

韋東山:

很多小坑,如果自己去解決的話,估計要花上幾個小時,但是有經驗的人一眼就能看出來。

最奇葩:拿到開發板,把電源插到耳機孔去了。

大多數:粗心,很多人拼寫命令時寫錯了,結果忙上半天找原因。

儲備知識不足:開始學習時,我們只能照著文件寫命令,這些命令的作用後面才會說明;如果當場就講這命令,課程就會又臭又長。

所以,我們都會建議:按著視訊學習,不懂的、沒講到的,先放著;後面學完你就全懂了。

發燒友:

成為一名具備一定開發能力的嵌入式Linux開發工程師需要具備哪些知識?

韋東山:

我先說合格的標準吧:能在一個新的板能上搭建出Linux系統,能寫出需要的驅動程式。

所以,需要以下知識:

硬體知識:能看懂電路圖,看懂晶片手冊,看懂硬體協議。

英文閱讀:上述資料基本是英文的。

C語言:嵌入式工程師常用語言就是C。

作業系統原理:有助於幫助我們理解Linux原始碼。

常用驅動程式框架:精通幾個驅動程式後,領悟原理後,才有能力開發新的驅動程式

紙上得來終覺淺,你學完後,必須找一塊不同的開發板,在上面把所學過的程式自己寫出來,這樣才能真正掌握──這也是我對新同事的要求。

實際上,很多公司招聘時要求有工作經驗。對於嵌入式工程師,這個經驗非常容易得到:你換一個不同的板子練習就可以了。

發燒友:

在學習ARM裸機或ARM Linux過程中,得到資深名師或導師的指引有哪些好處?

韋東山:

學習過程中,很多因為粗心導致的問題層出不窮,自己去解決的話很花時間;

嵌入式學習過程中,需要的知識非常廣,自己臨時去學習的話,進度很慢;能否跳過,自己也不知道。這時候如果能有人指引,效率會很高。

我在2005年學習時,市面上基本沒有資料,我學非常痛苦,在論壇上瘋狂發貼,那些問題現在回頭看非常弱智,但是當時就把我卡住了:茶飯不思,時不時想砸電腦。

發燒友:

請問韋東山老師最終為何選擇嵌入式授課教育?

韋東山:

生活與興趣推著我走上這條路,沒什麼情懷。

我2005年適職自學Linux時,過程痛苦,把自己的學習所得寫了一篇文章:S3C2410完全開發流程,釋出在網上;然後就去中興上班了。

此文流傳甚廣,人民郵電的編輯聯絡我,要我出書。

我答應下來,但是因為一邊上班一邊寫書進度緩慢,於是在2007年辭職專心寫書。

2008年書出版了,錢花光了,於是接受華清遠見的邀請,去做兼職講師。

講課過程中,我採用完全不同的風格:從0寫程式碼,邊講邊寫,大受歡迎,效果超好;慢慢有了名氣後,遊走於多家培訓機構,天天講課,天天現場寫程式碼。

這樣天天做同一件事,天天寫同樣的程式碼,實在是煩死人,決定自己錄視訊算了。

於是2011年底,釋出第1套視訊,承蒙學生們、工程師們厚愛,他們幫我一起打擊盜版,口口傳播,於是也就一直堅持到現在。

我發現,我有講課的能力,可以把複雜的問題講得非常清楚,非常形象。

我希望,眾多像我當年初出校園的學生,他們有學習的渴望,我能幫他們一把。

所以,一直以來,我不吹牛,不強拉人學習,想適合學習的人不強求。

如果你要學習嵌入式系統,而我恰好經驗豐富,你願意的話我就教你。

悅已之作,方能悅人。這是我們公司的格言,如果做出來的產品你自己都不喜歡,別人怎麼會喜歡呢。

在工作中,我就經常回頭去重看視訊(我也會忘記),從未感到臉紅,因為我都是用心錄製的。