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