天天看點

1.蔣宇東 夢斷計院,為夢前行(連載一)

我是一隻IT小小鳥 推薦序

推薦序I

從2006年開始,我在微軟亞洲研究院參與了實習生教育訓練、新員工招聘與教育訓練等工作;也走訪了十多所大學的計算機系和軟體學院,還在幾個學校講授《軟體工程》這門課。在此期間,有幸結識了不少有想法的大學生朋友。他們中的一些人,就是這本書的作者。

中國的高等教育體系中,大約有10%的學生在學習與IT相關的專業(計算機科學、軟體、MIS等)。這些學生在接受了4~6年左右的教育之後,對這個教育系統有些什麼回報呢?IT教育迫切要改變的做法是什麼?根據我個人的經驗和同學們的回報,下面是一些建議:

和實踐結合。軟體教育離不開實踐,不要太強調閉卷考試,老師一定要讓學生實踐、實習。

做真實的項目和幻想的項目是有很大差別的;

自己從頭寫程式和維護正在使用中的代碼是有很大差別的。

沒有真實的需求,沒有軟體的增量開發,沒有真實的團隊合作,程式設計和軟體工程中的大部分理論都淪為空談。遺憾的是,很多學生就這樣以空對空,也混畢業了。

和各種學科的結合。現在專業分得太細,一個專業清一色背景的學生在一起,和其他年級、其他專業的同學有交流麼?沒有!

希望計算機科學教育能把别的學科的知識聯系起來,比如,和工業設計、使用者體驗設計、藝術設計、自動控制,甚至心理學、商學聯系起來;

希望把計算機有趣的發展曆史放進來,講講圖靈,講講馮o諾依曼,講講各種語言的源頭和流派分支,講講IT企業有趣的真實故事等等。培養學生對這個行業的興趣、熱情和敏感度。提倡互動,介紹同學上相關的論壇、網站,開拓視野。

如何教創新?在學校裡聽上司的報告,會聽到很多次和"創新"相關的詞彙。你會覺得這個學校的上司的确非常想創新。但是另一方面,我聽到一些同學反映教材、教案、教學方法都是幾年甚至十多年不變的老一套,和實際脫節得厲害。

怎麼教創新?除了讓學生打下堅實的專業基礎之外,學校可以做的一件事就是--

允許學生試驗,失敗,再試驗,再失敗。

創新不是公式推導,不是一旦學好例題,就能模仿炮制的解題方法,要給同學們試驗和失敗的機會。有人問,學生失敗了,上課怎麼給分呢?我說,如果同學們能夠認真總結經驗教訓。同樣也可以得到比較好的分數。經驗教訓能幫助他們更好地創新。我的《軟體工程》課程的評分标準大緻是:

1.有創新的想法,并成功實作:優。

2.有創新的想法,失敗了,能認真總結:優。

3.無創新的想法,最多隻能得:良好。

當學校和老師鼓勵同學們沒有後顧之憂地去創新、去失敗的時候,很多同學的動力、熱情會大大增加,從"要我學"、"要我做"變成"我要學"、"我要做"。無論創新成敗與否,同學們都會收獲良多。

作為一個"業界人士",我講了這麼多意見和建議,其實很多老師、學校上司也早就意識到了這些和其他許多問題。提意見總是容易的,難的是盡自己的能力改變現實。這本書裡的很多主人公并沒有停留在提意見或埋怨,而是自己行動起來,改變現狀。作為一個"客座講師",我正在課程中實踐我上面提到的想法,有學生喜歡,也有學生不爽--因為課不好混了。

書中的許多故事常常讓我幻想--如果我們的教育系統能多幫助他們一下,也許會有更多的學生能少走彎路,成為IT業快樂的小小鳥,甚至大鵬鳥!

希望更多學生、老師在看到這本書之後,能一起動手,讓夢想早日成為現實。

鄒欣

研發經理 | 微軟亞洲研究院技術創新中心

2009年8月于北京

推薦序II

博文視點計劃出版一本講述IT人成長經曆的書--《我是一隻IT小小鳥》,邀請了20多名IT行業在職人員、研究所學生和大學生寫一下自己的成長經曆。一滴水中見世界,從這些作者的親身經曆和人生感悟中,可以看到中國IT業的進步,以及在飽受國人責罵中艱難前行的中國IT教育。

在此,我向中國數百萬在校IT相關專業學子推薦此書。

我也算是一隻"IT小小鳥"了。1993年我從廣西大學大學畢業,機緣巧合下從1994年開始自學計算機,并跳槽到IT公司工作,于1999年考入北京理工大學計算機學院讀研。期間四處打工,畢業後留校在計算機學院任教至今,十多年了,始終沒有脫離IT這個圈子。是以,書中各位作者的成長經曆引起我的很多共鳴。

我一直在關注和思索國内軟體技術的應用推廣及IT人才的培養問題。2003年,我在CSDN"程式人生"論壇發表了一篇長長的自傳--《一個普通IT人的十年回顧》,全面回顧與總結了自己這段人生經曆,集中表述我對這一問題的思考,引起了許多學生和IT行業在職人士的強烈共鳴和激烈反響。此文在網絡上被四處轉貼,甚至被轉貼到海外的華人論壇,而我個人也收到近千封郵件。2006年下半年,因自己在計算機軟體教學實踐中受挫,于是在個人部落格上發表《我被中國計算機教育的現實打敗了》一文,出乎意料,這篇其實不過是發牢騷的文章竟也引發了一場激烈的論戰,一場有關計算機學習與計算機教育方式的論戰--"理論先行"還是"實踐第一"。足見大家對這些問題的關注程度。

我曾經是一名"四處打工"的程式員,先後在十多家軟體企業"露過面"、"幹過活",畢業後又當了七年計算機專業的教師,接觸了大量的大學生和研究所學生,在思索與實踐的過程中,漸漸對一些問題有了更深入的認識,而我的一些觀點,在本書所選取的這些"IT小小鳥"的成長經曆中也得到了驗證,我把其中一些要點"過濾"出來,希望能對本書讀者,尤其是那些還在校學習的大學生們有所幫助。

