我的轉(zhuǎn)行之路--從機(jī)械專業(yè)到軟件工程師
發(fā)布時間:2011-12-4 13:47
發(fā)布者:
nansaudi
每個人都有自己的夢想,不同的是有些人為理想在不停的奮斗。我曾經(jīng)的夢想是做一名software engineer,而能在一家半導(dǎo)體公司做底層software則是夢想中的夢想。而今,五年的時間,我已在某全球頂級半導(dǎo)體公司做SW,參與了很多的項目,接觸了很多的軟件、硬件平臺。幾年的時間,風(fēng)風(fēng)雨雨,經(jīng)歷過,也奮斗過,在這里就分享下自己的經(jīng)歷。
從小就對電子興趣濃厚,2002年填高考志愿,報的大部分是微電子,最后一個填的還是應(yīng)用物理,但最終被調(diào)配到一個聽都沒聽過的工業(yè)設(shè)計專業(yè)。復(fù)讀要多花一年時間,況且學(xué)校也不錯,就沒放棄去學(xué)校報到。想著今后是跟電子行業(yè)無緣了,于是認(rèn)命了,本著學(xué)一行愛一行的態(tài)度,開始積極的去學(xué)習(xí)本專業(yè)。不過兩年下來,很多藝術(shù)類的課程對沒有基礎(chǔ)的農(nóng)村孩子來說是很痛苦的,素描、水粉、效果圖,畫的還沒有小學(xué)生有型。因?qū)I(yè)的關(guān)系偶爾也背個畫夾去寫生,跟舍友站在某雄偉的建筑下,在畫夾里用鉛筆描啊描,路人會投來艷羨的眼光,豈不知我們?nèi)窃谠闾0准。在無數(shù)次的反思后,發(fā)現(xiàn)自己不適合搞設(shè)計專業(yè),但也沒想好適合做什么。后來,在CAD課程里開始接觸很多軟件,覺得能設(shè)計出這些復(fù)雜強(qiáng)大軟件的工程師是多么的厲害,開始對神秘的軟件產(chǎn)生濃厚的興趣。有次看了王江民的生平簡介,非常震驚,他3歲因患小兒麻痹后遺癥而腿部殘疾,初中畢業(yè)的水平,38歲才開始學(xué)習(xí)計算機(jī),后來成為了國內(nèi)知名的反病毒專家。這位“全國青年自學(xué)成才標(biāo)兵”的事跡鼓舞影響著我,讓我決定開始去嘗試自學(xué)計算機(jī)。由于學(xué)?梢赃x課,于是選了些計算機(jī)專業(yè)的課,如Linux系統(tǒng)管理、網(wǎng)絡(luò)技術(shù)、操作系統(tǒng),但大多都是理論課,沒有接觸過具體程序。
2006年的夏天,跟同學(xué)來到深圳報道,第一家公司是臺灣的電子代工廠,當(dāng)然也是以本專業(yè)找到的工作。3個月實習(xí)完后才知道,畢業(yè)時應(yīng)聘的職位不一定就是最終的崗位,自己是能選擇的。這時有個機(jī)會,深圳的研發(fā)部門剛成立,軟件方面缺人,就去找研發(fā)的老板試試看。第一任老板是臺大的碩士,RF的專家,在他眼里應(yīng)屆生就是一張白紙。我自覺做軟件開發(fā)沒什么難的,于是鼓起勇氣去求他讓我留在研發(fā)部。我告訴他在大學(xué)自己修過的課程,自學(xué)過的東西,自學(xué)能力……幾次下來,他被我的勇氣打動了,覺得年輕人堅持追求自己的理想很難得,于是答應(yīng)讓我去試試,一年后不能適應(yīng)就回去做我的機(jī)械。感謝我的第一任boss,寬闊的胸襟,淵博的學(xué)識,他改變了我的職業(yè)道路,人生最大的幸運就在于關(guān)鍵的時候能碰到如此的良師益友。
我在研發(fā)部門開始了軟件的道路,那時候還不會寫代碼,雖然C語言是大學(xué)理工科的必修課,但非計算機(jī)專業(yè)要求都很低,到畢業(yè)的時候只記得幾個關(guān)鍵字。還好,剛開始的工作也很簡單,因為部門剛成立,沒有什么項目,所以大多都是幫忙修板子,更新板子的程序,或幫忙臺灣的工程師測試寫好的代碼。我開始了瘋狂的自學(xué)生涯,白天在工廠實習(xí),晚上回去就學(xué)習(xí)專業(yè)課程,C語言、C++、Visual C++、 MFC、TCP/IP協(xié)議棧、Windows網(wǎng)絡(luò)編程、Linux系統(tǒng)管理、Linux應(yīng)用開發(fā)、思科網(wǎng)絡(luò)技術(shù)。晚上經(jīng)常看到1點多,深夜里敲鍵盤的聲音經(jīng)常吵醒睡覺的舍友。半年下來,看了不少書,不過很多都是一知半解,迷迷糊糊的。終于開始了第一個小項目,用VC做一個計算電子元器件可靠度的工具。一個月下來跟同事一起實現(xiàn)了軟件的界面及運算,Release之后雖小有成就感,但更多的是知道自己的不足。要做一個專業(yè)的software engineer,不會算法、不懂軟件工程,寫出來的東西只不過是垃圾而已。于是開始了新的一輪學(xué)習(xí),在這期間看了很多本國外的著作,收獲不少,如《代碼大全》、《編程珠璣》、《深入理解計算機(jī)系統(tǒng)》、《編程之美》等。
兩年多下來,看了不少書,但能完全看的懂嗎?我當(dāng)然不是天才,很多時候只了解個概念,不懂的地方要硬著頭皮一遍一遍的啃。自學(xué)的道路是艱辛的,但感覺過的很充實,興趣是我最大的動力,每次學(xué)會一些新東西的時候就興奮不已。
由于公司的主營產(chǎn)品是數(shù)字機(jī)頂盒,我們最終要做的是開發(fā)板子里面的固件,在做了一年多的測試驗證工作后,終于開始了嵌入式生涯。我在項目之余花時間看完了u-boot所有的代碼。最開始看不懂匯編代碼,就開始啃MIPS的體系結(jié)構(gòu),了解了C語言執(zhí)行環(huán)境的初始化,各種外設(shè)的初始化,怎么把程序從存儲器搬到內(nèi)存執(zhí)行,如何去引導(dǎo)kernel啟動,后來接觸過很多的Bootload,都大同小異,像Yamon、Zboot2、CFE,很快就能移植到我們的板子上?赐陁-boot后,又開始研究神秘的Linux,先從驅(qū)動開始,研究各種驅(qū)動的體系結(jié)構(gòu),USB的URB,以太網(wǎng)的socket、I2C、SPI、MTD、SCSI,中斷例程,一個一個的啃。驅(qū)動看完再看內(nèi)核,掌握怎么去加一個系統(tǒng)調(diào)用,進(jìn)程切換的上下文,各種調(diào)度算法,內(nèi)存和緩存及MMU的管理和使用,等等?傊瑤啄晗聛硪恢睕]有放棄。
由于在項目上的經(jīng)驗積累,和自己對嵌入式底層的理解,讓我得到了目前這份工作,F(xiàn)在的我,能在工作中享受更多的樂趣。更多的學(xué)習(xí)是為了更好的做項目,而完成項目的同時也滿足了自己的興趣;仡欉^去,能走到今天,靠得就是堅持,沒有堅持就沒有現(xiàn)在的自己。所以,有夢想的朋友,如果你們堅持了,那夢想就離你不遠(yuǎn)了。 |