1. 程式人生 > >一個IT牛人的工作經驗總結

一個IT牛人的工作經驗總結

在這將近兩年的工作裡,發生了太多的事情,有了太多的收穫和驚喜。一直想將他們付諸筆下卻沒有這個動力或者時間來實現,今天選擇在

2010年的最後一個夜晚。北京的冬天外面掛著凜冽的寒風,而屋內,一瓶啤酒,坐在電腦旁,我決定靜下心來好好的記錄和分享我在這兩年中

的收穫和喜悅。

Ok,廢話少說,let's talk.

1.走上工作
08年底,那時我大四,在國內一所一流的大學讀計算機。和大多普通的大四學生一樣,我選擇了考研,只是因為覺得從心底裡沒有做好工作的

準備,我熱愛遊戲,熱愛自己所謂的音樂,熱愛和兄弟們整天宅在宿舍的感覺,熱愛能自由支配的時間。說實話,大學四年我幾乎沒學到什麼

,我從小學開始學習程式設計,我初中高中參加過資訊學OI,所以有相對比較紮實的程式設計功底。大學中,我混跡校園,後來沉溺遊戲,學業上沒有

取得過任何值得驕傲的東西(只有一門程式實踐課曾經打過滿分),遊戲上取得的成績就大多了,呵呵,這裡說這個了。走過來之後,會發現

所謂的電子競技信仰,那都是小孩們編織給自己的夢想,或在自己世界裡的英雄,不是真正的英雄。

臨近考研,我覺得自己這樣下去很沒有意義,即時考上了也不開心,當時我想改考北大,所以我甚至想再複習一年,來年再考。所以,考研理

所當然的沒過,不調劑,於是開始無聊找實習。當時託一個在網上認識的北理彈吉他的朋友(現在已經成了我的非常好的哥們)內推到現在的

公司實習。

於是乎準備簡歷+面試了N輪(為什麼實習生也有N輪面試,這個我當時很費解,後來才知道是為了確定把我放到哪個崗位),通知我來上班。

說實話,我的專業應用水平當時在年級中算不錯的,對語言層面的掌握(當時C、C++、JAVA、C#、PASCAL、彙編什麼都小懂)和資料結構(常

年做ACM類線上題庫)都不錯,所以面試筆試什麼的基本不成問題。

2.實習


2009年3月,我入職開始實習。

我被分配在一個部門叫做“終端產品事業部”,主要做一個嵌入式的中介軟體研發。走進工作,才知道原來正規的工程專案研發和學校寫的程式碼

是天壤之別,逼迫我不斷進步、學習,我當時對很多面向物件的概念都還很模糊,因為在學校做演算法或者資料結構題的話,基本都還是用面向

過程(在學校時即使是用C++,也只是偶爾用到一些STL特性而已,很少用到面向物件)。

我覺得這段時間我過的異常“痛苦”且“快樂”。痛苦的是:我發現自己是一個軟體研發的門外漢,“虛擬函式”和“純虛擬函式”我甚至都不知

道是幹什麼的,更別說什麼“回撥函式”,以及後來的軟體上的所謂“整合”、“移植”等概念了。快樂的是:同事們非常友好,我在每個人

身上都能挖掘到無窮無盡的寶藏,學到很多寶貴的知識,這種知識不是對課本的再複述,而是結合了實際經驗和各人的理解消化之後的知識。

我迫切的熱愛上了與人溝通,正因為這樣,也使得我很快的成長起來。

我這時發現一個自己的很大問題,就是我想表達一個自己的思想,卻總是無法找到最貼切的軟體用詞。後來我總結,這是軟體研發新手必須走

過的一關,就是了解團隊溝通術語。每個團隊都有自己的表述習慣,可能是起源於/標準化於團隊的一個或若干個技術能手,總之,這種標準化

溝通用語在工作中能起到莫大的作用。(包括後來瞭解的廣義上的“設計模式”,其一堆看上去很牛X的模式名,也只是總結出來的團隊溝通用

語)

由於我在工作中的出色表現,我的實習工資被從1500/月 提高到碩士生標準2000/月。

