金錢帶給我的激動就是在那段時間,溫飽問題解決之後,金錢對我的誘惑就再沒有了,哪怕讓我一個月賺一萬,給套房子給我,也不可能再給我帶來幸福的感覺了,錢是重要的,但不能成為它的奴隸,家中不需要我負擔,我一個人有吃有喝,幹著我喜歡的工作,足矣!
我在那公司一直乾到九月學校開學為止。我走的那一天,公司居然還開了個歡送宴會,老闆封了500元的封包給我。我真是感動。我大學畢業後在社會上掙扎求生,得到的大都是冷眼與蔑視,社會終於認可了我的價值,我不是一個只知道吃飯的廢物!
1999年9月9日上午9點,在這個最多9字的時刻,我到學校報導來了,放下行李,我坐在分配給我的床上,心中終於踏實下來。
現在,我在北京終於有一張屬於我的床了,一張真正屬於我的床了,終於有個地方可以讓我安穩地睡覺了。沒有這段經歷,我怎么體驗到“安居樂業”這一個詞的真實含義!個人如此,國家要做到,中國要做到,更難!
二、編程生涯
讀研兩年半的時間,我四處打工,這兩年半我至少在七八家公司做過,編了十幾萬行代碼,為自己賺了一台電腦,兩部手機,還有讀研期間的所有費用,實現了我的目標:沒向家裡要一分錢。
我水平不高,但在打工過程中,發現許多中國軟體公司的水平更菜!
2000年暑假,我參加一個商品軟體的開發,搬到了北大燕北園的一個宿舍,在那兒搞封閉式開發。在這個項目採用vb6開發,主力程式設計師除我之處,還有一個華北電力大學的研究生。大家都沒開發商品軟體的經驗,沒經過正式的設計,就匆忙編碼了。我曾經想採用分層的系統架構,但遭到另一位程式設計師的反對,爭吵沒有結果,老闆也不能做決定,結果各行其是。現在看起來,那時真是太菜了,任何一本軟體工程書都會指出這種做法是不對的。
我們直接就熱火朝天的幹了起來,那位華北電力大學的老兄,真讓我佩服,他可以在一個sub過程中寫上2000行代碼!我覺得奇怪,為何他能寫這么多的代碼?一看,頓時我暈倒,他居然將每個控制項的left,top,width等屬性都用代碼來設定!想想這樣的程式,調試時光單步執行就需要按多少次f8鍵!
我們在電腦旁邊搭了個行軍床,每天都是乾到早上6點才睡,12點吃中飯,然後又是一個通宵。當時整個工程只有一個類模組,被我用於封裝訪問資料庫的ado數據引擎,這是整個工程中唯一一處用到了最簡單的面向對象技術的地方。然後,我寫了近十個bas公用模組,每個模組代碼規模都有一兩千行,還有十幾個窗體,每個窗體中都塞滿了事件驅動的vb代碼,整個軟體應該有10萬行代碼,我一個人在此期間至少就寫了3萬多行vb代碼。程式的主處理流程我甚至用ado與dao寫了兩套!
現在想起來,我們當時根本就不知道面向對象為何物,更不理解許多對軟體開發至關重要的理論,就憑著一種熱情。在這段痛苦的開發經歷中,我不僅精熟了vb,而且從中學到了很多。現在再開發同樣功能的東西。我至少可以砍掉2/3的代碼。怎么學都不如從失敗中學得多。
後來我總結vb程式設計師的三個境界:
所有代碼都只放在窗體檔案中的,屬於菜鳥級,他們只會從面板上拖控制項,設定屬性,然後再給事件編碼。
工程中有bas模組的,屬於中間級,他們已意識到有大量的代碼是重複出現的,應該將其抽取出來作為公用模組。
工程中有cls模組的,屬於高手,他們已掌握了面向對象的思想,並能套用這種思想來解決實際問題。
正是這次開發經歷,促使我反思:到底如何開發軟體?我個人可以用vb完成各種各樣的功能,為什麼湊在一起就會那么困難?更正一個bug為何那么難?為什麼一個看似簡單的軟體,要拖半年的時間還看不到結束的日子?
九月,研究生要開題,我自擬了個課題:軟體體系結構設計。我決心弄明白,好軟體到底是怎么做出來的。