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