不過實習嘛,後來也基本處於各種專案周邊打醬油的階段,不可能給你核心專案研發任務的,公司也不敢冒這個險。之後我回學校做畢業設計

,就基本又斷斷續續請了2個月假。

3.畢業入職

09年7月畢業,經過和兄弟們狂喝濫灌的日子後,收拾精神參加工作。大家都知道,09年畢業生就業情況特別差,很艱難,特別是計算機專業,

我的一些同學直到現在,也沒有找到理想的工作。當時公司給我的offer相對來說不錯,4500/月 + 北京戶口。

對於本科生,解決戶口是一件不太容易的事,所以我就珍惜了下來,決定到這家公司幹。

正式入職,繼續做 中介軟體研發。這時我開始參與核心專案,剛開始還是應用的研發與移植。隨著對業務、開發流程的熟悉,我有了很多自己的

想法,從以介面、框架的應用層面開始向引擎方面進發。後來技術總監對我比較欣賞,再加上一個老員工的離職,一下子讓我從外圍的開發工

作投入到核心研發。

在這期間,我做過一個快速專案的專案經理(技術競標,不過這個專案本來就沒希望)。做過一個架構重構的實施負責人(領導3人團隊,並且

有來自各個team的技術支援)。做過一個系統最核心模組的程式碼重寫。做過一個省級專案的應用層開發。做過一個N個廠家技術移植的白盒測試

和技術支援(這裡出醜了,對外郵件中用詞各種不專業,哈哈)。

4.工作之餘的思考

工作總是很繁忙,伴隨著加班、辛酸。有時候甚至加班到晚上3點回家,我也沒有任何怨言,反而有一種解決問題了的喜悅。

但是在工作之餘,不免很多想法冒上心頭。

 1)作為乙方,我有時覺得我們做的事情很沒有地位。“搖尾乞憐”可能太過分了,研發的地位比商務低,整天需要修改程式碼來適應商務或者甲

方的要求。讓我很沒有自豪感,在我心中,程式設計師、軟體工程師應該是一個高傲的職位,是一個知識分子,知識分子都有一種獨特的清高,為

了五斗米折腰搖尾乞憐,真窩囊。(請原諒剛畢業的我內心的躁動,其實程式符合需求這是軟體研發的基本原則,只是當時我太年輕,哈哈)

 2)我越來越不喜歡自己的工作內容,整天應付繁雜的BUG,這些BUG有時是來自底層的,你需要找負責底層的TEAM做支援,而在應用之下、硬體

之上封裝了3層!由於是跨平臺的,可能同時還有N個作業系統平臺和軟體平臺,C/C++開發跨平臺這方面本來就很有問題,再加上中間層開發者

水平良莠不齊,或者中間層沒有經過嚴格的介面測試,或者porting部分沒有經過嚴格的移植測試,問題就來了……找BUG原因會找到會讓你崩

潰的。

 3)我對嵌入式一點興趣都沒有,沒有成就感。

這時我對遊戲開發產生了濃厚的興趣,於是開始業餘時間自己研究遊戲開發的一些技術和原理。當時也啥都不懂,就組織了一幫子志同道合的

朋友開始弄,自己做系統設計、專案組織。寫了半年差不多整了幾萬行程式碼(做一個框架開發),當時我們還饒有興致的自己實現了一個指令碼

直譯器、一個封裝HGE的2D渲染庫、一個回合制遊戲核心框架和一個牛B的遊戲劇本半成品,後來由於時間和技術因素,暫時擱淺。但是我一直

認為這段時間業餘時間(幾乎所有業餘時間)做這個遊戲框架是對我水平的一個極大的飛躍。

後來我還研究了silverlight、WPF等“時髦”技術,這都是後話。

5.重拾信心
在工作中,身邊的同事們對於我來說都是大牛,感覺從他們那兒知識總是取之不盡。於是我一直以一種很謙卑的態度在工作、生活。認識我的

人都知道,可能我是一個比較傲的人,談起對技術的理解,絕對不會認聳。後來想起來,也就只是能在不懂的人面前吹吹牛逼罷了,在真正的