1. 興趣是第一原則。

如果你仔細閱讀本書所有文章,一定會發現一個特點:幾乎所有作者都對計算機技術或IT行業有興趣。這種強烈的興趣,是他們持續努力并最終成長為優秀IT人才的強大推動力。然而很不幸,對于剛進大學且對所學專業并不了解的學生,偏僵化和脫離實際的中國高等教育體制,恰恰在"扼殺"學生對本專業興趣的方面"效率極高"。

在此,我鼓勵所有在校大學生,一定要嘗試發現你的興趣所在、特長所在,然後圍繞這些來确定發展方向,不要盲目從衆和跟風。

另一個在學生中很常見的問題是:"我不知道我的特長在哪裡,我也不知道幹哪個工作最有可能出成績。"其實大學就是讓你思索和解決這個問題的最佳場所之一,你可以放心大膽地進行各種嘗試,在實踐中逐漸了解自己。另外,嘗試從另一個角度思考問題:"我不知道喜歡幹什麼工作,那我知不知道不喜歡幹什麼工作?",去掉你不喜歡的,是不是就接近了你所喜歡的?

讀者不妨仔細分析一下,書中這些IT人最初是如何形成對IT的興趣的,相信一定會有所啟發。

2. 他山之石,可以攻玉,但不可照搬。

本書介紹了許多人的成長經曆,對讀者而言,的确是"他山之石,可以攻玉"。但另一方面,沒有一個人的經曆是可以複制的,因為環境不同,時代不同。更重要的是每個人都是獨一無二的,而且世上萬物時時刻刻都在變化當中。對于青年學生而言,不要看到書中某人做某件事有較大收獲,然後你也想來個原樣照搬。要仔細分析作者的個性、擁有的獨特經曆,再結合他當時所處的環境,弄明白他當時為何會做出某個決定。

寫到這裡,我不禁聯想到中學國文課本中收錄的名篇--《庖丁解牛》中庖丁所說的話:臣之所好者,道也;進乎技矣。

大道無術,其實成功的基本原則是相對穩定的,而走向成功的具體方法則因人因時因地而異。重讀《庖丁解牛》,再看看書中各位作者的人生經曆,是挺有意思的一件事。

3. 軟體技術的學習方法。

前面談到2006年我在CSDN引發的針對軟體技術學習是"理論先行"還是"實踐第一"的論戰。其實大家隻要看看書中諸位作者的成長經曆,能找到幾位是"理論先行"的?大多是"實踐先行",然後在實戰之後,再開始補上"理論"這一基礎。

對于在校學生,我建議在大學低年級(大一或大二)就要開始了解一種主流的軟體開發與運作平台,熟練掌握一種開發工具,這樣你就具備了進行開發實踐的前提。然後,用你所掌握的技能和工具去大量實踐,在實踐中真正地了解和掌握計算機科學相關理論,發現自己在知識和技能上的不足,然後有意識地加以彌補。更重要的,要在實踐中找到一種"感覺"、一個"方向"。讀者不妨分析書中各位作者在這點上是如何做的,相信會有啟發。

近年來,軟體技術在飛速發展,許多技術領域都已發展出一個龐大而複雜的體系,在技術背後,需要大量計算機科學理論作為根基和靈魂。在這種時代背景下,"如何高效地學習軟體技術"成了一個需要嚴肅對待和認真思考的問題。

就軟體技術而言,我所看到的是一張龐大的"知識之網",其結構類似于網際網路中互相連結的網頁,各種知識和技術之間都有直接或間接的聯系。而任何一個人,窮其一生之力,恐怕也隻能掌握這張"大網"中的一小塊區域。

對個人而言,面對客觀存在的"軟體技術大網",大腦中要形成一個"小網"--一個活生生的、可動态擴充的"知識之網"。這個小網是大網的映射,但不是機械的映射,而是建立在個人能動性基礎之上的動态的"知識之網"。能否形成這一知識之網,對學習軟體技術至關重要。

這張"知識小網"上的"節點",就是你掌握的"已經建立了彼此聯系"的具體知識。在學習新知識、培養新技能時,隻要能找到新舊知識的結合點,就可以讓新知識成為新節點,進而擴充你的"知識之網"。

軟體學習的過程,就是你"織網"的過程。如果在學習過程中未能織成這一知識之網,你學到的就隻是零散的、沒多少用的知識,這種知識學再多意義也不大。

我建議讀者仔細看一下書中作者是如何"編織"自己的"知識之網"的,這對讀者構造有個人特色的知識之網是有幫助的。

4.名校效應。

書中作者大多出身"名門",有北大、清華、南大、華工等國内知名院校。一般而言,由于要擠進"名校"大門不易,能進入這裡的人大多已經具有相當的潛力,加上名校一般都具有獨特的學習和科研氛圍,其中的老師和同學大都滿懷理想,積極進取,在這種環境中學習,人就容易成才。

然而,中國優質的教學資源并不多,而且高度集中于少數幾個大城市,大多數學生無緣進入名校,這是客觀事實。

我的大學學業是在一所普通大學完成的,而研究所學生學業則在北理工這樣一所重點大學完成。後來又接觸了一些北京其他重點高校的老師和學生。的确,重點大學與普通高校在學習氛圍和總體環境上是有差異的,我也曾對此大為感慨,但我也要指出,盡管"名校效應"的确存在,但最終起決定作用的還是你自己!

身處"不入流"的普通高校,隻有大專或中專學曆、走自考之路或是非科班出身……這些外在的不利條件都不是決定性的。一個有志氣的人,總能在環境的束縛中,通過默默積聚實力,最終突破環境的限制,登上一個新台階。

也許你付出了很大努力,仍發現由于起點和機遇的不同,有的人遠遠地領先于你,而你看上去"永遠"也無法追上他,達到他的高度。即使這樣,也不要氣餒,你隻要盡力,也就無愧于心了。

我一直非常欣賞這樣一段話:

人生如同打牌,能抓到一手好牌固然是運氣好,但重要的是,你不能靠運氣生活,而要琢磨怎樣把手上這把看上去"不怎麼樣"的牌打好。

