富士通南大實習五月記

四月份的時候看周圍一個個人都在找實習,每天看書的我也靜極思動了,投了一個月簡歷沒任何消息,連個筆試通知都沒有。。。那時候一心想去華爲,華爲的實習招聘卻一直不開始。同學幫我內推到富士通,四月中的時候去面試的,還記得是張老大跟李大姐面的我,問題的題差不多快忘記了,有道字符串的程序要寫。面的比較簡單吧,接下來就談工作時間,那時候說好的是工作五個月,9月20號辭職。

確定拿到實習offer後我拖了一個星期,期盼華爲南研所能招實習。。。後來就不想等了,便工作去了。那時候最囧的是我竟然沒談工資。。。第一次面試沒經驗啊,只好按最低工資拿了。工作一個星期後,我直接找課長要求漲工資了。起因是我知道旁邊南大的實習生進來就是160/天,我自覺自己的實力不算差,爲什麼要比其他人低40呢。糾結了一下午應該怎麼開口,事實上說了要求後課長立馬就同意了。。。讓我想得好多說辭都沒用了,跟一拳打在棉花上一樣(不得不說課長是個很乾脆的人,很會拿捏分寸)。

剛開始的一個月實習非常累,我很想快點進入狀態,不想在開會時做一個懵懂的聽衆,每天都強迫自己灌輸項目的各種概念(項目代號叫AROMA,很優雅)。就算是下班後,我還會在網上搜項目相關的知識點。AROMA是做一個嵌入式的平臺,項目主要工作是對以前的硬件和軟件升級,只要是移植。我對linux驅動開發非常感興趣,項目剛好也是這個方向,那時候工作非常起勁~在工作十幾天後就度過新人的OJT,提前參與了項目的研發。

還記得自己獨立寫第一份代碼的激動,花了兩天時間才搞定各種問題。進行代碼review之後又改的面目全非。讓我這科班生終於見識到了正規的代碼編寫:代碼風格要求非常嚴格(寫出來確實很好看),結構清晰(你必須要解釋給所有人聽),這些東西都是在課堂上學不到的。對於品質的要求再後來的幾個月中一直在震撼我。每次開學習會都可以學到很多東西,技術反而是次要的,關鍵是眼界。比如說項目推進方法,AROMA有兩個大的升級,平臺從X1升級到X2,平臺從2.6內核升級到3.0內核,我是沒任何思路的,讓我做肯定是一步搞定~經過討論的推進步驟是分兩大步:先進行系統升級改進,再針對硬件平臺開發。我覺得軟件工程是在課本上學不來的,只能在實際開發中自己慢慢體會慢慢領悟。

時間過了很快,在六月份的時候,我已經慢慢進入狀態,對項目有了大致的印象,不像之前那麼累了。在六月楚參加了華爲的實習招聘,那次面試感覺相當好,面試官說可以給我安排我感興趣的部門實習,可那時候項目正在緊要階段,我也實在不好意思去辭職。六月中的時候李大姐要去日本進修了,組裏一起去腐敗爲她送行,表示就是一直喫一直喫,不用喝酒,哈哈。這種風氣很好,我討厭喝酒。。。還有一件重要的事,我開始加班了,有一個daemon需要追加功能,原計劃是繼續修修補補,課長看不下去了,表示要重構,於是時間便緊了,計劃是加班兩個星期搞定。從此開始了我苦逼的加班生涯。。。

剛開始加班,心中滿是興奮(不得不感慨,年輕就是好啊)。學到的確實很多,還記得晚上討論數據結構與代碼流程,課長、組長各種爭吵。。。寫代碼給我一種很單純的愉悅感,我很享受寫代碼的時間。晚上下班後,走在路邊,陪着我的是一支菸和月亮,很有高中下晚自習的感覺。跟有經驗的人一起共事可以學到很多東西,很多對別人理所當然的事在我看來都是驚奇的。

6、7月份加班很多,測試很痛苦,現在回過頭來看,還是有很多值得總結的。在9月份的項目分析上,aroma的bug數過多,而且有幾個bug無法解決。測試與修復bug的過程很痛苦,經常幾天沒有任何進展。我覺得是對項目認識不夠深,儘管主要開發人員項目經驗足夠豐富,但驅動開發技術要求較高,恰恰都沒這方面的技術經驗,主要就是技術儲備不足。一個人的技術缺陷是無法自我察覺出來的,覺得自己的程序實現的足夠完美,但在高手看來立馬就是破綻百出了!在編碼階段無法認識到實現的缺陷,且對技術基礎原理認識不足,計劃再完美也沒用,六月份編碼階段一切按照工程計劃按部就班,可以說非常完美,無需加班,任務全部完成,例如在驅動移植中,只管將2.6內核中的新增功能代碼添加到3.0內核中,用winmerge就可以搞定了,然後功能測試通過,這驅動就算移植成功了。沒人關心base版代碼的設計與功能,限於自身的學識,是意識不到其重要性,於是就無需浪費時間學習。軟件工程中有句話:當一羣菜鳥(大家都沒有驅動開發的經驗的菜鳥)能按照預定計劃進行開發而無問題時,往往就是有大麻煩的時候。這句話很快應驗了:在7、8月份的測試中,修復bug非常困難,我們發現需要通讀所有的驅動代碼,理解原代碼的調理順序,而不僅僅是自己新增功能的代碼。爲了彌補6月舒適工作而產生的“技術債務”,只能在測試中拼命加班還債了。在我看來,這種加班其實是管理者的責任,對開發中的技術風險控制不足,在開發中沒有干預的結果,開發者都是樂觀主義者,沒人會意識到自己的技術不足以勝任(在測試、維護階段可以會意識到,往往已經晚了)。

我獨立寫了一個腳本,功能是運行磁盤檢查命令,分析其log,在有錯誤的時候進行修復。腳本的代碼量在50行左右,儘管以前沒有寫過,但通過百度通過基本的if、for、while循環與文件重定向語句還是把功能給實現了。寫完還沾沾自喜:儘管沒怎麼學過,但還是能夠把任務完成了。。。。但在9月份課長閱讀了我的代碼後,就告訴我不用在管這份代碼了,會給其他人重新寫。囧,當時還很想不明白,自覺自己的代碼沒寫那麼差呀,怎麼就叫斃了呢?在學校中,我看了《linux shell 腳本攻略》,系統學習了腳本語言,才知道自己以前寫過的代碼有多醜陋!在有個類似功能的代碼,用awk只需要武行代碼。完整學習基礎知識與僅靠百度而完成代碼區別還是很大的,代碼不僅僅是需要完成功能,還需要優雅、清晰、健壯,沒有足夠的知識儲備是不行的。也可以看出,越無知越自大,當知識太少時會覺得自己任務完成的挺不錯,而知識越多越謙卑,才能認識到自己的更多缺點!最後引用屈原的一句話,以此自勉:路漫漫其修遠兮,吾將上下而求索!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章