轉載自NP博士實驗室:http://conanmusic.spaces.live.com/default.aspx?_c02_owner=1
在我剛涉足互連網開發的時候,還是個不大懂事的小子,我也和現在很多年輕人一樣,懷著一顆“火熱”的心,認為通過自己的努力,可以做到任何事(解決技術問題),同時,也有著一種對剛剛離開的大學校園的不滿和抵觸心理。這種情緒在現在一線開發人員中似乎很常見,同時也有更多的程式員(尤其是Web開發)並沒有念過大學或者非相關專業,他們同樣也對學校教育抱有不信任甚至仇視的態度。 曾經一段時間,中國的高等教育是社會上廣為討論的話題,尤其熱烈地集中在校園內。非常多的學生(包括“好”學生和“差”學生)都以為“在學校裡學不到什麼玩意”、“學校教的都是過時的”、“老師什麼都不會”、“只有實際經驗才重要”,這點在學曆至上的社招人才標準漸漸向能力為重傾斜後更為突出,太多的學生消極地認為,念大學是為了個文憑,或者為了考研,或者是為了家裡…… 當然,也有很多同學一直快樂地生活在校園環境中,這以在校的優秀學生為主。電腦專業的這些學生一個顯著特點就是他們報考這個專業基本不是因為興趣…… 相反,在Web開發領域中戰鬥在第一線的主力人員,大多帶有“草根”成分,因為這個行業的理論門檻比較低,適合更多的沒有經過相關理論學習但是對軟體開發有著濃厚興趣且動手能力強的人加入,在這個領域裡,每天的目標只有一個——實現。 這樣,程式員中就分化出兩批人馬,一批是由正規高等學府的相關專業走出來的帶有學術氣質的本科生、碩士生甚至博士生;一批是各處的愛好者集中起來的實用主義者,這兩種人我們暫且稱為A和B: A對B說:你什麼都不懂B對A說:你什麼都不會 這是社會上最基礎的兩種論調。很多詞用來形容剛畢業的大學生:眼高手低、高學曆低能力、繡花枕頭……,也有不少批評愛好者們基礎薄弱理論知識欠缺的,建議都是中肯和有道理的,可是A和B至今仍然吵個不休,一方面是在搶飯碗方面,另一方面是A和B都要證明自己的道路正確(當然叛徒也不少)。 以下是我個人假設: 我,NP博士,是一個初中畢業生,中專念了一半,出去混工作。在頭一段時間,我因為各種原因很苦惱,學曆不夠,找不到好工作。但是我有很強的自學能力和動手能力,我愛好軟體,喜歡編程,做過網頁。一個偶然的機會,我到一家公司做實習,並開始了Web程式編寫的工作,雖然開始的工資不高,但是我慢慢通過自己的努力,增強了自己的技術水平,積累了經驗,很快成為公司裡的技術骨幹。之後兩年,我去了一家更大更正規的公司,負責了更大型的項目,慢慢的,我的事業走上了牛市,也沒有人再去在意我的草根出身,我覺得很高興,我認為那些念大學的高材生還在街上找工作,他們可差勁得很了,念大學很愚蠢。直到有一天…… 我,NP博士,名牌大學電腦系碩士生(好像有點矛盾哈……),畢業去找工作。投了很多份簡曆,也有不少公司回複,當然少不了面試筆試的機會。可是幾次面試下來,我的自信心大受打擊,因為我發現在外面公司裡和在學校學的完全是兩回事。比如在學校裡花了大把精力學的軟體開發理論,面試的時候沒人問,反倒問我一些相當實際的問題,像是如何增加資料庫系統負載能力等,這些都是老師沒有教過的,我也沒有實踐過啊。這樣幾個月過去了,我還是沒有找到合適的工作,我很鬱悶,看著幾個從前的朋友,有的已經混得有房有車有老婆,真箇慚愧啊。不過這樣一天,一家著名的外企發來了Offer,我通過了他們的考試(其實很簡單)可以去上班了,而且收入也不錯。開始的時候,總是沒什麼事,後來跟了幾個小項目,用上一些上學的時候課餘時間實在無聊了寫的幾行程式在大腦裡留下的淺淺印象做為基礎,我慢慢找到了感覺,覺得軟體開發也就是這麼回事,我覺得自己做得很不錯,公司的老總也很器重我,畢竟我是名牌大學的碩士生!直到有一天…… × × × × × × 這兩個我都遇到了什麼問題呢…… 第一個中專輟學的NP博士,接到了公司一項艱巨的任務:開發搜尋引擎。可是由於對這方面的知識所知甚少,開始去翻閱大量資料,開始去跑圖書館(不知道幾年沒有好好看過書了),終於驚恐地發現——這些資料自己根本看不懂~~尤其涉及到資料統計、排序演算法、關係運算、代價分析等理論性極強的內容,滿眼只是亂七八糟的數學符號,好像在看天書。精神幾近崩潰,幾年的辛苦換來的豪邁和自信一掃而空。 第二個名牌大學碩士生的NP博士(真彆扭),同樣接到一項任務:使用有限的有形資源最大程度地最佳化公司網站的負載能力。由於自己從來沒有做過類似工作,上學的時候和在公司之前做的小項目並不太考慮執行效率問題,所以覺得無從入手。且不知效率估算和最佳化是一項需要豐富經驗做為操作基礎的工作,這個碩士生在這個問題面前好像一個啞巴對著麥克風——不知道做什麼好。 × × × × × × 長久以來,我一直都在考慮這樣的問題:如何讓A和B的優勢融合,給這個行業帶來一些平衡感和活力。我本人恰好算是融合了A和B的雙重身份——受過名牌院系的科班教育,又有十年以上的程式編寫時間累積,更有一點我也曾經親自做過Web開發的一線程式員,所以對問題認識得可能明晰一些。在一段變故之後,我有退下一線的想法,轉向做一些細緻的、系統的一線程式員基礎教學工作。 “Revelation”這個詞有“啟示”的意思,我希望可以通過自己的努力給剛剛入行找不到方向的小孩們一些協助,認清自己的努力方向:如果想一直在一線開發上做下去,就千萬不能忽視基礎教育,包括數學、外語、電腦體系理論、軟硬體理論等。同時更要注意實際經驗的積累,注意學習方法和態度,這樣才能成為一個優秀的開發工程師,登上金字塔的頂端。 目前的計劃是完成一些相對獨立的小部分,像“四十二章經”(不是小說裡的八本,是真的四十二本)那樣做為技術內容。主要分為基礎理論和實際開發分析,分別主要針對B和A。目的是使A在工作中遇到問題有法可想,使B在翻閱資料時沒有看天書的感覺(集合并交和“合析”符號不僅僅可以用來拼QQ簽名),逐漸的消除“什麼都不會”和“什麼都不懂”的狀況發生。 如果有可能,我會想辦法請一些從事相關行業的朋友,加入一些程式員的日常生活相關內容,比如飲食、作息、心理壓力調整等非技術內容,爭取做個健康的程式員。 《Revelations》需要很多朋友、同行的支援和協助,以我個人能力和水平根本不可能做到(其實我做學生和做程式員都不很成功,不然也不會跑來賣文了~~),不過我希望在編寫它的同時,也能大幅提高筆者的水平,同時給筆者帶來成功的樂趣。 和我的開源理念一樣,《Revelations》無任何經濟目的,當然能不能繼續也得看我是不是混到吃了上頓沒下頓的程度…… 我相信《Revelations》會成為我的轉型標誌,也希望我的努力會給一些朋友帶來協助。