事實上,你可以從曆史中找到無數例子,這些一開始并沒有抓到好牌的人最終卻取得很大的成就,做出了重大貢獻。

很多時候,個人所處的生存和發展環境不能自主選擇,由于環境的限制和其他因素的影響,也許别人可以當個架構設計師,而你隻能當個"底層"的普通程式員,這沒有關系,大家在人格上都是平等的,隻不過能力有高低罷了。再普通的工作,如果能做到精益求精,也很了不起,也是一種成功,關鍵是你有沒有這樣一種思想:

即使我"落魄"到在街邊擺攤賣豆漿,也要努力成為這條街上"最好"的"豆漿攤"!

最後,引用莊子《逍遙遊》中那飛揚的文字作為本文結尾:

北冥有魚,其名為鲲。鲲之大,不知其幾千裡也。化而為鳥,其名為鵬。鵬之背,不知其幾千裡也。怒而飛,其翼若垂天之雲。

……

鵬之徙于南冥也,水擊三千裡,抟扶搖而上者九萬裡,去以六月息者也。

希望書中這些"IT小小鳥",最終都能成長為"遨遊于九天之上"的"鲲鵬"。

也希望所有的讀者,都能從書中受益,邁出人生向上的步伐!

金旭亮

北京理工大學計算機學院

2009年8月于北京

蔣宇東 夢斷計院,為夢前行(1)

我和我最後的倔強

握緊雙手絕對不放

下一站是不是天堂

就算失望不能絕望

--五月天《倔強》

引子:我的感悟,我的忏悔

我曾就讀的沈陽航空工業學院的計算機科班(05級),屬于二本院校的一本專業。我的大部分同學都是聯考重點大學的落榜生調劑而來,算是聯考中的失敗者吧。畢業後去了上海一家IT創業公司。

沒有可以向人炫耀的面經,沒有華麗的背景,隻有一點點學習的感悟,和幾分失敗的忏悔,與大家分享。

上篇·夢斷計院

大學生活馬上就要結束了,不禁感歎時光飛逝,物是人非……

剛踏入大學校門的時候,躊躇滿志,雖然那時甚至不知道C語言是什麼東西,但是仍然對自己四年後的形象充滿了無限的憧憬:擁有雄厚的基礎知識、良好的學術能力、出衆的技術才華,是未來的科學棟梁……

如今的現狀卻是:為了得到一個可以糊口的IT民工職位抓破頭皮,在郁悶與苦惱中為獲得一個工作機會而暗自慶幸,至于什麼專心學術、什麼科學棟梁,似乎距離自己越來越遙遠。

直到此刻,我仍然不認為自己的大學生活是完全堕落的,我也不認為自己讀的書是無用的,我更不認為自己沒有學習計算機科學的資質,那麼問題究竟出現在什麼地方?我想這裡有很多原因,大部分是自己的,但也絕對不能忽視環境對人的影響。

蔣宇東 夢斷計院,為夢前行(2)

對環境的反思

1. 計院的第一大問題--學生普遍基礎薄弱

在我東奔西走找工作的時候,才真正體會到自己原來喜歡炫耀的基礎知識是多麼薄弱,而它們又是那麼重要。我曾經在面試時因為說不清程序間的通信機制而當場被無情BS,也因為對于自己能力的不自信而放棄一家很牛的公司的研發部提供的筆試機會。

先要說說我所在的計院的第一大問題--專心做學問的人太少了,學生普遍基礎薄弱。

大學四年,在這裡能看到的真正對計算機感興趣,并且肯專心研究搞學術的學生真是鳳毛麟角。計院的大環境是網遊成風,"腐敗"猖獗。沒有幾個人肯安下心來讀書,即使那幾個老老實實聽課的"好學生"也隻不過是為了一個高高的GPA,一個可以在家長同學面前顯擺的獎學金證書。而真正希望學東西、做學問的人太少了。我找工作時,手裡握着一摞獎學金證書,後來被證明絕對是廢紙,任憑你怎麼吹噓自己的成績,沒有哪個公司會真的拿來仔細看上一眼。

回歸正題,什麼才是真正的基礎紮實?我的了解是,不僅要牢牢掌握大學課本中關于計算機核心課程的理論知識,而且還要深入實踐;對于該方向非常重要的技術思想、概念名詞、技術要點都要有良好的把握,比如可以随手寫出快速排序、哈希查找等經典的常用算法,熟記線程與程序的概念、它們的差别,并且能夠解釋清楚諸如僵屍程序之類的問題;會Linux的不僅僅是就會幾條Shell指令,或者幹脆就會裝個系統;用C++的不僅僅要會文法(不知道這是不是絕大多數計算機專業畢業生對于C++的了解程度),起碼要了解一些常用的标準庫,知道什麼是STL,了解些基本的OO思維方法;學過網絡的最起碼要用過Socket;了解資料庫的不能僅僅就會寫幾個SQL語句、背兩條範式等。

說到這裡不禁有點激動,前幾天在一個IT論壇上看到一個關于大學讀書無用論的文章,說讀書無用的人恐怕這些基礎知識掌握得也不怎麼樣,連基礎的東西都沒弄明白怎麼好意思說自己讀過書?沒讀過書怎麼好意思說讀書沒用?!其實不是讀書無用,是肯安心讀書的人太少,而書讀得足夠多的人更少。

倘若沒有這些基礎,僅僅會用這個工具、那個架構,充其量也不過是個IT民工,今後的發展必定受到制約,選擇隻有三條:a.做一輩子IT民工;b.将大學時欠下來的債補上;c.改行。

這裡我不想說太多,話歸正題。如果要我重新去選擇,我一定會在學習每一門課程的同時盡量找到相關的資料,擴充每一個話題。同時,将一些最常用的思想、技術、方法記錄下來,并且苦練到可以熟練應用的地步,并且時常加以回顧。

真正基礎雄厚的人應該是可以将常用的基礎性知識熟記成誦的人,提到一個基本的名詞或話題能夠将其來龍去脈解釋清楚的人。

