今年(2003年)是我大學畢業滿10年的日子,也是我投身IT技術的第10年。一直想能對過去的經歷做些回顧與反思,以更好地走向未來,但總沒有下筆。剛好CSDN舉辦“講述程式設計師的故事”徵文,這件事成了一個引子,我終於趁著暑期有時間,敲了一天鍵盤,便有了這篇人生自述。
10年對於一個人來說是比較長的一個階段,10年之後,同期大學畢業的同學情況差異之大,讓人嘆息命運之變幻莫測。
我在此記錄下了我的生活足跡,由於時間較長,有些事記得不太清了,但我是儘量真實的記錄當時的情況,有興趣看我這篇長文的人請把我看成是一個在你我中間一塊生活,一起喜怒哀樂,一起努力的平凡人,相信我們之間會有很多跨越時空的情感交流。
好,就說到此吧。
序
從1994到2003,不知不覺之間,我已在計算機技術的世界裡沉浸了十年。有位哲人說過:如果一個人能用十年的時間專心致志地研究一門學問,或學習一門手藝,或從事一個職業,他一定能成為這個領域的專家。我天資平庸,但哲人的話是有道理的。我用十年的時間先成為了一名合格的程式設計師,再成為了一個重點大學計算機專業的大學教師。十年磨一劍,驀然回首,年華如水,青春如歌!
我父母都是城市中的平民,家境僅能解決溫飽,我想我可能代表了中國社會的一大類青年,我的經歷與體會可能會對許多條件並不好的年輕程式設計師有所啟示:只要努力,天資差與環境不好都是可以克服的。因為我不是牛人,所以我不能教你如何成為牛人,我只是儘量真實地寫下我的經歷與感觸,寫一個平凡人的努力過程。我為我是一個軟體開發者而自豪,為我從事的教書育人的事業而自豪,並願意為中國落後的軟體業盡己菲薄之力,為此,我人生無悔!
我想分為三部分講述我的人生經歷:上篇 - 學習人生:主要是我學習計算機技術的經歷與感觸,時間跨度大約是從1994~1996年;中篇 - 艱難人生:主要是我流跡社會,失業一年半,三次考研的痛苦經歷;時間跨度大約是從1997~1999年;下篇 - 實踐人生:主要是我的技術實踐經歷:在公司打工,開發軟體,畢業求職與教書生涯,時間跨度是1999~2003。
我是七十年代初在中國出生的那一代人,等我們長大開始讀書時,文革已經結束,相對於我們的兄長,從我們這一代開始,以後出生的孩子都能受到較為正規的教育,這是我們幸運的地方。
也就是我們上小學的時候,七十年代末,以美國為技術資源中心的計算機技術開始在全球範圍內迅猛發展,這時正是世界性的“軟體危機”極為嚴重的時候,計算機技術各方面都在醞釀著新的突破,而此時比爾·蓋茨也正在準備構建他的明日微軟帝國。
七十年代末與八十年代初,在我們的生活中,看不到一點計算機技術的影子,剛剛改革開放的中國,99%以上的人連“計算機”這個詞恐怕都沒聽說過,中國遊離於資訊科技大門之外。
在“振興中華”成為時代主旋律的八十年代,整個中國真的是呈現出一種勃勃的生機,這是一個民族在經歷百年恥辱,十年挫折之後的再起步,象一些老歌---《金梭與銀梭》、《在希望的田野上》等,就是當時青年的一種積極向上的精神風貌的體現。這種環境下,對於正在成長中的我們這一批少年,在潛意識中有極為深刻的影響,我們認為愛國與振興中華是天經地義的事,並且成為了努力學習的主要動力(呵呵,現在的一些“憤青”——憤怒青年一定會說我們當時被“洗腦”了,也許真的是吧,這種信念確實會給人以極大的動力,我看不出有什麼不好,至少我不會有現在這一批青年所經歷的非常迷茫的感覺)。
1986年我考上了桂林市重點高中——桂林中學,在那兒,我第一次見到了電腦。
1. 中學的計算機興趣班
1987年我在桂林中學讀高二,桂中是重點高中,條件較好,當時學校課外安排了兩個班:無線電班和計算機班,我上的是計算機班,當時用的微機是Apple II,用BASIC程式設計。記得當時中國也開發了一種同檔次的計算機,叫做中華學習機,要在中小學中大力推廣,但Apple II後來發展成了著名的Mac系列,並擁有了自己的作業系統,而中國的中華學習機,還有後來的小霸王等電腦學習機,都無疾而終了。
學校安排上機,有同學不知從哪找來了一些有趣的BASIC程式,什麼“比翼雙飛”,“飛機空戰”等等,都是一些非常簡單的小遊戲,當時他抄了厚厚一本,一上機就敲一些到計算機中執行,而我是一點也不會,只有站在一邊看的份。
那時會計算機的人很少,老師講的我又不明白,考試的時候也不知道怎麼過的。呵呵,後來我讀研打工時,在網上看到洛陽一個高中生用VB編的一個“電子書童”程式,水平之高,我當時真是沒法比。
1989年,廣西高考名額一下減了7000多,競爭激烈,十幾人裡才能取一個,由於壓力過大,我高考前夕失眠,第二天考語文,120分的試卷當時只考了68分,因而與重點高校無緣。本想復讀,但父母怕我來年考不上,一定要讓我讀廣西大學,我萬分不情願地順從了父母的意願,去了我不喜歡的學校,讀了我不喜歡的專業。男怕入錯行,我在大學畢業後重新開始學我喜歡的專業,足足用了五六年的時間才轉過來,真正成為一名合格的勞動者,走了一條長長的彎路,所以,父母的決定對缺乏經驗與決斷力的孩子而言,真的是非常重要。
現在想起來,父母當時沒錯,我也沒錯,那都是在時代與社會環境下的自然選擇。
2. 失敗的四年本科與工作初期
四年裡我是個老老實實的好學生,但四年除了玩命過了六級,什麼也沒學會。
記得大學第一節課就是BASIC語言,呵呵,也根本沒學會,但我看來註定了要與BASIC難解難分了,後面的實踐篇中我會講我用BASIC開發的事。
大學裡我學的專業是電力系統自動化,學過微機原理與Fortran,上機時還用的是古老的主機加終端方式的計算機(叫做l/f機),我上機時真是一塌糊塗,因為這門課我從沒學進去,也從沒學懂過。有同學很厲害的,會用電腦列印出許多漂亮的圖片(當然現在看起來很粗糙,針式印表機打的),我那時就稱這些人為牛人了。
呵呵,我如果沒記錯的話,做超級解霸的樑肇新也是廣西大學的,但不是我們系,記得我當時就已聽到有關幾個計算機牛人的事,估計其中就有他吧,如果我記錯了,樑肇新先生請指正。在本科期間,我對電腦是神祕多於興趣。這也說明我成為不了牛人與大師,天資有限。後來,我發現一個普遍的規律,如果能成為計算機方面的牛人與大師,請去翻翻他們的傳記,絕大多數在本科期間就已展露出他們的才華。而我們現在的中國高校,這麼多的本科生都在為考試、考研、考託、考G而奔忙,這種填鴨式的應試教育體制,扼殺了太多學生的創造性。結果是一個學生在大學裡讀得越認真,就受到的錯誤影響越大,我是用好幾年的時間反思才得出這個結論的。所以,中國高校十幾年數以幾十萬計的本科生中出不了可編寫linux核心的傑出人才,一點也不奇怪。
1993年我畢業了,用我總結的一段話來說,是:一張白紙進來,一腦漿糊出去。
畢業後我分到了一所號稱是“中港合資”的生產蓄電池的公司。呵呵,剛剛工作的日子讓我這個單純的大學生被生活好好的教訓了一下,許多無法以前想象的社會現象讓我目瞪口呆,年輕氣盛導致穿了小鞋,還只能忍氣吞聲。吃了生活的一個悶棍,我才明白,我除了有張文憑,什麼都不是!
當時,我感到最鬱悶的是我在公司裡什麼都不會做,一個電機燒壞了我楞不知如何下手修,公司老總辦公室裡的燈不亮了,學電的大學生我花了半小時楞不知原因在哪!我學的東西沒一樣能用的。開始我還以為是因為我在學校裡沒認真學,但後來問了很多同學,90%以上的都有同感,我現在終於認識到這不單是我個人的錯,我自認為在學校中是很努力的,從未偷懶過,但如果90%以上的學生所學不能服務社會,這種教育體制一定存在問題。
四年裡,我的電腦知識與技能=0!
現在看起來,我浪費了寶貴的四年光陰!但當時的環境與認識水平,也只能如此了,沒有當初的浪費,怎有後來的珍惜?這是人生必經的一個階段。
1. 從電腦培訓班開始
我畢業後的第一個工作單位是一個非常差的企業,我在那兒見識了幾乎所有中國差的企業的弊端:人浮於事,拉幫結派,暗箭傷人,損公肥私……。可以想見,在這樣的企業工作,人是多麼的頹廢。我在無聊之中過了大半年的時間。1994年4月的一天我去桂林新華書店買書,看到桂林電子工業學院老師舉辦一個電腦培訓班,教打字、排版、常用DOS命令等電腦使用基礎,反正也沒事,不如上個班學點東西吧。不曾想就是這樣一個培訓班,卻根本影響了我的人生之路。
我清楚地記得當我第一次上機時,連電腦開關在哪都找不到,老師拿著一張五寸軟盤,插入軟碟機,開啟電源,在一陣“吱吱”的聲音之後,螢幕上開始有英文字元出現,然後,教師在鍵盤上敲入幾個鍵,電腦沉默一會,突然在螢幕上跳出一個小人,出現一行字:快快樂樂學電腦,還傳出了音樂。我當時真是驚呆了,電腦怎麼還會唱歌?現在想起來,那個軟體其實是台灣鬆崗系列教學軟體,而我一個大學本科生,在畢業之後居然對電腦無知到這個地步,我真不知道是該哭還是該笑……!
俗語說:“一見鍾情”。我是相信這種事的,因為就是這第一次上機,讓我產生了搜尋這一神祕世界的強烈興趣,從此就再難與電腦分開了。
當時,有兩位電子學院的老師:尹老師和陳老師。他們給我們講DOS,講漢字輸入,講他們如何修改天匯漢字系統使它能在一張軟盤上執行,講打字排版……,一個月之後,我不滿足,又學了一個月。
在上培訓班的時間裡,我向老師要來了桂林電子工業學院計算機應用專業本科四年的培養方案,回到家中,列出了所有本科課程,再根據書上的先修課程介紹,繪製了一張巨大的課程樹,從樹根開始,決定一本本地啃,從頭開始學計算機技術。電腦科學的學習有較強的系列性,想一步到位很可能會學不懂,但循序漸進又無法跟上技術發展的速度,這是一個非常突出的問題。我現在想起來,覺得好的學習方式是:學理論打基礎,在實踐中逐步理解理論,多思多悟,就會發現層出不窮的新技術中有許多一直不變的東西存在。把握這種東西,就可以以不變應萬變。這種“不變”的東西是什麼?就是軟體開發的基本原理與理論,基本思想與方法!在我對物件導向理論進行了較深入的學習與把握之後,我學.NET只用了三個月的時間就可以獨立設計一個完整的全物件導向軟體架構,並且用VB.NET與C#混合語言把它給做出來了。對於J2EE,我同樣有這種自信,也用三個月的時間,一定可以開發與設計基於J2EE平臺的軟體,因為它們背後的計算機技術基礎是一致的,完全可以觸類旁通。
尹老師和陳老師可能不知道,他們開的一個也許是為了經濟效益的培訓班,最後居然培育出了一個計算機碩士!所以,作為一名教師,其責任真的是非常重大的,可能會影響學生的一輩子,我感激他們!
2.漫長而艱辛的學習之路
我當時每月只有一百多元的工資收入,把大半收入都用到買書上去了。電子工業學院門旁的那個科技書店,以及桂林科技書店,成為了我最常去“站讀”的地方。我買了資料結構、作業系統、微機原理、IBM PC彙編程式設計,C程式設計……這些教材,就按照預定的計劃開始學了。
我當時也說不清楚為什麼要學這些東西,決不象現在學生學什麼東西都有很強的功利性:學英語為了出國,學電腦為了好找工作。當時根本就沒有想過今後如何如何,就是對計算機技術本身的興趣推動我去學習的。
當時計算機書還不象現在這樣撲天蓋地,我幾乎看完了我能弄到的每一本計算機書,看了一些書,就特別想有地方上機,能練一練。但我一個月一百多元收入,一臺電腦怎麼也得幾千元,要五六年不吃不喝才攢夠錢,父母都是普通百姓,家境僅能溫飽,擁有一臺電腦真成了我最大的美夢。
為了有機會上機,我這個臉皮極薄的人也會什麼都顧不上了,帶著一盒儲存著各種軟體的軟盤,厚著臉皮到處找可能的地方上機。在這個時候,電子工業學院又一次幫了我,他們的機房管理得並不嚴,我就冒充是他們的學生去買機票上機。後來去得多了,那兒的老師都熟悉我這張臉了,但搞笑的是,居然沒一人知道我是哪個班的!
當時電子學院用的區域網作業系統是Novell,我在那兒學會了使用許多最基礎的軟體,現在仍然如數家珍:CPAV,Turbo Pascal 5.5,UCDOS,Tway(天慧漢字系統),Masm,Turbo C 2.0,還有鼎鼎大名的Norton公司的磁碟醫生NDD,PC Tools,Borland公司的最牛的常駐記憶體的軟體Sidekick,……
在電子學院機房,我還玩了經典遊戲:決戰中國海,冒險島,戰斧,三國……。
學校網路裡軟體很多,但其中所染的病毒也五花八門。我記憶深刻的是第一次遇見Dir II病毒時,那種感覺決不是害怕,而是欣喜,呵呵,我見到病毒什麼樣的啦!由於DOS核心是開放的,所以那時開發一個病毒程式相對容易,大家又都喜歡用軟盤拷來拷去,結果毒源氾濫,病毒的猖獗使得防毒軟體有了巨大的市場,現在大名鼎鼎的江民KV系列,就是在那時開始佔據中國防毒市場,同時還有部的Kill等競爭對手,瑞星、金山等都是後來者。
那時,我白天在公司上班,就盼望著晚上的上機,每次上機我都有詳細的計劃,因為機時寶貴,所以分外珍惜。
為了上機時能多敲些程式,我一咬牙,向媽媽要了兩百元,買了一臺電腦學習機,回家苦練英文指法與五筆輸入,每天對著家裡那臺14寸的電視機螢幕,敲擊至少鍵盤2小時以上。練得手腕痠疼,但終於達到了運指如飛盲打的程度。學五筆,背字根“目具上止卜虎皮,……”,足足花了一星期才背下來,並把每個字根與手指對應起來,後來看報紙都不自覺地將漢字給拆得七零八落,再也看不到是一個完整的漢字啦,當時好象練到了每分鐘可打60多個字,後來我居然靠著這彈指神功當了一陣打字員混飯吃!呵呵,練好了指法,一上機,確實效率倍增,兩小時能敲入並執行除錯的程式比以前花三小時敲的還多。
94、95年是我條件最差,但學習勁頭最足的兩年時期,外在環境的惡劣,卻反而造就了我高昂的學習興趣,那種痴迷,我想熱戀也不過如此了,可能因為我太喜歡計算機了,所以愛情與我無緣,這也是無可奈何的事。 :-(
我特別想說說我學習計算機技術書籍的感覺。如果你真的喜歡一門學科,那在啃一本本專業書籍時,就決不會覺得它厚,而只嫌它不夠厚。對比我在本科學《電磁學》、《自控原理》之類枯燥無味的課程的感覺,那種課程脫離實際,從紙上到紙上,學生根本無法真正掌握。而學計算機課程《C程式設計》、《資料結構》、《作業系統》等課程的感覺真是天壤之別,原來本科學的東西是越學越糊塗,而我在學習電腦科學的過程中自己就感到慢慢地將所有的知識串成了一條線,腦中有一棵知識樹在成長,這不是形容詞,是真的感受。我學DOS命令,學了很久不明其道理,是在一天早上醒來時靈感一來,突然理解了檔案與樹的概念,於是,就真正把握了DOS命令的內涵,開始對copy,format,move……這些英文單詞遊刃有餘了。有段時間,我甚至能感覺得到我的知識在與日俱增!如果那時能有相對穩定的客觀條件:比如有一臺隨時可用的計算機,那我一定學得更快更好。不過話又說回來,條件好的時候,人又容易為安逸所累,進步反而慢。還是那句老話:業精於勤荒於嬉。現在的許多學生就是物質條件太好了,反而不懂得珍惜。
後來我看了金庸先生的《射鵰英雄傳》,郭靖成了我最喜歡的人物,不是因為他有黃蓉的愛,而是他那種堅忍不拔的毅力,以平凡之資終登絕頂!金庸先生真是妙筆!此小說我不知看了多少遍。
最值得懷念的就是我學程式設計的歲月,我學C語言用的是譚浩強的《C程式設計》,當時譚老師在電視上同時講C程式設計,我每天必看,把書上的每道例題與習題全部做了一遍,並寫出了每次上機的安排。我每次都先在紙上把程式寫出來,然後上機時爭分奪秒地在計算機中除錯執行,並根據執行結果思索為什麼會執行不正常,在哪兒出錯了,如何更正,上機完後還有總結。就是這樣,我把譚浩強的《C程式設計》一書中的所有例題和習題全部敲到計算機中執行了一遍,打下了C語言紮實的基礎。譚老師的書和課,的確影響了中國多少名程式設計師!
我學了C語言之後,就開始想做點東西了。我用了一個月的時間,用C編寫了一箇中文下拉選單的程式,從UCDOS中的字型檔中提取漢字點陣,然後在圖形模式下“畫”出漢字來,使程式能脫離漢字系統的支援直接顯示漢字。整個程式應該有一兩千行程式碼吧,全部是自己尋找資料,一行行敲進去的。後來,我又編了讀取WPS檔案的程式(當時DOS下打字排版是求伯君的WPS一統天下,Word當時在哪裡我不知道呢!《電腦報》介紹過的求伯君、鮑嶽橋等作為第一代中國傑出程式設計師代表,是我當時崇拜的偶像),我還編寫了一個繪製簡單圖形的小程式,從程式設計除錯的過程中,我得到了程式設計師基本功的最初訓練。我當初沒人教,遇見各種困難只能自己解決,為找出一個bug,晚上睡覺做夢都在程式設計,而現在的一些大學生,程式通不過,馬上問老師,甚至有學生把程式發到我的郵箱,叫我幫他調程式!有的計算機專業學生,學了四年,四年敲過的程式碼總數恐怕不超過2千行!
的確,我當時的水平很低,現在的本科生比我當時強太多了,但至少有一點他們中的許多人不如我,他們不如我勤奮,也不具備我的毅力,我覺得這是現在這批八十年代出生的大學生最缺的東西。
我用一年半的時間基本自學完了計算機專業的主幹課程(除了《編譯原理》,我實在看不懂),1995年我參加了初級程式設計師考試,結果上下午成績加起來有90多分。但96、97我兩次參加程式設計師級考試,雖然我已有不少程式設計實踐,但仍然通不過,現在看起來,這反映出一個事實:我理論基礎實在太差,天資也並不高。直到現在,我仍然痛感我的計算機基礎理論不好,使我難以成為一名電腦科學家,而只能成為一名不錯的軟體工程師。
從95年開始,我的生活開始加速下降,我所在的公司由於被一群我現在稱之為駐蟲與流氓的人給弄得不成樣子,每月連100多元的工資都無法保證,我只得離開了公司,把檔案往人才交流中心一放,就開始了我四年的社會漂浮生活……。
在這四年中,我幹了不下四五種工作:當過推銷員,當過打字員,當過培訓老師,修過電腦,從事售後服務,甚至擺過地攤……,一切的一切,很簡單,就為了能有口飯吃。生活是嚴厲的,不講情面的,我唯一的愛好就是閒下來就拿起我的計算機書來看。當時我大哥說過:你學這些東西有什麼用?能靠它當飯吃?不要驚奇這種觀點,在我們那資訊閉塞的地方,當時有誰能想到計算機技術會有如此大的改變社會的能力?我之所以不懈學習,純粹是為了解脫精神上的困惑,在技術的海洋中忘卻生活的煩惱。我後來有一句名言:何以解憂,唯有電腦。別人當作一句笑話,但卻是我當時的真實寫照。
萬事都有兩面,事情壞到極處,就會向好轉化。又是一個很偶然的事,改變了我的人生軌跡。
1996年,我的一個高中同學楊考上了湖南大學計算機系研究生,請客吃酸菜魚火鍋。在大家喝酒時,楊提了一個問題:請大家說出一個自己最想達到的目標。我的桂中同學大多數都是上的全國重點大學,此時畢業三年了,大家都對社會對生活有了自己的認識,於是就有了各種不同的答案,我當時的回答是:“我希望能有一天開發出一個好的軟體,讓許許多多的人都能用上它。”,這個目標我到現在都沒達到。但當時大家是給我熱烈地鼓勵。楊飯後跟我說,你既然那麼喜歡計算機,為什麼不考研呢?對啊,我為什麼不去試試呢?當天晚上我躺在床上,沒怎麼想就確定了要考研的想法。當時卻怎麼也沒想到,考研之路成了另一條折磨人的不歸路。對我一生的影響深遠……
這就是我早期的學習生涯,深深地體現出中國的時代特色。這段時間我的生活是困苦的,心情是苦悶的,但學習熱情卻是無以倫比的。現在我一個人擁有兩臺奔四電腦,隨時可上網際網路獲取豐富的資源,反而在技術上難有寸進了。越來越覺得古語說得好:
艱難困苦,玉汝於成!
這是生活的真理!
謙遜基於力量,高傲基於無能。
程式設計魔方我們一起努力!
從此(決定考研)邁上了一條對我來說到目前為止最難走的路,是一個人生的煉獄。
決定考研之後,我就去買了相關資料,取出塵封己久差點當廢紙賣掉的大學課本,又開始了學生生涯。
考哪兒的大學?是我首先要考慮的問題。當時還有另一個高中同學也準備考研,也是計算機,他報了廣西師範大學的研究生。
父母則勸我也考廣西師大或我的母校廣西大學的研究生,說那好考得多,也可以託人走走關係。但我這人很犟,我在西大混了4年,什麼也沒學到,我還去那兒幹什麼?我想起了高中時的夢想,決定直接考北京的高校。當然,北大清華是想都不敢想的,社會上工作幾年,我畢竟清楚自己幾斤幾兩,但北京幾十所高校,難道一所也不行?我不能再聽父母的話了,我要走自己的路,自己的命運自己負責,於是我堅持要考北京的學校。
知道這件事的朋友都對我表示驚奇,工作了4年,學校裡的知識都忘得差不多了,還想直接考北京的學校,難度之大,相信不少人都認為我成功的希望很渺茫。事實證明,他們的看法是對的,但不全對,因為世上本就沒有絕對的事情。
這時,我還在一傢俬營公司裡打工,於是,白天上班,晚上就挑燈夜戰,每晚不到12點不休息。
經過半年的複習,我參加了1997年元月的全國研究生入學考試,成績出來,我專業課沒問題,但數學才得了44分,毫無疑問,名落孫山。
這是一個打擊,但對我並沒有太大的影響。
這時,我小時候住在隔壁的阿姨來到桂林,她說她女兒(我小時的玩伴,也姓楊)去年就考研了,但也同樣沒過,她原先在北京服裝學院讀本科,畢業分回廣西柳州一個國企裡,工作一年之後考研,沒考上之後,她就把工作給辭了,專門跑到北京同學家中複習一年。97年考研她成功了。
得知這個訊息,對我是個很大的鼓勵。我想,她一個比我小的女孩都能成功,我為什麼不行?我想辦法與她聯絡上了,在後來的考研歲月中,她給了我極大的幫助,幫我買資料,幫我問成績,寫信給我,鼓勵我堅持下去……
受人滴水之恩,當湧泉以報。
世上的人大都只會“錦上添花”,但只有“雪中送炭”才是最寶貴的。她就是我的“雪中送炭”人,她研究生畢業後嫁到青島去了,斷了音訊,但我心中永遠記住了她的幫助。我決定,從今往後,如果我有能力幫助別人的,就一定要幫助人。這世界充滿了太多不好的東西,我應該努力往其中添一點好的東西,哪怕顯得多麼微不足道。
1. 中關村印象
剛好,1997年我大哥在北京中央美院進修美術,我決定明年繼續考研,於是辭去了在一傢俬營電腦公司的工作,於6月底來到了北京,住進了大哥的宿舍。6月到7月,我在北航學計算機維修,7月參加陳文燈老師的考研班,一直呆到9月中旬,我才回到桂林。
中央美院當時搬到了北京西北角的西八間房,我和大哥一起住在學生宿舍中。認識了不少來自全國各地的搞美術的大哥同學,我很喜歡和他們這些搞藝術的人在一起,看他們色彩斑斕,形象逼真的油畫,和設計精巧的一些手工作品,是一種美的體驗。與我們工科人相比,他們是另一種思維方式。
7月份,大哥要回桂林了。在回桂林前,我幫他和他的同學們去中關村電子市場一口氣買了三臺電腦,當時最紅火的電子市場是中關村電子市場,就是現在北大太平洋電腦商場所在的地方。那時電子市場裡熙熙攘攘,如此的紅火,是我在廣西所從未見到的也從未想到的。在大街上隨處可見抱著臺印表機,拎著個掃描器的人,把電腦配件當成白菜一樣賣,這就是我對聞名全國的“中關村電子一條街”的最初印象。
我到了中關村,見到了那些我非常熟悉的公司:北大方正,金山WPS,江民科技……,見到了北京書堆積如山的書店,感嘆這裡真是一個知識的海洋,覺得親身感受到了中國IT業的脈博。
大哥回去後,我一個人留在北京,騎著輛破自行車逛了中國最有名的大學:北大和清華,北大風景如畫的未名湖上處處荷葉飄香,清華平平展展的草坪展示一種平實坦蕩的心胸。一牆之隔,校園內外,就是兩種不同氣氛,無名無狀,卻讓我這個二十多歲沒出過廣西的土包子感受深刻。
2. “瘋狂”的考研班
我參加的是暑期文登學校的考研班。中央財經大學那棟破敗不堪的學四樓裡,住滿了來自全國各地的學生,和我住在一起的,一個是湖北的,一個是東北的,一個四川的,為了同一個目的,大家從天南地北聚到了一起,我當時真感到了一種“家”的感覺,原來這世界有這麼多同路人,我不過是中國十幾萬考生中一名不起眼的“老生”罷了,但還不算是“范進”。
考研班的日子是“瘋狂學習”的日子。
記得我們需要到北方交通大學的大禮堂去聽人大老師索愛群的政治課,一千多人的大禮堂被擠得滿滿的,連過道上都坐了人。在老師的講臺前堆滿了各式各樣的錄音機,足有一百多部,來自全國各地的莘薺學子拿著一瓶礦泉水,在北京最熱的7月,揮汗如雨地在記筆記!這段日子,我用去了7個筆記本!這種氣氛,我以前在廣西是從未見過的。我本來以為我已經夠努力勤奮的了,到北京考研班一看,根本就不算什麼。
陳文燈老師教的數學給我留下了最為深刻的印象,他上課不用講稿,所有的例題全都記在他的腦裡,隨手就可以寫出來,絲毫不差,還總結出一整套解題方法,讓我大開眼界。我是見著了,原來一個人對本職工作可以精熟到這種地步!後面我還會談到另一位老教授對職業可貴可敬的敬業精神,不敬業,就不是一個合格的勞動者。
我一直呆到身上沒錢了才離開北京。這三個月花完了我工作幾年的所有積蓄,卻對我的影響是巨大的,中國什麼地方最適合學習?最適合學計算機?在我看來,只有北京!
我下定決心,一定要到北京來學習計算機技術。
3. 差點跳樓的致命打擊
9月中旬我回到了桂林,開始準備第二年的考研。
但生活是不講情面的,我想當然地認為經過了北京名師的指點,我去年就是數學沒過,今年應該沒問題了,但事實並不如此。
1998年的數學試題,突然有了一次很大的變動,這次數學考試特別難,題量還特別大,全國及格率僅7%,平均分為30多分。我現在將這次考試試題稱之為“變態”的題目,出題的那幫呆在空調房裡的教授們挖空心思出出來的題目,可把我給害慘了。我自認為心理素質夠強了,但因為這場考試關係命運太大,在考場上我的手都是抖的,幾乎暈倒,一道道的大題空在那兒做不出來,都象是在不斷地譏笑我不自量力,又象是一張張面無血色的血盆大口,一張口就把我給吞下去了,連骨頭渣子都不吐。
考完數學,我就知道我今年沒戲了。原來一個考場有幾十位考生,考完數學之後只剩下不到三分之一的人。我堅持著把後面的課目考完。在那種明知無望但僅憑一種信念支撐著要堅持到底的時刻,我真不知道當時是怎麼挨完後面的專業課考試的。
3月,成績下來了,我的數學成績讓我差點去跳灕江了---13分!我從小學習勤奮努力,從沒拿過這麼低的分數。真是破紀錄!當時真是灰心到了極點,準備放棄考研,到廣東打工,找個地方浪跡天涯,自生自滅去,實在沒臉在家呆了。
這個時候,我大哥勸住了我:你都考了兩次了,我看來你就是數學差,其它課你都過線了,專業課還都是80多分,為什麼不繼續努力?集中精力把數學搞好就可以了。你現在放棄,就前功盡棄!
我這人笨,從小學學東西就慢,這是一大弱點。但上天是公平的,他給你一個弱點的同時,也一定提供了讓你克服這個弱點的方法。
我笨,但我好強,但我勤奮,但我堅持,人一之,我十之,笨鳥先飛,古已有之,古人可以做到,我為什麼就不能做到?這事就這麼收場?我不服,不甘心!於是,我下定決心再拼一次。
我現在沒有工作,也不想再去找工作了,住在家中,就與堆積如山的書幹上了。在關鍵時刻,年邁的父母無條件地支援了我,他們默默地承擔了一切,讓我有飯吃,給我一個安靜的環境,讓我去實現我的夢想。
我深深感受到父母的愛是多麼的無條件!我一個二十五六的大小夥子,呆在家中吃閒飯,還讓父母為我的前途操心,那種心靈的煎熬,現在想起來都有種想哭的感覺。男兒有淚不輕彈,只因未到傷心處!在此,我要深情地對我的父母說:兒子絕不會忘記你們的恩情,唯望兩老保重身體,一定要等到看到我過上好日子的時光。
4. 反思,走自己的路!
考研失敗,我反覆想,為什麼我聽了陳文燈傳授的做題祕訣,反而考得更差了?別人為什麼用陳老師的方法考出了好成績?看來,每個人的具體情況不同,不存在可以讓人暴長功力的“武林密笈”,從這件事中我學到,決不能迷信權威,迷信理論。後來我對許多現象與潮流如CMM熱、設計模式、軟體工程等理論都持有不同的看法,認為把西方的東西原樣照搬是行不通的,不經過自己的大腦獨立地思索,不經過實踐的檢驗,不要相信任何東西!
從98年到99年1月,我斷絕了一切外部聯絡,把自己關在了家中。我父母的工作單位是一個療養院,全院加起來也就一兩百號人,後山就是一個森林公園,空氣清新,林木繁茂,大院裡還有一個小山(是真山,不是假山,桂林的這樣象竹筍似的山多了),山上修了個亭子,平時少有人來,真是一個閉門修行的好地方。
我每天到小山亭子上去學英語、背政治,桂林四季長青,我周圍是青山綠竹,微風一過,樹葉沙沙做響,我就在這裡學起了戰國時的蘇秦。從春學到夏,再從夏學到冬,苦苦學了一年,這一年裡,使我的心志得到了極大的鍛鍊,困難更加難以擊倒我。後來我境況轉好,生活中很多人覺得受不了的挫折,在我看來都不過是小菜一碟罷了。
桂林多奇山,秀美蒼翠,風景四季如畫。每當我學累的時候,總是看著這美麗的風景,讚歎祖國江山如畫,感觸人生之渺小,命運之無常!
大哥從北京帶回了一臺電腦,奔騰166、4.2G的昆騰大腳硬碟,當時不錯的配置,把它送給了我用。我渴望了多久的東西終於到手了,我終於可以無限制地使用計算機了!我把電腦放在床前,伴它入眠。
我有時半夜會突然驚醒,想著目前的困境,渾身會出一身冷汗。電腦沉默不語,在一旁安靜地陪著我。我看著那藍幽幽的螢幕,心情非常複雜。
有了電腦也難過,我得抑制住自己強烈地想探索軟體技術的慾望,強制自己把主要精力放在考研上。
整個考研英語大綱有5300多個單詞,為了背下它們,我用VB編了一個背單詞的小軟體,每次可以分別顯示中文或英文,並可以區分哪些單詞沒記住,下次複習。所有單詞我都是用鍵盤一個字母一個字母地敲入的,每天早上一起床,先對著電腦背它半個小時。到考研結束,我一看,資料庫中已有了兩千多個單詞。
這一年以來,我真是玩命,什麼考研理論我都不信了,我就託人買了國家教委出的幾本考試分析,就專門研究考研試題,我要找出適合我自己的方法來。
考研數學考試分析500多頁的書,被我翻來覆去地將歷年考試試題做了三遍。黨的十五大報告我至少背了一百多遍,我稱之為背“語錄”,真稱得上是“倒背如流”,考政治時我把大段大段的十五大報告文字抄上去,居然得了75分!
發黃的本科高等數學和概率與數理統計,以及藍色封皮的線性代數課本,都被我翻得不成樣子。我覺得我就是基礎太差,在這種基礎之上,講什麼做題方法都是空中樓閣,一定要抓住“三基”(基本知識、基本方法與基本原理)。但我不得不悲哀地指出,我這些努力並未使我的數學能力有所提高,數學並不是這樣學的,數學思維絕不是這樣培養的。怎樣學數學?得去問華羅庚與陳景潤等數學大師!我至今數學還是不行。也希望有這方面經驗的人能夠教我,讓我補上數學這一課。
生活總算給了我一次微笑。1999年考研,我數學得了60分,終於邁進了大學的門檻,可以打起揹包上北京了。
我這人比較笨,不善於找到達到目標的最佳路線,但憑著牛勁鑽下去,硬給我鑽出了一條路。這條路能走通還帶有一些僥倖的色彩,大家想必比我聰明得多,一定能找到更好的路,用更經濟更聰明的辦法達到目的,這是一種大智慧,是我所沒有的。
這段經歷對我個人的思想品質的影響是深遠的。為什麼這麼說?為了考政治,我深入全面地瞭解了中國近現代史,我去盜版碟市場買了不少存有歷史資料的光碟,從多方面來看中國歷史,凡電視中有關歷史的節目,我必看。我在這裡尤其想說的是一個鉅著——《老毛選集》!經歷過文革的每個家庭,哪家沒有毛選?我家就有不止一套。老毛選集一到四卷,發黃的書被我在這段時間通讀了一遍。其中的經典文章更是被我看了一遍又一遍,趕上金庸的《射鵰英雄傳》了。越讀越覺得老毛之人真是數百年才出一人的大牛人,他的《湖南農**動考察報告》、《論持久戰》等著作,其中體現出來的深刻洞察力與對中國國情的深入把握,其博大的心胸,為國為民的精神真叫我震撼!最終奪了天下,實在是中國社會的必然,當時她集中了多少中國最出色最優秀的人才,再加上老毛這種不世出的大牛人領導,老蔣真與他不是一個水準的,想與老毛逐鹿中原,必敗無疑!我成了老毛的崇拜者,但絕不是盲從者。
說起來大家可能不信,我從毛選中得到了許多精神上的營養,更加樂觀了。毛選,真是中國人巨大的精神財富!近年來有不少憤青指著老毛晚年的失誤全盤否定老毛,在我看來真是狂妄無知,他們有幾個真正瞭解老毛?有幾個真正客觀地看過毛選?有幾個有資格對老毛做出評價? 把他們放回老毛生存的那個民族危亡的時代,他們還會有這麼多屁放?!說不定最先當漢奸的就是他們。呵呵,不好意思,說粗話了。
閒話少說,回到正題。
回顧這段經歷,我只能說是“具有中國特色的考研之路”。我感嘆,中國的考試就是扼殺人性的東西,高考與考研尤其如此。我要是用這種精力去學計算機,一年半的時間,還有什麼技術學不到手?但我沒辦法,現實逼著我去考這種我並不想考的試。中國考試之難我看全世界也不多見,我想,每年全國還有那麼多的學生要參加這種考試,大量的人力物力與年青人的精力和時間都耗費在考試上了,而考試的內容與實際脫離那麼遠,真的有助於人才的脫穎而出?我看反倒是形成了一種應試教育,扼殺了年青人本來所具有的創造性,中國現在為什麼出不了大師級的人物,應該反思中國的教育制度。
1999年4月,我來到北京參加研究生複試。複試完了之後就不回去了,我拿著一張光碟,裡面刻著我用VB和Authorware 3.5編的一個Cool 3D的教學軟體,到處參加招聘會,開始了在北京的打工生涯。
說句實話,我心中真是一點底也沒有。北京人才濟濟,我一個三流大學的畢業生,又不是計算機專業的,有人要我嗎?
我在北京無依無靠,沒有任何一個親戚在北京,住成了大問題。北京這地方,錢太不經花,生活費用太高,我四處尋找便宜的地方住。後來,我在北京化工大學對面的招待所中租了個床位,每晚20元,地下室。這個招待所的地下室非常大,每天回去的時候,都要走過長長的曲曲折折的通道,加上那昏黃的燈泡,每次我都有走進了希特勒地堡的感覺。地下室裡潮溼陰暗,不見天日。地下室裡人員很雜,什麼人都有,永遠沒有一種安全的感覺,所幸的是我也是個窮光蛋,光腳的還怕穿鞋的?別人能呆我也能呆,唯一讓我擔心的是錢,沒錢,在北京連流落街頭都不夠格,立馬被收容去昌平篩沙。呵呵,我沒這種經歷,這是當時住一塊的一個外地要考北京中醫藥大學的博士生說的(我倆居然住到了一個屋裡,大家都沒錢,只能擠地下室,只是他老兄晚上打呼,我可真受了不少罪)。
日子一天天過去,袋裡的錢一天天少了,但工作還是沒著落,心中越來越慌,除去學費,來京時父母給我2000元,大哥資助我的1000元就是我當時的全部資金(3000元在北京能呆多久?!)。我當時訂了個計劃,留下500元保底,打死都不能動,要靠它作路費回家的。我當時說,一定得找到一家公司,再少的錢都幹,只要有口飯吃,有張床讓我睡我就滿足了。
我一共應聘了四五家公司,最具傳奇色彩的是到西單附近一家公司的應聘經歷。那時,我帶去了我的作品,公司專案經理要看,於是我給他們演示,很奇怪,程式一開啟就當機,一連兩臺電腦都一樣,末了,兩臺電腦都啟動不起來了。用瑞星一查,CIH病毒——那天正是4月26日!於是,CIH破壞了電腦主機板的同時,也無情地摧毀了我的就業機會。還算老闆可憐我,沒要我賠。其實我當時快到山窮水盡的地步了,真要我出錢,我可能連家都回不了啦。陳盈豪(CIH病毒的作者),你小子這麼的聰明做什麼不行,偏要去做病毒,害人害已,弄得我連個飯碗也找不到,晚上回“希特勒地堡”,把這小子罵了無數次!
總算天無絕人之路,在我數著最後還剩餘600元錢的時候,終於有一家公司要我了,做中小學教育軟體,月薪1600。幹了兩星期,又給我在公司的倉庫挪開貨物,搭了個床位,我就在那住下了,慶幸再也不用到“希特勒地堡”裡當衝鋒隊員了。每天下班後,我就睡在林立的大紙箱之中,如果來個地震,呵呵,我就埋在紙箱中了,休想爬得出來!
我幹得非常努力,第一個月工資開出來,扣掉個人所得稅,我拿了1500多元。你們不知道我拿到第一筆工資的感覺!這錢在很多人眼裡簡直不算錢,但對於一個沒工作近兩年,工作也一個月收入不到200的窮小子而言,就象陳佩斯小品中所演的:“我王老五活了一輩子,還從沒見過這麼多錢啊!”。好笑嗎?我一點也不覺得好笑。我只是心酸,我到了28歲才可以用自己的知識與技能養活自己,再不用依靠父母和兄長的資助,才真正完全用自己的力量在社會上站起來,一個沒有經濟自立能力的人,只能是個不成熟的人,一個躺在父母身上的人,不是一個真正的男子漢!我當這樣的孬種當了28年!
我找到工作後向家裡寫過一封長信,信中講了我對父母平時不好意思說的很多心裡話,當時,我父親說,母親接到信都哭了。我剛拿到工資,馬上打了個電話回家裡告訴母親,以緩解他們的焦慮,畢竟兒行千里母擔心啊!父母有退休金,一再表示不需要我贍養,而我再這樣不要臉下去,我還是人嗎?我就是從那時候開始,下定決心,從今往後,再不向家中要一分錢!今後三年讀書和生活的費用我一定要用自己的勞動來獲取。
金錢帶給我的激動就是在那段時間,溫飽問題解決之後,金錢對我的誘惑就再沒有了,哪怕讓我一個月賺一萬,給套房子給我,也不可能再給我帶來幸福的感覺了,錢是重要的,但不能成為它的奴隸,家中不需要我負擔,我一個人有吃有喝,幹著我喜歡的工作,足矣!
我在那公司一直幹到九月學校開學為止。我走的那一天,公司居然還開了個歡送宴會,老闆封了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程式設計師的三個境界:
(1) 所有程式碼都只放在窗體檔案中的,屬於菜鳥級,他們只會從皮膚上拖控制元件,設定屬性,然後再給事件編碼。
(2) 工程中有bas模組的,屬於中間級,他們已意識到有大量的程式碼是重複出現的,應該將其抽取出來作為公用模組。
(3) 工程中有cls模組的,屬於高手,他們已掌握了物件導向的思想,並能應用這種思想來解決實際問題。
正是這次開發經歷,促使我反思:到底如何開發軟體?我個人可以用VB完成各種各樣的功能,為什麼湊在一起就會那麼困難?更正一個bug為何那麼難?為什麼一個看似簡單的軟體,要拖半年的時間還看不到結束的日子?
九月,研究生要開題,我自擬了個課題:軟體體系結構設計。我決心弄明白,好軟體到底是怎麼做出來的。
我放下了VB,開始研究C++,原來學過VC,但沒學會,就直接從C++ Builder入手。Borland公司的VCL類庫讓我大為歎服,很快就迷上了它,為此連帶學了Delphi,並參與了一個Delphi專案。給我真正震撼的是《設計模式》這本書,看了才知道,原來好軟體是這麼設計出來的!在此,我強烈推薦所有有一定程式設計經驗的程式設計師一定要看這本書!
一邊學習理論,一邊可沒忘記我沒經濟來源,於是又四處打工,接一些小專案與小模組來賺些生活費,國內一家橫跨家電與軟體的著名公司是我打工期間去過的最大的公司。但無論什麼公司,都給我一種感覺——爛!公司中充滿了對員工的剝削與不尊重,對軟體開發這一事物的錯誤認識,管理混亂。
我沒機會去外企,技術水平不到,別人不要我 ?,但我所見到的軟體公司,我敢說沒一家能做出世界一流的軟體!
我上的研究生課程也讓我失望,整個就是本科教育的再版。經過高考與考研兩次重大考試,我對考試已是深惡痛絕,但讀研期間仍要考試,而且是閉卷!我就不知道我去背那些條文對我的研究與學習有何幫助?2000年7月當我考完最後一門,終於大鬆一口氣,我終於擺脫了考試的壓迫,可以在剩餘的一年半中真正搜尋我渴望已久的軟體技術了。這年,我29歲。
悲哀嗎?一箇中國的程式設計師要到29歲才可以真正自由地學習想學的東西!
我開始研究物件導向理論,看了大量的書,每天都在實驗室學習到深夜12點,天天上網,CSDN成了我最常去的網站。
隨著我對軟體技術的瞭解越多,就越深刻地感到國內與國外技術水平的差異是如此的巨大,巨大得甚至有讓人絕望的感覺。同時,在北京這個中國軟體人才最集中的地方,我也見到了許多牛人,一個清華的本科學生,做程式設計師可以拿到一個月12000元的工資,一個北大的計算機系研究生,一畢業就到外企,一個月一萬多收入,每年發16個月工資!幹了兩年就開了自己的公司。我看到了一個北方交大的本科生作品,在半年的業餘時間裡,用Delphi寫了十幾萬行程式碼,他甚至在程式碼中嵌入彙編,自行編寫資料存取引擎讀寫Foxpro,速度超快!軟體中有一個計算公式解析模組,他用編譯原理理論居然做了一個小型的公式解析器,就象C++編譯器檢查C++程式一樣,不僅可以判斷是否公式正確,而且給出的出錯資訊還相當準確!其基本功之紮實,水平之高讓我望塵莫及!中國優秀的人才真還是不少的!在精英集聚的北京,面對著博大精深的軟體科學,我深感自身的渺小。
但我畢竟是靠自己奮鬥出來的,我並不自卑,這世界需要牛人,同樣需要大批合格的勞動者,我成為不了牛人,但我作一名程式設計師是合格的。
時間過得飛快,一年半根本就不算時間,馬上就要畢業了,學習的成績如何,要到社會上去競爭了,讓社會考場來決定你是否及格。
98級的研究生是IT業最後輝煌的回光反照。當時,各大公司都發了瘋似的要人,象華為,當時是來者不拒。計算機專業的研究生是一搶而光,本科生也供不應求。2001年畢業的我的師兄師姐們,平均每個人手頭都至少有兩三個offer,談的工資沒有低於每月6000的,許多人去了外企,工資在8000~10000每月的也有。真是畢業生的黃金時間。
但好景不常在,911事件我看來好象成了分水嶺,911之後,整個IT業急剎車,就業形勢急轉直下,各大公司都在消化去年吃得過飽的胃口,我形容是大家都吃壞了胃,再也不可能有我師兄師姐們的風光了。雖然時間相隔僅大半年。
從10月開始,11月和12月,我幾乎是在招聘會與公共汽車上渡過的,北京東南西北地去面試,上午在上地,下午可能就要跑到朝陽區,疲於奔命。
在找工作過程中,我良好的心理素質與豐富的程式設計經驗起到了很大的作用,並沒有遇到很大的困難,就先後有幾家公司表示要我。
其中我想說的有兩家公司。
一家是台灣公司,應該說他們做得是不錯的,但我非常反感他們那種自認為高於大陸人的那種優越感,而且待遇也不高。面試之後,回來感覺很不好。
我想:我們大陸確實是不如台灣發達,難怪別人看不起我們,這世界勢利得很,社會如此,國家亦然。但我中華960萬平方公里的國土,13億人口,難道要依靠一個小小的島嶼來撐門面?難道除了台灣公司,我就無處可去了?雖然改變不了什麼,但我決定絕不去臺資和日資的公司工作(日本人我更不喜歡,但我認為他們做事實在優秀,我們一定要向日本人學習)!在這種公司呆著,不爽!同時,我們的確也得爭氣些,這世界只尊重強者。
另一家是個很不錯的民族軟體企業,想要我,其老總專門找我去面談了一次,希望我能到他的公司工作。這位老總白手起家,能在五六年的時間內由幾個人發展到300多人,當時,是中國這個領域軟體市場佔有率最高的公司,我非常佩服,他為人也很好,並表示可以給我每月比其他研究生多加1000元工資,而且希望鍛鍊一兩年之後我能夠帶領一個團隊來開發產品,並負擔我畢業所需交納的各種費用。在就業不景氣的2002年,對我一個30歲的技術水平有限的老程式設計師如此看重,真叫我感動。雖然我最後還是沒去,但我仍然對這個公司充滿了好感。一個軟體企業最重要的是什麼?是對人的尊重,沒有這點,可以斷定,這個公司長不大。
我為什麼沒去軟體公司?放棄有可能在幾年之後年薪突破10萬的收入?是因為我已有了更想做的事,我想當老師!
我自己是從自學的路上走過來的,其中的艱辛歷歷在目,無人指點,我走了多少彎路?中國還有多少是象我這樣的年輕人無人指點的?我幸運能爬出來了,因為我至少還能有飯吃,比我條件更差的,比如農村的孩子,可能就被生活的壓力所淹沒了。我個人的力量很微弱,技術也有限,但我自認為至少是一名合格的程式設計師,如果能培養出一大批達到我的水平的學生,他們畢業後成為合格的程式設計師,中國軟體的根基就會更紮實,如果更能有一批遠遠超過我水平的學生出來,中國軟體就有希望了。軟體是什麼?軟體以人為本!
人生追求什麼?金錢?我很缺錢,但不可能把金錢作為我的目標,我希望我能夠成為一個對社會有所貢獻的人,能夠獲得心靈的充實,於是,我選擇了留校。
2002年下半年,我參加了北京高校青年教師崗前培訓。一位杜教授的兩堂課讓我印象深刻,其中兩句話讓我深深震動:
第一句話:我是一個教書匠,教書匠好啊,好就好在“匠心獨運”!
第二句話:做什麼工作都要達到變魔術的境界!
是的,作為一名教師,就必須起到一個傳聲筒與放大器的作用,將人類最聰明的人探索世界所得到的知識予以拓寬發展,以便讓更多的人能夠掌握這些知識並進而應用於實踐,從而推動人類的不斷進步。
作為一名計算機專業的教師,就要努力把先進的計算機技術以儘可能高的效率傳授給廣大的學生,引導他們直接面對真實的軟體世界,而不是向他們硬灌各種各樣的理論知識,強迫他們去死記硬背以應付考試。
我是一個小人物,才低學淺,但我真的認為高校計算機教育存在嚴重的問題。我在打工期間的開發經歷,以及閱讀國外相關資料的時候,發現學校中教的和社會上用的差得太遠!都已經是什麼時代了,許多大學還設立Foxpro課程,難道就不能直接用現代主流的資料庫如Oracle,SQL Server,哪怕是Access也好,來講授資料庫知識?還有所謂的計算機等級考試,呵呵,過了三級學生的我見過不少,但他們真正對軟體,對計算機又理解多少?
在中國甚至於升職稱也要考計算機,我看了一本職稱計算機考試教材,裡面幾乎原樣照搬計算機原理課程中的相關章節,弄得我給搞藝術的大嫂講了一個小時的二進位制與八進位制、十六進位制的轉換方法,她還是弄不太清。我都洩氣了,對啊,他們搞藝術的,有必要去分清二進位制的10與十進位制的2有何分別嗎?他們八輩子也用不上。但是考試用得上,呵呵,又是中國特色。
拿C++來說,我講過C++課,許多的國內教材對C++語法下了大功夫,卻對體現了C++精華的STL隻字不提,對程式碼背後所體現的軟體開發思想與方法更是視而不見,我用C++也編過不少程式了,說句實話,我用到的特性不到C++的三分之一!於是就出現了這種怪現象,許多學生考試可以拿八九十分,給他一個簡單的實際問題他卻不知如何下手!
還有UML,現在好象很火的樣子,我們讀研時就開了這門課,講句實話,當時這門課我就沒聽懂,可後來我嘗試著用C++用物件導向的方法來程式設計序,然後,由程式碼倒推回UML類圖,一下子就明白了,原來UML只不過是一種描述物件導向系統的符號罷了,如果學生沒進行過真正的OOP,那就是為了學UML而學UML,根本就本末倒置。
還有軟體工程,我的感覺,一個人如果沒寫過一萬行以上的程式,他看軟體工程書就同看政治書差不多,每句都對,呵呵,就不知道為什麼對。我完成了那個幾萬行的VB程式之後,再回過頭看看理論,真是句句是真理!每個理論背後都是大量實踐經驗的總結。
回想我做軟體的體會,我發現所有的知識都是一個完整的體系,根本就無法區分哪些知識是本科的,哪些知識是研究生課程。於是,一種想法產生了,我主講程式語言類的課程,那我就直接以真實的軟體開發過程為主線,實踐中需要什麼我就講什麼。講C++,我就拋開了指定的教材,C++我講了STL,我講了OOAD,兩者我都講了用Rose進行雙向工程,引導學生去學UML,一開始就用UML去描述自己開發的程式,何必浪費大量的時間去學結構化的程式設計方法?
我現在簡直成了物件導向技術的佈道者,我下學期即將開設OOAD基礎選修課,從實際專案中抽取典型的案例,講UML,講Rose,講設計模式,講軟體體系結構,例子程式碼橫跨C++和.NET下的開發語言(C#和VB.NET),這對於我一個技術水平有限公司的董事長而言,實在有點不自量力,我鼻子上才插上幾根蔥,就想裝大象?但我想,如果我能成功地激發出哪怕1%的學生的興趣,能引導他們走向我認為是正確的方向,能啟發他們思考,能直接面向真實的軟體開發活動而不是學校的考試,就是我的成績。我現在正在看引進的原版書籍——《設計模式解析》,時時擊節讚歎!《設計模式》經典但難懂難用,而《解析》一書的兩位作者既有豐富的從業經驗,又對OOAD進行了深入的思索,真知灼見時時展露於書中,我現在剛看了這本書的80%,基本上可以用一個成語來描述這部書:深入淺出!
要做到深入淺出談何容易!只有同時具備技術專家與文學作家素質的人才能做到!
反觀我們國內的大量教材,還有大量的垃圾論文(包括碩士、博士的,本科的就算了,我看絕大部分根本不能稱之為論文),全都是“淺入深出”,作者自己都未必明白,就東拼西湊,擺出個樣子嚇人。本來完全可以用大白話三言兩語講清楚讓人明白的道理,有人專門要繞一大圈,專挑用高深的數學公式來表達,唯恐別人容易理解,顯得他水平不高!呵呵,什麼東西一沾上“數學”,立馬身價百倍。我就聽過一個北師大的一個在讀博士說過:如果一篇博士論文中沒有一個數學公式,根本就不算是博士論文。這句話對不對,大家可以多思索。我數學不好,沒資格討論數學,我的直覺:數學是工具,但如果為了發表論文等目的而故弄玄虛,為數學而數學,是不合道理的。中國的學術水平與現狀,大家都心知肚明,不用我廢話了。
現在每年都畢業大批的計算機專業學生,可其中真正具備紮實根基的可以很快勝任工作的我看只有5%(95%的學生不要扁我,不同意就當我在說胡話,我很瘦的,一扁就沒了?)。多年以來,我國高校計算機教育是按照電腦科學研究者來培養的,可事實上,有多少學生能從事計算機方面研究的能力?我看應分流,80%的學生按工程師方向來培養,20%的學生按研究者方向來培養,而且應大幅減少必修課的數量,計算機領域太深太廣,樣樣都想教給學生,反而成了夾生飯,一個想從事硬體設計的學生和一個想從事軟體開發的學生,能給他們一樣的飯吃嗎?學校應提供各種條件和資源去引導學生,激發學生的創造性與主動探索性,讓他們去嘗試,去發現自己的長處,最終找到最適合自己的發展方向。不這樣做,中國軟體後繼乏人,沒希望。
2002年下半年,我和一個朋友去了北京郊區的一家雜誌社,看到的情形讓我震驚:在資訊產業最發達的北京,這家雜誌社還用人工查對雜誌訂單和款單,看著那按省來登記的幾大本厚厚的客戶登記本,工作人員需要手工來在其中查詢相應的資訊。這樣的工作效率,這樣的行業資訊化水平!北京如此,全國又如何?
從這件事上,我看到了中國軟體業的另一方面。一方面我們沒有核心技術,另一方面,已有的技術又根本沒推廣沒用好。追蹤世界先進水平,對於我等這種水平的人來說,確實勉為其難,但將已有的技術用於解決實際問題,卻是我們可以做的。如果中國各行各業都真正能通過進行資訊化而提高生產效益,那中國不就從根本上強大起來了嗎(象印度,IT一枝獨秀,其他行業沒有起色,我稱之為跛足的國家,絕不能成為世界強國)?在紮實的社會基礎之上,軟體業不就有了更大的市場與發展潛力?中國許多行業的資訊化水平非常低,而且中國地域廣大,發展非常不平衡,有些地方資訊化水平甚至為0!努力推動行業資訊化,是我們這一代軟體開發者的責任!而追趕國外先進水平,恐怕就不是一代兩代程式設計師可以達到目標的,需要長期的努力。作為一名軟體開發者,只能腳踏實地,哪怕你只做一個小小的MIS產品,也要盡力把它做好來。
於是,我開始了期刊發行系統的開發,這完全是自發的,沒有任何資金投入,只有一種熱情在支撐。我開始選擇C++ Builder開發,做了幾個月,完成了第一個版本,但我發現,我找不到足夠水平的C++程式設計師進行合作開發,而且整個一個exe檔案,在體系結構設計上雖採用了分層分塊的設計方案,但卻是原始碼級別的,要拆分成COM元件難度太大,不是一個人能完成的,於是中途流產。
2003年3月,我開始系統地學習.NET,我吃驚地發現,我原來想在C++中實現的許多功能,比如物件序列化為XML,在.NET中已有現成的類可用,.NET更把OO的功用發揮到了極致,它的混合語言開發,它的反射機制,它的新的自識別的軟體元件,以及強大好用的開發環境Visual Studio,都讓我驚歎微軟對開發者遇到的困難的深入把握,相比用C++開發,至少可以提高1/3的開發效率。於是一個新的想法產生了,我要把以前的產品用.NET重寫,利用.NET強大的元件模型,將設計模式理論推廣應用到元件級別,通過XML和反射機制建立一套可動態裝配的軟體生產流水線,實現象Dell直銷PC那樣的軟體動態裝配直銷。只要建立好靈活可不斷重構的系統架構,配以對業務領域的深入分析,逐步建立功能強大的業務元件倉庫,就可以實現軟體系統的動態裝配。說幹就幹,我用VB.NET重寫了原先用C++編寫的系統,將原先的一個exe變為十幾個dll,而且這些dll還會隨著發展而不斷地分裂,也有可能重新組合,利用refractoring(重構)不斷進化,最終形成一整套完備的行業軟體元件庫。做軟體關鍵因素是變化,只有適應變化的系統才是有生命力的。
我用兩個月的時間大體上弄清了.NET平臺下的主要類庫,然後又用兩個月的時間再次重新實現了期刊發行系統的C++版本的全部功能,到8月份我寫這篇文章之時,第一個產品里程碑已經完成。同樣的,除了需求是由另一個合作者去搜集的之外,幾乎又是全部由我一個人包攬了所有的系統設計及編碼工作!
毫無疑問,我自覺得新系統要比老系統可維護性強得多,真正實現了徹底的全元件化系統開發,計劃再有一個月的介面美化,改正bug,引用多執行緒提高執行效率,優化系統結構,就可以提供給使用者試用了。市場如何,難說難測。
在開發過程中,我再次感到巨大的挑戰,不光是技術上的,更是管理上的。人才是我最頭痛的問題,沒有一流的人才,哪來一流的產品?我們找不到足夠水平的程式設計師一起合作(牛人哪屑於做這樣一個小兒科的產品?)我們要走的路還很長。也許我們開發的產品是失敗的,但我從來就沒指望能用這賺錢,我只是盡一個軟體開發者的責任而己,成敗已不重要!人生不嘗試,怎能體現人活著的價值?
剛好我編的程式告一段落。於是就crazy地敲鍵盤,一鼓作氣地把下篇寫完了。心中有好多話一次就說個痛快。
看得越多,想得越多,我就越困惑,人啊,你活著到底是為了什麼?又整天忙忙碌碌地追求些什麼?我這十年,……我都不知道怎麼說了!
大家自己看吧!
一、辛酸與苦辣
做軟體開發很苦的,技術進步如此神速,每個軟體開發者都得不斷地學習以跟上發展的步伐。有時我常想,何苦呢?我現在在大學中混,怎麼樣不能混下去?為什麼要做這些吃力不討好的事?我投了十年的時間去學習電腦,卻最終發現自己不過中人之資,離頂峰遠之又遠。古語云:三十而立。我今年32了,仍是孤身一人,看看周圍的同學,他們的小孩都差不多上小學了!許多都有了自己的房子和車子,而我到現在才開始申報中級職稱,還擠在集體宿舍中,望著北京高昂的房價而嘆息。現在社會越來越功利了,看著象我這樣的窮光蛋,看著由於長期面對電腦缺少鍛鍊而瘦弱的身軀,又有哪個女孩願意嫁過來受苦?
軟體人的生活很苦,壓力很大,我認為是拿青春賭明天。就是在這種惡劣的開發環境中,還有許多業外人士指手劃腳說程式設計師如何如何,還有太多的公司只顧壓榨程式設計師的勞動,缺乏對程式設計師基本的尊重,怎不叫人寒心?
“三十而衰”,這句本不應該流行的話居然成了中國軟體人員的流行語。中國程式設計師的悲哀!
二、無止境的追求
人類已進入資訊時代,計算機技術幾乎每隔半年就有一次大的變化,我現在又面臨著這樣的抉擇:今後的路如何走?
北大的教師聘任制度的改革一石激起千層浪,說明了中國高校的改革勢在必行。我是歡迎這種變化的,雖然到時我可能會下崗。但人生中總會遇到各種各樣的挑戰,只要你不倒下爬不起來,就有希望。
我想我必須再次讓自己有個提升,要從小事做起,但做小事則絕不能成為最終的目標,也許,不遠的將來,我會走出國門,到世界軟體技術最發達的地區去汲取豐富的養份。今後的路怎麼走,我還在摸索之中。
三、人生無悔
人生年華如水,時光無情。在過去的歲月中,我盡了自己的力,回顧往事,我可以說:過去的事只有遺憾,卻沒有後悔。如果給我再一次選擇職業的機會,我還會再次選擇軟體!
再過10年,到2013年的時候,我也許會再次寫一篇人生的十年回顧,到那時中國的軟體會如何?中國軟體的明天靠你我這些普通人去紮紮實實地去工作來支撐!少發些牢騷,多做些實事,中國軟體才會有光輝的明天。你我共勉!
一個老程式設計師的心理話
完成於 2003-8-3 北京
2003-8-3中午14:33,在我的彈指神功之下,我寫完了這近兩三萬字的個人自訴。一點也不累,回想過去的種種感觸,仍然身在其中。
樓上一位兄弟說想看我的愛情故事,但人生不是小說,沒有什麼浪漫的,我只能讓你失望了,我是孤單地在人生之路上走著,我就是這樣的一個帶著點悲劇色彩的人。
如果有人能有這上中下三篇文章耐心看完,我會謝謝你。如果有人能指點我,我感激你。
好了,我去休息了,生活是一天天過的,不是嗎?