程序員的十層樓(1~3層)

程序員的十層樓

作者: 周偉明
 
轉自:
 
自西方文藝復興以來,中國在自然科學方面落後西方很多,軟件領域也不例外。當然現在中國的許多程序員們對此可能有許多不同的意見,有些人認爲中國的程序員水平遠落後於西方,有些則認爲中國的程序員個人能力並不比西方的程序員差,只是整個軟件產業落後而已。
那麼,到底中國的程序員水平比西方程序員水平差,還是中國有許多優秀的程序員達到或超過了西方程序員同等水平呢?要解決這個問題,必須先知道程序員有多少種技術層級,每個層級需要什麼樣的技術水平,然後再比較中國和西方在各個技術層級的人數,就可以知道到底有沒有差距,差距有多大。
當然,對於如何劃分程序員的技術層級,不同公司或不同人會有不同的劃分標準,下面的劃分僅代表個人的觀點,如有不當之處,還請砸板磚予以糾正。

第1層  菜鳥

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

第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開源項目的源代碼(鏈接:[url]http://www.threadingbuildingblocks.org/[/url]),然後上Intel的博客([url]http://softwareblogs-zho.intel.com/[/url])和多核論壇([url]http://forum.csdn.net/Intel/IntelMulti-core/[/url])去看看相關文章,再買上幾本相關的書籍學習一下。
在國內,一旦成爲"牛人",通常可以到許多知名的公司裏去,運氣好者可以掛上一個架構師的頭銜,甚至掛上一個"首席架構師"或者"首席xx學家"的頭銜也不足爲奇。有不少爬到這層的人就以爲到了樓頂了,可以眼睛往天上看了,開始目空一切起來,以爲自己什麼都可以做了,什麼都懂了,經常在網絡上亂砸板磚是這個羣體的最好寫照。由此也看出,國內的牛人數量仍然衆多,遠多於西方的牛人數量,在這層上仍然是領先的。
也有不少謙虛的"牛人",知道自己現在還不到半桶水階段。他們深知爬樓的遊戲就像猴子上樹一樣,往下看是笑臉,往上看是屁股。爲了多看笑臉,少看屁股,他們並沒有在此停步不前,而是繼續尋找到更上一層的樓梯,以便繼續往上爬。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章