2. 計院的第二大問題--學風不正,渙散成性

計院的學風不正,渙散成性,早已名聲在外。我想一方面要怪罪于我們學生自己,對前途不負責任,将大好的寶貴時光都用在了網遊、泡妞、喝酒等事情上;可另一方面,計院的上司及老師就真的沒責任了嗎?

如今的老師大都想着自己的小項目能賺多少錢,如今的上司多數考慮自己負責的這一塊不要出問題而影響到頭上的烏紗帽。"一切為了學生",表面看起來冠冕堂皇,實則是句空話。老師根本沒時間或沒水準備課,上課照本宣科念幻燈片,考試之前為了保證及格率不忘幫大家"劃劃範圍"。

記得大學一年級的"計算機導論"課,一個老頭足足念了一個學期的PPT,内容就是"C語言基礎、"數字邏輯"、"離散數學"課程的前1/3……内容巨枯燥,而且朗讀水準超級差勁。也難怪很多人從一開始就認為進入計院如同進入火坑。大學四年學下來不知道計算機專業的學完了究竟能做什麼。

到了畢業時,上司開始擔心就業率了,早就内外成患,以渙散、頹廢為風的計算機學院又豈能在短時間裡奮發起來?這個時候開始埋怨學生這個不是、那個不對,仿佛一切問題都是學生的,我想問問你們早幹什麼來的?之前有那麼多時間不好好調教你的學生,為什麼這個時候才想起來教育?

在這樣的學習環境下,除了主動自學,多多上網搜集資訊、泡圖書館,還能有什麼選擇呢?但話說回來我沒完全做到,最終問題還出在自己:不夠堅定,有時會随着大環境一起堕落,浪費了很多時間。

3. 計院第三大問題--實踐環節薄弱,人才位置錯放

看着自己履歷中可憐的實踐經驗,面對人才市場上實踐經驗黃金般的價格,自己不禁暗自悔恨……

很多人都在用理論紮實來搪塞自己實踐方面的低能,我想這個借口根本站不住腳。首先,計算機這個學科的性質就決定了沒有實踐,理論幾乎沒法了解得紮實透徹。就好比熟記騎自行車要領的人可能根本不會騎車一樣。我們不排除有未來的圖靈、Knuth一類的大牛,即使不寫什麼重要的代碼,理論也是巨牛無比。但是對大多數學過資料結構與算法的人來說,能用C寫個Dijkstra 最短路算法就算不錯了,你要給他個什麼城市公交線路選擇問題,他保準暈菜,當場崩潰(這樣的例子我見多了)。

其實我們的同學中真的有些非常出色,隻不過是放錯了位置,尤其是女生,我覺得大多數都不适合去程式設計。倘若不是在計院,可能他們已經憑借着自己其他方面出色的能力在他們适合的領域嶄露頭角了。我不隻聽到一個人抱怨自己不适合程式設計,當然一些人是純粹為自己的渙散找借口--這些人估計換個環境也還是那樣。

但是大一大二的時候,我們的老師、我們的上司又在幹啥呢?一些必要的引導總是你們的職責吧,幹嘛叫這些同學走過了大學四年才意識到自己不适合學計算機?

總之,種種因素所緻,大多數同學四年沒編過幾行代碼,課程設計不過草草了事(據說某些老師甚至推薦同學去校外找人代做畢設),是以畢業時,之前做過的東西根本不敢往履歷裡寫,因為根本沒啥技術含量,都是Copy的。

蔣宇東 夢斷計院,為夢前行(3)

對自身的反思

1. 項目反思

當我向面試官誇誇其談自己所謂有技術含量的項目經驗時,不住地冒虛汗,甚至還被一個考官當場揭穿并遭到無情BS。現在想想,更加悔恨不已……

我也曾經意識到實踐的問題,也曾經雄心勃勃地要寫有技術含量的代碼。大學裡我自己寫過兩個自認為是比較有技術含量的項目。不過兩個項目皆因打不完的更新檔、層出不窮的新Bug、臃腫而雜亂的代碼,導緻自己對于繼續開發與維護失去信心與興趣,最終擱淺失敗。

究其原因,主要是自己太浮躁。這個問題在應屆畢業生人群中及IT行業裡是普遍存在的。剛剛會程式設計就開始YY自己能寫出多牛逼的程式,做多牛逼的軟體。事實證明,任何牛逼的軟體都不是一下子就那麼牛逼的,必須要循序漸進地展開。當時,剛剛背熟了C++的文法,就萌生了要寫一個牛逼系統證明自己的想法。其實這個想法沒有錯,錯就錯在我們沒有進行必要的積累,而且缺乏對于系統子產品逐漸開發并測試的耐心。在網上下載下傳了點别人的設計經驗,自己就開始照貓畫虎地寫代碼。其結果可想而知,調試了n久代碼才能勉強地運作,而且極其不穩定。整個項目亂成一團,打一個更新檔又出兩個Bug那種。

這個時候其實應該吸取經驗,對代碼進行重寫,對系統進行改進,甚至有必要重新設計。而我又開始浮躁了,覺得這個算不了什麼,吸取教訓,再寫個更有技術含量的牛逼程式一定成功。于是竟然無厘頭地放棄了那一堆研究了将近一個月的代碼,開始了新的項目設計。這個項目的結果更加可笑,我最終甚至都沒有完整運作整個程式,因為無論我怎麼調試,程式到一半的時候都會莫名其妙地崩潰,而雜亂的設計與垃圾代碼使得我想趕緊将這些破玩意兒放入資源回收筒。這時我一方面感覺自己也沒啥能力寫軟體,估計再寫也就是九流貨色,沒啥發展;另一方面開始責怪學校,為什麼沒有一丁點兒程式設計的氛圍,那樣也不至于我孤軍奮戰。我還傻了吧唧地郁悶了好一陣子,之後做了一個我雖然不後悔,但是卻覺得很幼稚的決定--加入考G大軍,并專門學習一年的英語。