高手面前,你什麼都不是。

時間一晃到了2009年10月。這時,有一個全公司範圍內的技術級別考評。公司很多研發人員都參加了。不可思議的是!

我在筆試中取得了全公司最高分。(當然,很多大牛沒參加)要知道,這是一個在美國上市的中國技術公司,人才濟濟,我從未想過能脫穎而

出。這讓我頓時對自己有了新的定位,我仔細整理了一下自己的思路:

通過半年的工作,我在業務上已經有了大致的瞭解。包括我們的產品定位,技術選型。同時在技術上我有了飛速的進展,對如何構建工程級項

目從完全不懂已經入了門。在我和我的一般同事們比較中,可能欠缺的就是對產品的細化理解以及對業務的理解了,而並非能力本身的差距。

我從小到大,從來不懷疑自己的智商。而實踐證明,我確實也能以較“驚人”的學習速度快速達到學習目的。所以我一掃工作中的陰霾,重新

樹立了自己的絕對自信,原來這半年我在工作中的稚嫩只是因為業務確實太複雜,而不是我水平低人一等。這讓我有信心去學習任何複雜的軟

件研發技術和業務。

6.換部門
到了2009年年底,突然有訊息,基於三網融合的思想,公司決定邁向網際網路方向。馬上要組建相關部門,選了我作為第一批員工。

我一萬個願意,我早就想摒棄嵌入式這塊(硬體不是我的長項)而投入網際網路的懷抱了。而且新的業務很快速被定為到以搜尋業務、資料探勘

業務為核心的產品上。部門組建初期,甚至長期一段時間,我們只有3個研發人員。另外兩位都是經驗極其豐富的,一位有近10年工作經驗後來

擔任部門技術總監,一位是清華畢業工作20多年的破解專家。只有我一個新人,而當時老大對我的任務就是,不斷的學習新知識。

我擦,這個任務我太愛了。從此暢遊在各種網際網路技術中,在這段時間中,我整個從搭建、維護到調優過LAMP,我做過silverlight甚至flash

,我甚至寫過css/js/html,業務上還接觸到ajax以及其長連線推送應用comet,這些技術從調研到最後應用於產品全都是經我之手。

值得一提的是,部門後來馬上轉入一位DB專家,他是一個非常熱愛交流的人,我通過整天的和他交流,瞭解了在工程專案中資料庫設計的流程

和一些基本理念。

工資的話,這時我主動通過人事(人事MM和我很熟~,因為我在公司玩樂隊,所以認識了來自各個部門的好朋友。)和老大提了一下,給我漲到

了6000/月

7.JAVA團隊
2010年6月左右,部門在一個專案上決定整體技術轉型JAVA,於是招聘了一位JAVA架構師。我也開始投入JAVA的懷抱,由於有了工程型構建的底

子加上面向物件,我在很短時間內就熟悉了J2EE的一些常見概念。比如IOC、AOP、ORM的概念和深入理解,同時熟悉了spring、hibernate、

lucene等JAVA模組。同時參與到專案的具體編碼,我也是負責最核心的演算法組織模組。

後來由於設計問題,需要進行大規模重構。我臨危受命,負責組織重構,加班加點出色的完成了任務。後來就負責整個專案的技術上開發,該

專案現在仍在維護,大致可以理解為一個分散式排程的資料探勘框架及實現,加上一個模式識別元件,加上一個自動聚合演算法。這個專案後來

由部門老大親自操刀設計,我參與了設計全過程,讓我結合實際理解了 解耦、分工、系統規模以及資料流驅動。

這裡有必要提一下部門老大這個人:他也同時是我原來部門的老大,跟我一起轉到這個部門。我們部門成立就是為了要最終成立一家獨自運作

的公司(相當於內部二次創業),所以也相當於是我們自己的事業。老大是清華自動化畢業,10多年的工作經驗,從碩士階段就從事軟體相關

,畢業開始帶領研發團隊,到原來公司上市的產品都是他組織研發,讓公司的董事們能登上中國富豪榜……太牛B了,我在之前部門還見過他寫

