升級之路

第1層 菜鳥程序員

第1層樓屬於地板層,邁進這層樓的門檻是很低的。基本上懂計算機的基本操做,瞭解計算機專業的一些基礎知識,掌握一門基本的編程語言如C/C++,或者Java,或者JavaScript,...,都可入門邁進這層。算法

第2層 大蝦編程

從第1層爬到第2層相對容易一些,以C/C++程序員爲例,只要熟練掌握C/C++編程語言,掌握C標準庫和經常使用的各類數據結構算法,掌握STL的基本實現和使用方法,掌握多線程編程基礎知識,掌握一種開發環境,再對各類操做系統的API都去使用一下,搞網絡編程的固然對socket編程要好好掌握一下,而後再學習一些面向對象的設計知識和設計模式等,學習一些測試、軟件工程和質量控制的基本知識,大部分人通過2~3年的努力,均可以爬到第2層,晉升爲"大蝦"。設計模式

第3層 牛人網絡

因爲"大蝦"們常常被一些疑難問題給卡住,因此有了"大蝦"們只好繼續學習,他們須要將原來所學的知識進一步熟練掌握,好比以熟練掌握C++編程語言爲例,除了學一些基礎性的C++書籍如《C++ Primer》,《Effective C++》,《Think in C++》,《Exception C++》等以外,更重要的是須要了解C++編譯器的原理和實現機制,瞭解操做系統中的內部機制如內存管理、進程和線程的管理機制,瞭解處理器的基礎知識和代碼優化的方法,此外還須要更深刻地學習更多的數據結構與算法,掌握更深刻的測試和調試知識以及質量管理和控制方法,對各類設計方法有更好的理解等。數據結構

第4層 大牛多線程

從第3層爬到第4層可不像上面說過的那幾層同樣容易,要成爲大牛的話,你必需要能作牛人們作不了的事情,解決牛人們解決不了問題。好比牛人們一般都不懂寫操做系統,不會寫編譯器,不懂得TCP/IP協議的底層實現,若是你有能力將其中的任何一個實現得象模象樣的話,那麼你就從牛人升級爲"大牛"了。socket

第5層 專家數據結構和算法

當大牛們真正動手作一個操做系統或者相似的其餘軟件時,他們就會發現本身的基本功仍然有不少的不足。之內存管理爲例,若是直接抄襲Linux或者其餘開源操做系統的內存管理算法,會被人看不起的,若是自動動手實現一個內存管理算法,他會發現如今有關內存管理方法的算法數量衆多,本身並無所有學過和實踐過,不知道到底該用那種內存管理算法。編程語言

第6層 學者

當"專家"們想繼續往上一層樓爬時,他們幾乎一眼就能夠看到樓梯的入口,不過令他們吃驚的是,樓梯入口處豎了一道高高的門檻,上面寫着"創新"二字。不幸的是,大多數人在爬到第5層樓時已經體能消耗過分,無力翻過這道門檻。

第7層 大師

從第6層樓爬到第7層樓,並無多少捷徑可走,主要看你有沒有足夠的能量。你若是能象Hoare同樣設計出一個快速排序的算法;或者象Eugene W. Myers同樣設計出了一個用編輯圖的最短路徑模型來解決diff問題的算法;或者象M.J.D. Powell同樣提出了一個可以處理非線性規劃問題的SQP方法;或者你發現基於比較的排序算法,它的複雜度下界爲O(NLogN);或者你發現用棧能夠將遞歸的算法變成非遞歸的;或者你設計出一個紅黑樹或者AVL樹之類的查找結構;或者你設計出一個象C++或Java同樣的語言;或者你發明了UML;...,你就爬到了第7層,晉升爲"大師"了。

第8層 科學家

科學家向來都是一個神聖的稱號,所以我把他放在了「大師」之上。要成爲科學家,你的貢獻必須超越大師,不妨隨便舉一些例子。

若是你象Dijkstra同樣設計了ALGOL語言,提出了程序設計的三種基本結構:順序、選擇、循環,那麼你能夠爬到第8層樓來。順便說一下,即便拋開這個成果,Dijkstra憑他的PV操做和信號量概念的提出,一樣能夠進到這層樓。

若是你象Don Knuth同樣,是數據結構與算法這門學科的重要奠定者,你也能夠進到這層樓來。固然,數據結構和算法這門學科不是某我的開創的,是許多大師和科學家集體開創的。

第9層 大科學家

進入這層樓的門檻一般須要一些運氣,好比某天有個蘋果砸到你頭上時,你碰巧發現了萬有引力,那麼你能夠進到這層樓來。固然,萬有引力幾百年前就被人發現了,若是你如今處處嚷嚷着說你發現了萬有引力,恐怕立刻會有人打110,而後警察會把你送到不正常人類的彙集地去。所以,這裏舉萬有引力的例子,只是說你要有相似的成就才能進到這層樓來。

相關文章
相關標籤/搜索