其實作在想想那時真是愚蠢得很,明知道做軟體一次成功是不可能的,還偏偏犯這種錯誤。為什麼呢?答案就是當時太急功近利了,以為自己多牛逼,寫個程式不費事。但實際遇到困難的時候,又沒有耐心與毅力去解決,甚至感覺之前的工作是在浪費時間。雖然現在想想可笑,但是此刻很多人(可能我也在内)還在犯着同樣的錯誤。

總之,急功近利很容易導緻莫名的失敗感,并且會為自己的失敗(其實這個不能叫失敗)找各種借口,然後在借口的安慰下完全放縱自己。這一點也展現在了我考G的過程中。

2. 個性反思

當時項目上的挫敗感使得我對于計算機學院完全失去了信心,眼看就是最最關鍵的大三了,這将決定我今後的出路,我該如何是好?

這個時候我是這樣想的,如果考研,恐怕會從一個火坑跳到另外一個火坑。進而可能會與許多和我一樣迷茫的同學一起繼續兩年"打醬油"的生活。因為種種幻想以及對自己不準确的定位,導緻我想到了考G出國。于是花了1000多在新東方報名,成天夾着厚厚的"紅寶書"去圖書館……現在來看,我不後悔當初的決定,因為我确實在這個過程中學到了很多知識,也認識了很多朋友。而且我覺得,如果當時因為害怕而沒有去嘗試,自己會在悔恨中度過前半生。但是我覺得當時的考G絕對是泡沫,它讓我産生了種種幻覺,以為自己因為考G水準就高了不少。這個泡沫膨脹了半年多,最後以一個失敗的分數為标志迅速地破滅,就好像金融危機一樣。

其實,如果這個時候,我能意識到前面問題的嚴重性,最差也應該把握住得考G這個機會。然而,我又沒有做到。回顧整個考G的過程,我在不斷為自己找借口:

我埋怨背單詞太苦,于是經常為自己開小差(遊泳、看雜書、電影等);

我做題受到打擊時,埋怨周圍沒有人跟我一起準備;

我還以考G為借口,糊弄自己的專業課,糊弄自己的課設,糊弄自己的前程!

而每當被天書般的GRE習題打擊之後,總是自己傻了吧唧地郁悶,而沒有用心去總結,去努力提升自己,是以浪費了不少時間。雖然,在此期間我從沒有放縱過自己,每天都盡可能地堅持呆在圖書館或自習室裡,但是對于本身英語基礎就很薄弱的我來說,面對這樣大的挑戰,如此糟糕的狀态又怎麼能成功呢?

最後的結果可想而知,我用了一年的時間專門學習英語,雖然英文水準有了一些進步,但是與巨額的開銷,以及自己辛苦的付出絕對不成比例。現在我的GRE單詞也忘得差不多了,不知道這個曾經的美麗留學夢會不會随着我的科學夢一起從此破滅呢……

蔣宇東 夢斷計院,為夢前行(4)

下篇·為夢前行

又是五月,去年的這個時候我還捧着厚厚的紅寶書,乘坐熟悉的217路公共汽車趕去新東方學GRE;前年的這個時候,我忙碌于ACM-ICPC和數學模組化競賽……

今年五月,我坐在實驗室中,籌劃着自己的畢業設計,追尋着自己的夢想與未來……

大一:問自己--這個專業到底要學什麼

記得上大學前的那個假期,看過一個我們學校學生拍的DV,名叫《完美動物》,其中還算是比較真實地反映了現在大學生的學習與生活狀況。看着片中主人公畢業前聲嘶力竭的忏悔,我暗暗告訴自己,決不能荒廢掉寶貴的大學時光。

之前一直有志于從事核實體與工程的研究,不料,聯考卻使我陰錯陽差來到了計算機學院。之前,我對計算機沒什麼了解,更不知道C語言究竟是哪一國的語言……不過,我的内心卻強烈希望自己能學有所成,成為一個領域的牛人。

大一,我花了一年的時間去探詢計算機科學與技術專業到底要學什麼,我對這些是否有興趣,将來要從事什麼工作。聽人家說計算機專業的學生要首先掌握一門程式設計語言,于是我自己跑到書店,随便挑了一本很厚的C++教材,開始啃了起來。就這樣,C++成為了我的入門程式設計語言--沒想到四年後的今天,我還要靠着它混飯吃。

我大量翻看各種雜志與人物訪談,希望能夠在其中找到我的未來。大一的時光很快就過去了,這期間,我努力培養自己對計算機的興趣,努力去尋找自己未來的方向。

"計算機專業到底要學什麼",這個問題經過大一一年的探索漸漸地清晰起來。我從網絡及圖書館裡學到了很多的知識,看到了一個新的天地,我也深深地為這個世界着迷。此時,我發現學校裡的課程教育和我對計算機科學與技術專業的了解有很大的差别。課堂上多數老師都在重複着幻燈片裡的文字,一部分希望上進的同學耐心地接受着這種方式的"科普"教育,考試之前花費大把的時間對老師劃的"範圍"裡的知識進行機械地記憶,之後考出一個令人瞠目結舌的高分(信不信由你,我們班有平均分95以上的);另一部分同學則将自己的大好時光寄托于網絡遊戲,或是花天酒地終日穿梭于聲色場所……

這段時間我覺得自己是那麼的孤獨,我試圖融入周圍學習比較認真的同學當中,我希望他們和我一起去探索那個未知的天地。但是,我發現沒有人可以與我一起去探讨計算機問題,也沒有人和我一起去做程式。我不斷問自己,為什麼這種教育方式得到了這麼多老師以及身邊這麼多同學的認可,難道是我錯了?雜志上、訪談中那些名人的學習經曆難道僅僅是天才的專利?是不是要成為高手一開始都要去背概念、去考高分,去經曆這個"乏味的"階段,至于動手程式設計要等把這些都做好了以後再練……

直到大二上學期結束,我終于确定,學校的教育并不合理,多數老師講的是"垃圾",照本宣科的很有可能是他們自己都沒學明白的東西。而計算機科學與技術也不是僅僅學學概念就可以成為高手的,況且按照學校的這種方式學下去,似乎概念都學不好,充其量不過是個記憶高手罷了。