的程式碼,豈止能用膜拜來形容。是一個絕對的技術至上的研發出身管理人員,辦事果斷,親力親為,嚴厲……總之非常符合我的個性。

這時老大找我談話主動給我漲薪到8K/月。我在之後的專案中,還做過若干通用方案的調研、設計,比如遠端資料傳輸方案、分散式日誌收集方

案。還解決了專案中的重大技術問題。(之前應用跑在tomcat中總是有記憶體問題,我通過jprofile工具仔細跟蹤,結合一些技術文件,解決了

這個問題,根源在於第三方庫使用的不正確。)

8.買房
其實2010年過年之後我就一直在考慮買房的事情,也不斷看房中。終於在6、7月的時候決定買下一套房子,整個過程中資金籌措、談判之類的

把我累的夠嗆,夠寫一篇中篇小說,這裡先不贅述了。總之我大概以110萬代價(40+首付,60+貸款)買下了一套位於北京5環外的66平米的房

子。現在看來,還是值得的,因為房價一直在漲,而且本地將處於三條地鐵線交界區,肯定將飛速發展。

所以2010年的大事之一,就是我有了第一套自己的房子。

9.轉變
由於之前JAVA開發專案的拖沓與各種管理問題,領導很憤怒,後果很嚴重。相關人等都被“請”走。而我們成立公司的事情也是越來越迫在眉

睫,我們意識到,一位好的系統架構師是難尋的,也是難以從其他公司挖過來的。

老大很有魄力,(注意,我覺得這一點也是來自清華人共有的魄力,後面會解釋)老大說,我們應該自己培養一個架構師。任何看起來非常牛

逼的架構,也只是看起來而已,歸根到底還是為需求服務,並且商用級別的架構都沒有什麼巧妙也沒有什麼難(當然這裡指一般的商用系統,

不是指改變世界的前沿技術如google、facebook),無非在於架構師對技術的理解、對設計的經驗以及對技術發展趨勢的把握和對技術發展前

沿的嗅覺。

於是,被認為具有良好計算機基礎 和學習能力的我,被任命為部門架構師,也就是新成立以後公司的架構師。並且工資成8K/月 漲到 XX(未

定)/月。我十分欣喜,同時也深感壓力。喜的是我竟這麼快成為了架構師,這是多少軟體研發人員心中的目標;壓力是,作為一個畢業不到2

年的本科生,我何德何能擔此大任。

當然,我這人最大的優點就是自我解壓。我很快投入到新的工作中來,在工作中,老大安排了我和公司的首席科學家經常溝通,通過手把手的

討論我的設計稿,以及“夜半虛前席”的討論,我在設計上很快的有了入門。我瞭解到了從頭開始設計架構的考慮重點,一般流程以及如何邁

出關鍵步伐,在哪個階段定稿、拍板哪個部分的技術選型。

並且在一個很快的時間內,我設計並組織實現了一個通用的分散式工作流引擎。並且這個引擎將大規模應用到今後的商用級系統。

這段時間,我還在部門推廣lua、python等技術的應用,通過不斷學習、熟悉新的知識,我將嘗試尋找更多的新技術與我們產品的結合點。我相

信,這也是系統架構師的職責。

10.清華人共有的品質
在工作中,我有許多同事都是畢業於清華大學。他們都是“土生”的清華人(從本科開始一直是清華),我發現了許多真正值得學習的共同品

質,這是一些獨特的氣質。可能是真正的聰明人的體現。

1) 歸納能力。總是能把問題歸納成一個樹狀描述結構,條理特別清晰。

2) 願意思考。在力所能及的思考範圍內,總是把問題想的儘量全面,而不是留給“以後”去考慮。

3) 認真。從不輕視問題。

4) 理解能力。和聰明人說話從來都只要說一半,他就懂了。我太喜歡這種感覺了。

……

我並不是說這是隻有清華人才有的品質,我只是覺得這些都是我們非常值得學習的,你說呢?

11.成為股東
新的公司馬上成立,員工可以具有一定的持股。

我將投入10來萬(當然,這不是我自己賺的錢,借的),懷著堅定的資訊,將路踏實的走下去。願新年大家一切都好!