程序員的十層樓(4~5層)

 
作者: 周偉明
第4層 大牛

從第3層爬到第4層可不像上面說過的那幾層一樣容易,要成爲大牛的話,你必須要能做牛人們做不了的事情,解決牛人們解決不了問題。比如牛人們通常都不懂寫操作系統,不會寫編譯器,不懂得TCP/IP協議的底層實現,如果你有能力將其中的任何一個實現得象模象樣的話,那麼你就從牛人升級爲"大牛"了。
當然,由於各個專業領域的差別,這裏舉操作系統、編譯器、TCP/IP協議只是作爲例子,並不代表成爲"大牛"一定需要掌握這些知識,以時下熱門的多核編程來說,如果你能比牛人們更深入地掌握其中的各種思想原理,能更加自如的運用,並有能力去實現一個象開源項目TBB庫一樣的東西,也可以成爲"大牛",又或者你能寫出一個類似Apache一樣的服務器,或者寫出一個數據庫,都可以成爲"大牛"。
要成爲"大牛"並不是一件簡單的事情,需要付出比牛人們多得多的努力,一般來說,至少要看過200~400本左右的專業書籍並好好掌握它,除此之外,還得經常關注網絡和期刊雜誌上的各種最新信息。
當"牛人"晉升爲"大牛",讓"牛人們"發現有比他們更牛的人時,對"牛人"們的心靈的震撼是可想而知的。由於牛人們的數量龐大,並且牛人對大蝦和菜鳥階層有言傳身教的影響,所以大牛們通常能獲得非常高的社會知名度,幾乎可以用"引無數菜鳥、大蝦、牛人競折腰"來形容,看看前面提過的Linus Torvalds等大牛,應該知道此言不虛。
雖然成爲"大牛"的條件看起來似乎很高似的,但是這層樓並不是很難爬的一層,只要通過一定的努力,素質不是很差,還是有許多"牛人"可以爬到這一層的。由此可知,"大牛"這個樓層的人數其實並不像想像的那麼少,例如比爾·蓋茨之類的人好像也是屬於這一層的。
由於"大牛"這層的人數不少,所以也很難統計除到底是中國的"大牛"數量多還是西方的大牛數量多?我估計應該是個旗鼓相當的數量,或者中國的"大牛"們會更多一些。
看到這裏,可能會有很多人會以爲我在這裏說瞎話,Linus Torvalds寫出了著名的Linux操作系統,我國並沒有人寫出過類似的東西啊,我國的"大牛"怎麼能和西方的比呢? 不知大家注意到沒有,Linus Torvalds只是寫出了一個"象模象樣"的操作系統雛形,Linux後來真正發展成聞名全球的開源操作系統期間,完全是因爲許多支持開源的商業公司如 IBM等,派出了許多比Linus Torvalds更高樓層的幕後英雄在裏面把它開發出來的。
可能有些菜鳥認爲Linus Torvalds是程序員中的上帝,不妨說個小故事:
Linus,Richard Stallman和Don Knuth(高德納)一同參加一個會議。
Linus 說:"上帝說我創造了世界上最優秀的操作系統。"
Richard Stallman自然不甘示弱地說:"上帝說我創造了世界上最好用的編譯器。"
Don Knuth一臉疑惑的說:"等等,等等,我什麼時候說過這些話?"
由此可以看出,Linus Torvalds的技術水平並不像想像中那麼高,只是"牛人"和"大蝦"覺得"大牛"比他們更牛吧了。在我國,有一些當時還處於"大蝦"層的人物,也能寫出介紹如何寫操作系統的書,並且書寫得非常出色,而且寫出了一個有那麼一點點象模象樣的操作系統來。我想中國的"大牛"們是不會比西方差的,之所以沒有人寫出類似的商業產品來,完全是社會環境的原因,並不是技術能力達不到的原因。
"大牛"們之所以成爲大牛,主要的原因是因爲把"牛人"給蓋了下去,並不是他們自己覺得如何牛。也許有很多菜鳥、大蝦甚至牛人覺得"大牛"這層已經到頂了,但大多數"大牛"估計應該是有自知之明的,他們知道自己現在還沒有爬到半山腰,也就勉強能算個半桶水的水平,其中有些爬到這層沒有累趴下,仍然能量充沛,並且又有志者,還是會繼續往更上一層樓爬的。
看到這裏,也許有些菜鳥、大蝦、牛人想不明白了,還有比"大牛"們更高的樓層,那會是什麼樣的樓層?下面就來看看第5層樓的奧妙。