這裡插一句,事實也證明了我的這種說法。我的考試成績雖然不是非常突出,卻也還算過得去,每個學期基本上都能拿到院裡的二等或三等獎學金。但是在我後來求職的時候,這些靠背概念就能拿到的獎學金證書并沒有起到什麼作用。以我的面試經曆來看,我履歷當中最打動面試官的地方恰恰是我利用課餘時間及逃課所寫的程式,還有利用背考試題的時間所讀的課外書。這裡請大一大二的學弟學妹們好好考慮一下:時間有限的情況下,在高高的GPA和實際程式設計能力的訓練之間我們應該如何權衡。

蔣宇東 夢斷計院,為夢前行(5)

大二~大三:為了心中的理想拼搏--準備程式設計競賽

在新東方,我發現自己是井底之蛙

大二的寒假我沒有回家,在沈陽新東方報了個TOEFL班,初衷并不是想出國,而是要利用假期惡補一下英語。但是到了新東方我發現到這裡并不僅僅是學習英語,我接觸到了很多新的思想,認識了很多有理想的同學,"留學"在這裡更多的是理想的代名詞。我被這種氛圍深深地吸引了,我開始意識到自己之前好像一隻坐在井底的青蛙,外面卻是更加廣闊的世界。這時我拼命學習,不僅僅是英語,還有程式設計。因為學校要到大三才開設資料結構課程,而我知道要編寫好的程式必須熟練掌握這門課。于是我弄來了清華大學嚴蔚敏的《資料結構(C語言版)》教材,先是去努力了解裡面的概念與理論,然後再将練習冊中的習題逐個地程式設計解決。這時我還知道了有一個叫做ACM-ICPC的程式設計競賽,有很多大學生都參加,為了練習,我經常到浙大的線上評判系統上去答題。總之,這個假期我沒有休息,努力去學習英語和程式設計。

開學之後,我開始"心安理得"地逃課,對于一些聽了讓人"壞腦子"的課程我基本不聽,甚至不去,而且心裡不再有從前逃課時的"負罪感"了。這裡要插一句,請大家不要誤解為大學裡沒有好老師,沒有值得聽的課。其實還是有一些比較負責的老師,他們的課程豐富有趣,講解得透徹易懂,而且包含着很多經驗之談。舉個例子,我們大三時開設的"作業系統"課程就非常不錯,盡管當時我在備戰GRE,但是整個學期我沒有落過一節課。

刻苦練習,準備參賽

我把大部分的時間都用來練習程式設計、學習算法,因為我們學校第一次有資格去參加區域性的ACM競賽。我發現僅僅是那本資料結構書并不能滿足ACM的要求,我就到MIT的OpenCourseWare去學他們的算法導論,正好還可以順便練練聽力。ACM的題目要求有較強的數學模組化能力及Coding能力,有些題目難得讓人根本找不到思路,還有一些看似簡單的經典算法題目其中卻暗含着大量的陷阱。

我每天堅持至少8個小時的算法理論學習及程式設計練習,多則長達14個小時。這段時間可以說是我程式設計能力提高最快的時光。我學到了很多的知識,其中最大的收獲就是對于一種陌生的算法或形式化描述,我能很快地了解,并用程式去模拟它的流程。其實大多數看似非常複雜的算法都是由這些最基本的算法思想演化而來的,紮實的算法理論基礎對于今後的相關課程學習是非常有幫助的。對于現在程式員中流行的"算法無用論",因為我還沒有接觸到正規的企業開發,是以暫時不予評論,但是我相信:要想成為優秀的程式員,對于基本算法有深入與精确的了解應該是一項必需的基本技能。

然而,雖然我進行了近三個月的刻苦努力,但是比賽的結果卻仍以失敗告終。原因有很多,有外部的,但更多的是自己的,比起更多的程式高手,我隻不過是個普通的Coder,資質一般,接觸程式設計的時間不如他們長,訓練的強度也不如他們大,用"腳後跟"想想就知道結果了吧。其實當時我将更多的希望放在了明年的比賽上,不過後來因為備考GRE而放棄了。

參加數學模組化競賽

參加數學模組化競賽是我大學生活當中比較有意義的經曆,也是在這裡,我找到了和我有共同愛好的同學,我們可以進行交流,對問題進行争論甚至争吵,我體會到了與别人合作的快樂。數學模組化競賽實際上就是一個迷你的科研過程。别人提出一個問題,這個問題可能出自于不同的領域,而且大都目前沒有得到很好的解決。參賽者用三天的時間搜集與查閱資料,針對問題提出合理的數學模型進行解釋,通過實驗得出資料進行驗證,最後寫成論文。我很喜歡這種完全不同于課堂與考試的研究方式,我也非常喜歡用學過的數學知識去解決一些實際的問題。

從大二開始,我參加了兩次全國比賽,一次美國的比賽。得了一個省級二等獎,一個國際二等獎。結果一般,但我覺得過程更重要(決定比賽結果的往往有很多原因)。這個過程中我學會了很多,包括一些有用的數學知識,分析問題的方法,數學模組化的一些技巧;我試着去學習如何快速地掌握一個陌生的理論并将它運用在模組化中,如何與隊友配合,如何發揮團隊每個成員的最大優勢等。

依然清晰地記得2008年的那個寒假,我們留在學校參加美國模組化競賽的情景。我的一個隊友是我的同班同學,他的文筆非常好,英文水準也不錯,主要負責參賽論文的寫作;另一個是數學系的學生,當時還是我們學校模組化協會的主席,他的數學功力不錯,主要是進行模型的分析及公式的推導;我則主要負責問題分析與計算機求解等方面的工作。我們的配合非常默契,而且也都渴望能夠取得好的成績。我們隊是所有組裡最刻苦的,通常是早上6點起床去實驗室,直到晚上10點才回去。記得當時做了不少練習題,閱讀并分析了近幾年來MCM的Outstanding論文,而且逐漸形成了我們自己的配合與交流方式及解題風格。經過了将近三個星期的集訓,我們滿懷信心與激情地開始準備比賽。但事事難料,競賽的前一天半夜,我竟然高燒39度,隊友冒着嚴寒(那時的沈陽格外冷),半夜陪我跑到附近的醫院打點滴,照顧我休息,一直陪我到第二天清晨才回去。這讓我非常感動,同時也深深感到了有好的團隊與氛圍是多麼重要。之後的競賽,我發揮一般,不過通過我們齊心協力的配合,拼了四天三夜,總算按時完成了那篇一萬多詞的英文論文。雖然最終的結果沒有達到我們為學校創造曆史的期望,但遺憾卻無法掩蓋這難忘的美好經曆。我忘不了那段奮鬥的日子,忘不了大家一起通宵讨論數學模型,忘不了生病時隊友的關懷,忘不了單老師的耐心指導,忘不了朱老師每次總是在最後多發一便當給我,更忘不了大家為了同一目标一起拼搏的時光!

