<IT世界>程序員的十層樓(1~5)

1層 菜鳥 
 第1層樓屬於地板層,邁進這層樓的門檻是很低的。基本上懂計算機的基本操作,
瞭解計算機專業的一些基礎知識,掌握一門基本的編程語言如C/C++,或者Java,或者
JavaScript,...,均可入門邁進這層。 
 在這層上,中國有着絕對的優勢,除了從計算機專業畢業的衆多人數外,還有大量
的通信、自動化、數學等相關專業的人士進入這一行,此外還有衆多的其他專業轉行的
人士,人數絕對比西方多出甚多。並且還有一個優勢就是我們這層人員的平均智商比西
方肯定高。 
 沒有多少人願意一輩子做菜鳥,因爲做"菜鳥"的滋味實在是不咋的,整天被老大們
吆喝着去裝裝機器,搭建一下測試環境,或者對照着別人寫好的測試用例做一些黑盒測
試,好一點的可以被安排去寫一點測試代碼。當然如果運氣"好"的話,碰到了國內的一
些作坊式的公司,也有機會去寫一些正式的代碼。 
 所以,菜鳥們總是在努力學習,希望爬更高的一層樓去。

 

第2層 大蝦 
 從第1層爬到第2層相對容易一些,以C/C++程序員爲例,只要熟練掌握C/C++編程語
言,掌握C標準庫和常用的各種數據結構算法,掌握STL的基本實現和使用方法,掌握多
線程編程基礎知識,掌握一種開發環境,再對各種操作系統的API都去使用一下,搞網
絡編程的當然對socket編程要好好掌握一下,然後再學習一些面向對象的設計知識和設
計模式等,學習一些測試、軟件工程和質量控制的基本知識,大部分人經過2~3年的努
力,都可以爬到第2層,晉升爲"大蝦"。 
 中國的"大蝦"數量和"菜鳥"數量估計不會少多少,所以這層上仍然遠領先於西方。 
 大蝦們通常還是有些自知之明,知道自己只能實現一些簡單的功能,做不了大的東
西,有時候還會遇到一些疑難問題給卡住,所以他們對那些大牛級的人物通常是非常崇
拜的,國外的如Robert C. Martin、Linus Torvalds,國內的如求伯君、王志東等通常
是他們崇拜的對象。其中的有些人希望有一天也能達到這些大牛級人物的水平,所以他
們繼續往樓上爬去。

 

第3層 牛人 
 由於"大蝦"們經常被一些疑難問題給卡住,所以有了"大蝦"們只好繼續學習,他們
需要將原來所學的知識進一步熟練掌握,比如以熟練掌握C++編程語言爲例,除了學一
些基礎性的C++書籍如《C++ Primer》,《Effective C++》,《Think in C++》,
《Exception C++》等之外,更重要的是需要了解C++編譯器的原理和實現機制,瞭解操
作系統中的內部機制如內存管理、進程和線程的管理機制,瞭解處理器的基礎知識和代
碼優化的方法,此外還需要更深入地學習更多的數據結構與算法,掌握更深入的測試和
調試知識以及質量管理和控制方法,對各種設計方法有更好的理解等。 
 學習上面說的這些知識不是一揮而就的,不看個三五十本書並掌握它是做不到的。
以數據結構算法來說,至少要看個5~10本這方面的著作;以軟件設計來說,光懂結構
化設計、面向對象設計和一些設計模式是不夠的,還要了解軟件架構設計、交互設計、
面向方面的設計、面向使用的設計、面向數據結構算法的設計、情感化設計等,否則是
很難進到這個樓層的。 
 當然除了上面說的知識外,大蝦們還需要去學習各種經驗和技巧。當然這點難不倒
他們,現在出版的書籍衆多,網絡上的技術文章更是不勝數,然後再去各種專業論壇裏
泡一泡,把這些書籍和文章中的各種經驗、技能、技巧掌握下來,再去學習一些知名的
開源項目如Apache或Linux操作系統的源代碼實現等。此時對付一般的疑難問題通常都
不在話下,菜鳥和大蝦們會覺得你很"牛",你也就爬到了第3層,晉升爲"牛人"了。 
 看了上面所講的要求,可能有些大蝦要暈過去了,成爲牛人要學這麼多東西啊!要
求是不是太高了?其實要求一點也不高,這麼點東西都掌握不了的話,怎麼能讓別人覺
得你"牛"呢? 
 需要提一下的是,進入多核時代後,從第2層爬到第3層增加了一道多核編程的門檻
。當然要邁過這道門檻並不難,已經有很多前輩高人邁進了這道門檻,只要循着他們的
足跡前進就可以了。想邁進這道門檻者不妨去學習一下TBB開源項目的源代碼(鏈接:
http://www.threadingbuildingblocks.org/),然後上Intel的博客
http://softwareblogs-zho.intel.com/)和多核論壇
http://forum.csdn.net/Intel/IntelMulti-core/)去看看相關文章,再買上幾本相
關的書籍學習一下。 
 在國內, 一旦成爲"牛人",通常可以到許多知名的公司裏去,運氣好者可以掛上
一個架構師的頭銜,甚至掛上一個"首席架構師"或者"首席xx學家"的頭銜也不足爲奇。
有不少爬到這層的人就以爲到了樓頂了,可以眼睛往天上看了,開始目空一切起來,以
爲自己什麼都可以做了,什麼都懂了,經常在網絡上亂砸板磚是這個羣體的最好寫照。
由此也看出,國內的牛人數量仍然衆多,遠多於西方的牛人數量,在這層上仍然是領先
的。 
 也有不少謙虛的"牛人",知道自己現在還不到半桶水階段。他們深知爬樓的遊戲就
像猴子上樹一樣,往下看是笑臉,往上看是屁股。爲了多看笑臉,少看屁股,他們並沒
有在此停步不前,而是繼續尋找到更上一層的樓梯,以便繼續往上爬。­

 

 

第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"搜索一下,將其源
代碼下載下來好好研究一番,這樣也許你的一隻腳已經快邁進了這層樓的門檻。 
 當你象我上面說的那樣去做了以後,隨着時間的推移,總會有某天,你發現,在很
多小的領域裏,你已經學不到什麼新東西了,所有最新出來的研究成果你幾乎都知道。
此時你會發現你比在做"牛人"和"大牛"時的水平不知高出了多少,但是你一點也"牛"不
起來,因爲你學的知識和思想都是別人提出來的,你自己並沒有多少自己的知識和思想
分享給別人,所以你還得繼續往樓上爬才行。 
 我不知道國內的"專家"到底有多少,不過有一點可以肯定的是,如果把那些專門蒙
大家的"磚家"也算上的話,我們的磚家比西方的要多得多。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章