第5層 專家

當大牛們真正動手做一個操作系統或者類似的其他軟件時,他們就會發現自己的基本功仍然有很多的不足。以內存管理爲例,如果直接抄襲Linux或者其他開源操作系統的內存管理算法,會被人看不起的,如果自動動手實現一個內存管理算法,他會發現現在有關內存管理方法的算法數量衆多,自己並沒有全部學過和實踐過,不知道到底該用那種內存管理算法。
看到這裏,可能有些人已經明白第5層樓的奧妙了,那就是需要做基礎研究,當然在計算機裏,最重要的就是"計算"二字,程序員要做基礎研究,主要的內容就是研究非數值"計算"。
非數值計算可是一個非常龐大的領域,不僅時下熱門的"多核計算"與"雲計算"屬於非數值計算範疇,就是軟件需求、設計、測試、調試、評估、質量控制、軟件工程等本質上也屬於非數值計算的範疇,甚至芯片硬件設計也同樣牽涉到非數值計算。如果你還沒有真正領悟"計算"二字的含義,那麼你就沒有機會進到這層樓來。
可能有人仍然沒有明白爲什麼比爾·蓋茨被劃在了大牛層,沒有進到這層來。雖然比爾·蓋茨大學未畢業,學歷不夠,但是家有藏書2萬餘冊,進入軟件這個行業比絕大部分人都早,撇開他的商業才能不談,即使只看他的技術水平,也可以算得上是學富五車,頂上幾個普通的計算機軟件博士之和是沒有問題的,比起 Linus Torvalds之類的"大牛"們應該技高一籌纔對,怎麼還進不了這層樓呢?
非常遺憾的是,從Windows操作系統的實現來看,其對計算的理解是很膚淺的,如果把Google對計算方面的理解比做大學生,比爾·蓋茨只能算做一個初中生,所以比爾·蓋茨永遠只能做個大牛人,成不了"專家"。
看到這裏,也許國內的大牛們要高興起來了,原來比爾·蓋茨也只和我等在同一個層次,只要再升一層就可以超越比爾·蓋茨了。不過爬到這層可沒有從"牛人"升爲"大牛"那麼簡單,人家比爾·蓋茨都家有2萬多冊書,讓你看個500~1000本以上的專業書籍並掌握好它應該要求不高吧。當然,這並不是主要的條件,更重要的是,需要到專業的學術站點去學習了,到ACM,IEEE,Elsevier,SpringerLink,SIAM等地方去下載論文應該成爲你的定期功課,使用Google搜索引擎中的學術搜索更是應該成爲你的日常必修課。此外,你還得經常關注是否有與你研究相關的開源項目冒出來,例如當聽到有TBB這樣針對多核的開源項目時,你應該第一時間到Google裏輸入"TBB"搜索一下,將其源代碼下載下來好好研究一番,這樣也許你的一隻腳已經快邁進了這層樓的門檻。
當你象我上面說的那樣去做了以後,隨着時間的推移,總會有某天,你發現,在很多小的領域裏,你已經學不到什麼新東西了,所有最新出來的研究成果你幾乎都知道。此時你會發現你比在做"牛人"和"大牛"時的水平不知高出了多少,但是你一點也"牛"不起來,因爲你學的知識和思想都是別人提出來的,你自己並沒有多少自己的知識和思想分享給別人,所以你還得繼續往樓上爬才行。
我不知道國內的"專家"到底有多少,不過有一點可以肯定的是,如果把那些專門蒙大家的"磚家"也算上的話,我們的磚家比西方的要多得多。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章