蔣宇東 夢斷計院,為夢前行(6)

大三~大四:考G與求職

大三下學期,我決定加入考G大軍。當初決定考G的原因有很多,不過簡單來說就是對現狀的失望與逃避,以及對自己夢想的憧憬與向往,我并沒有對自身的條件及現實情況做足夠的評估,這從某種程度上已經決定了失敗的結果。這個決定是草率的,但是我卻從來沒有後悔過,因為在整個備考的過程中我付出了很大的努力,雖然努力得還不夠;也收獲了很多,我甚至因為這段時間的英文積累在後來的求職過程中得到了一個去外企工作的機會。

雖然有足夠的心理準備,但是此次北京之行仍給了我很大的觸動。本來以為雖然外界形勢不太樂觀,擁有"中國矽谷"的北京會受到一些影響,機會仍會很多,但我在北京轉了将近一周的時間,發現在規模最大的招聘會上也僅僅有很少的幾家公司,而且競争異常激烈。直到現在我還清晰地記得招聘會上擁擠的人群,諸多求職者焦急的神情……

在求職的過程中,我曾經很多次遭遇因為學校不是重點大學而被HR當場拒收履歷的尴尬,我也經受了在網上投了幾十份履歷而杳無音信的焦慮,以及在某公司的面試現場被人毫不留情鄙視的無奈。總之,找工作的過程中經曆了不少挫折,同時也帶給我很多的思考。

憑借着還算流暢的英文口語,我得到了去北京一家軟體外企做技術支援的機會。為時一年的GT備考并沒有得到我想要的結果,這個機會也算是對于那一階段努力的一個結果與回報吧。另外,因為自己課餘做的兩個不是很成功但卻有一點點技術含量的小項目,我還得到了去上海一家做遊戲的創業公司做C++開發的機會。

技術支援主要是與客戶進行溝通,幫助他們解決産品使用過程中的一些技術性問題。這個職位需要比較強的交際能力,以及英文口語能力(公司産品主要面對的是歐美客戶),但是對于技術方面可能會涉及得比較少,而且幾乎不需要去寫什麼代碼。

那個C++開發職位則需要一些實際的編碼能力,工作中更多的時間将會是與機器打交道。出于對自己實際情況的考慮,我選擇了去上海的那家創業公司。這主要是因為我更喜歡從事技術開發方面的工作,并且在與人交往方面不是很擅長。這家創業公司裡的員工基本都是80後,感覺大家工作都很有激情,而且工作環境也比較開放自由,這也正是我想要的工作。這裡要說一下,很多人都認為技術支援或銷售不如程式開發工作"好",我對此觀點向來不是很認同。在我看來,每個崗位提供的機會都是一樣的,隻不過是工作環境的不同而已。而每個人的特點與愛好不同,是以并不是所有的計算機專業學生都要去做開發。特别是一些交際能力很強而對技術不是非常感興趣的同學,可能技術支援或銷售等方面的職位更加适合他們。選擇了适合自己的環境,不僅會工作得很愉快,而且可能很快就會在這個崗位上嶄露頭角,我想這要比做一個每天悶悶不樂的"代碼民工"好得多吧。

蔣宇東 夢斷計院,為夢前行(7)

結語:我想對師弟師妹們說

一定要弄清楚上大學首要的任務。明白自己是來幹什麼的,走出這裡的時候自己要收獲什麼,自己希望成為什麼樣的人。每個人都必須要有明确的目标,除非你想過四年打醬油的生活。這一點我做到了,雖然做得不好,走了彎路,但是我沒有白白荒廢四年的時間。

要有紮實的學科基礎。不要将自己局限在得一個高分的狹小範圍内,僅僅看到眼前的榮譽無疑是目光短淺的表現。要注意學習的擴充性,要努力去了解并掌握本專業常用的的核心思想與技術,達到熟記于胸的程度。

發現自己的優勢,選擇适合自己的出路。不要僅僅看中程式員的高薪水,做最适合自己的方向的工作才是最最重要的。

學過理論要注重實踐。可以自己做一些力所能及的小東西,有意從事計算機方向的同學需要熟練掌握一門程式設計語言、一個開發工具、一個系統平台和一種程式設計思想。自己動手做一些有一定技術含量的項目。

最好是能夠利用好假期的時間,出去實習。實習經曆将是畢業時"賣身"的有力籌碼。

切忌浮躁、急功近利。假如以你的實力可以通過五年的時間成為一個領域的高手,如果自己期望縮短到三年的時間或更短,最終很可能要用八年、十年的時間,甚至可能永遠都做不到。

目标要堅定。對于自己已經決定的選擇,要執著地追求,直到在其中獲得了你滿意的成果。

做事情不為自己找借口,借口==失敗。

以前聽别人說"要有自己的理想,并堅持自己的理想",總感覺說得很"空",但是現在我卻從内心深處認同這種說法。剛上大學的時候,我也曾彷徨過很長時間,我不知道自己究竟要幹什麼,看不清何處才是自己的未來。後來,我看了很多廣為流傳的成功人士的故事及他們的心得體會,對我影響最大的兩個人是李開複和蘋果的Steve Jobs。

