一個老程序員的十年回顧(上)

>>>  技術話題—商業文明的嶄新時代  >>> 簡體     傳統

目錄   

上篇 - 學習人生  一、計算機是什么東西?  二、漫長的理論學習時期  中篇 - 艱難人生  一、第一次考研的失敗  二、“土包子”的北京之行  

下篇 - 實踐人生  一、希特勒地堡與CIH病毒  二、編程生涯  三、畢業求職  四、對教育的反思與教書生涯  五、實踐第一   

結束語 永無止境的軟件之路

  今年(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年,我的一個高中同學楊考上了湖南大學計算機系研究生,請客吃酸菜魚火鍋。在大家喝酒時,楊提了一個問題:請大家說出一個自己最想達到的目標。我的桂中同學大多數都是上的全國重點大學,此時畢業三年了,大家都對社會對生活有了自己的認識,于是就有了各種不同的答案,我當時的回答是:“我希望能有一天開發出一個好的軟件,讓許許多多的人都能用上它。”,這個目標我到現在都沒達到。但當時大家是給我熱烈地鼓勵。楊飯后跟我說,你既然那么喜歡計算機,為什么不考研呢?對啊,我為什么不去試試呢?當天晚上我躺在床上,沒怎么想就確定了要考研的想法。當時卻怎么也沒想到,考研之路成了另一條折磨人的不歸路。對我一生的影響深遠……

  這就是我早期的學習生涯,深深地體現出中國的時代特色。這段時間我的生活是困苦的,心情是苦悶的,但學習熱情卻是無以倫比的。現在我一個人擁有兩臺奔四電腦,隨時可上互聯網獲取豐富的資源,反而在技術上難有寸進了。越來越覺得古語說得好:

  艱難困苦,玉汝于成!

  這是生活的真理!

  謙遜基于力量,高傲基于無能。

  編程魔方我們一起努力!


網載 2012-02-06 21:22:50

[新一篇] 送給程序員:關于性格內向者的10個誤解

[舊一篇] 一個老程序員的十年回顧(中)
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表