開複老師的那本《做最好的自己》我不知道究竟讀過了多少遍,而且每一次讀都有更深的體會與強烈的認同。其實對于外部環境的困惑與不滿也使得我苦悶、彷徨甚至想放棄,但讀過開複老師的書,我懂得了對于自己無法改變的事物,要有接受它的胸懷;而對于自己可以改變的事物,要不遺餘力地去改變它。每到我感覺苦悶無助的時候,我總是努力地提醒自己:無論外界環境如何,我所能做的就是盡自己的力量,利用周圍有利的環境,去追尋理想。要做到這一點的确很難,是以要時常提醒自己、督促自己。

Steve Jobs那句著名的"你是要繼續賣糖水,還是要改變世界"曾無數次激發我追求理想的激情與決心。一次偶然的機會,在YouTube上,我看到了一段Steve Jobs在Stanford的演講視訊。從此,每當缺乏Follow My Heart的勇氣時,我都會去聽這段演講(可能已經聽過上百遍了),有時甚至會聽得熱淚盈眶。與大家分享這段話:

Your time is limited, so don't waste it living in someone else's life. Don't be trapped by dogma which is living with the results of other people's thinking. Don't let the noise of others' opinions drown out your own inner voice. And the most important, have the courage to your heart and intuition. They somehow already know what you truly want to become. Everything else is secondary.

願和每一個有夢想的同學一道,Follow Our Heart,實作我們的夢想!

蔣宇東 夢斷計院,為夢前行(8)

網友跟帖

Tiny fool︱Apr 1, 2009 @ 10:37 am

我的看法是,核心問題在于眼界。計算機專業的課程都學好了(我的意思是不要限于考試的标準),其實是很不錯的。我看到過很多例子,很多人很努力,但是水準原地打轉,甚至慢慢地就落後于他的朋友們。原因在于,就他所學,他已經不知道自己該繼續往什麼方向努力了。

在學校的學生的不幸在于,我們曾經是一個非常仰視大學的國家,我們的父母老師,天天告訴我們考上大學一切就OK了。然而現在社會發展了,大學門檻也低了,我們到處都可以看到大學生了,用人機關的門檻也高了。自學的朋友也一樣,你學會了貝葉斯,開始流行hmm,你學會了hmm,開始流行rcf。但是,我們每個人都不是傻子,我們天生就有每天都上升的空間,隻是我們的眼界太窄,看不到路在何方而已。

小馬xioama︱Apr 1, 2009 @10:01 am

作為一個畢業15年的過來人,我也來說幾句,其實進了大學,一切都是靠自學。我一直在說的一句話就是"在大學裡能學習到的唯一的東西就是學習"。因為畢業後,根本不可能靠在大學裡課堂上學習到的東西混飯吃,新畢業的人在用人機關看來,等于一張白紙,所不同的就是這張紙的吸墨能力有多強。

221.233.24.*︱Apr 6, 2009 @2:31 pm

說些什麼呢?似乎想說的話有太多太多,卻又無從說起!

我沒過四級,不是因為我不努力,我努力過了。我也挂過很多課,不是因為我不好學,是因為我覺得好多課程根本沒有用。曾經也無數次的彷徨迷茫過,但是我從沒有放棄過。四年我唯一沒變的是一顆上進心,一份責任心,一顆感恩的心,一份信心。

記住不要放棄自己! 

221.233.24.*︱Apr 7, 2009 @02:27 am

文章中說的大學中的種種弊病,我覺得是幾乎每一個大學每一個學院和每一個大學生都有可能遇到的。不單單在我們計算機。我覺得你這篇文章蠻有哲理的,但更多的是對現實的不滿,但發洩不滿沒有任何意義。因為現實就是現實。

與其為這些煩惱,厭煩,不如考慮一下如何在現實的情況下通過自己最大的努力去取得成功會好些。

我覺得夢歸根到底是夢,回顧和檢討應該更多地關心自己,因為環境不是我們說了算的,我們說得算的隻有自己。

Jeffrey Zhao︱Apr 1, [email protected]:44 am

大風氣真的那麼重要嗎?的确大風氣很不好,我也承認,但是我絕對相信你能找出10個志同道合的人,再退一步,認真治學的老師和同學出來,這樣的小團體還不夠嗎? 現在網際網路那麼發達,到處都能交流,資源之充沛隻會讓人接受不完,我覺得沒有理由怪什麼精神不精神,資源不資源。

當看不清世界發展,那麼可以看清過去的發展啊,過去有哪些是不變的,很少變的,一般以後改變的可能性也不大。把時間投資在這些方面,一般總是有很大好處的--尤其是周圍的人都不怎麼投資的時候。至于方向:交流、交流、交流……

fang xu︱Apr 2, [email protected]:44 am

我很反感這種一味拿主觀能動性來說事的。事情哪有這麼極端。牛人和庸人都是少數,他們可以很少受環境影響,但是在正态分布中心附近的大多數是很容易被塑造的。大學生雖然不是小孩子,但依然缺乏磨練不夠成熟。

雖然不管怎樣,學生的能力分布也會是個正态分布,但好的向導會使平均值提高。基因自身可以發生遺傳突變,但是環境會對其進行篩選或是誘發突變。人也是一樣。

Kaiix︱Apr 3, [email protected]:10 am

我不知道同在這種情況的朋友怎樣想,對這幾年反思,有抱怨,有自責。抱怨環境,沒有人能夠在我稍偏出方向時給我一聲提醒;抱怨沒有可以一同讨論、研究技術的同伴, 哪怕一個也好;抱怨老師好像透明人,這幾年沒有幾個老師讓我記住名字;抱怨自己,恍恍惚惚,似乎學了很多,其實學到很少。

總是告訴自己除了自己的問題其他的一切都是借口。環境真的那麼重要嗎,難道我真的不能夠享受這份孤獨?我認為除非有非常好的自制力和強大的目标驅動,想做到這點真的很難,非常同意能夠享受思維的孤獨是更為貴重的品質。

今年也大四了,回顧過往,遺憾很多。但可喜的是在學校最後一年時自己的思想成熟很多,"朝聞道,夕可死",整理心情,繼續向前走。

繼續閱讀