程式設計師的十層樓

xmuguoxin發表於2009-02-19

  自西方文藝復興以來,中國在自然科學方面落後西方很多,軟體領域也不例外。當然現在中國的許多程式設計師們對此可能有許多不同的意見,有些人認為中國的程式設計師水平遠落後於西方,有些則認為中國的程式設計師個人能力並不比西方的程式設計師差,只是整個軟體產業落後而已。

  那麼,到底中國的程式設計師水平比西方程式設計師水平差,還是中國有許多優秀的程式設計師達到或超過了西方程式設計師同等水平呢?要解決這個問題,必須先知道程式設計師有多少種技術層級,每個層級需要什麼樣的技術水平,然後再比較中國和西方在各個技術層級的人數,就可以知道到底有沒有差距,差距有多大。

  當然,對於如何劃分程式設計師的技術層級,不同公司或不同人會有不同的劃分標準,下面的劃分僅代表個人的觀點,如有不當之處,還請砸板磚予以糾正。

  第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://software.intel.com/zh-cn/blogs/)和多核論壇(http://forum.csdn.net/Intel/IntelMulti-core/)去看看相關文章,再買上幾本相關的書籍學習一下。

  在國內, 一旦成為"牛人",通常可以到許多知名的公司裡去,運氣好者可以掛上一個架構師的頭銜,甚至掛上一個"首席架構師"或者"首席xx學家"的頭銜也不足為奇。有不少爬到這層的人就以為到了樓頂了,可以眼睛往天上看了,開始目空一切起來,以為自己什麼都可以做了,什麼都懂了,經常在網路上亂砸板磚是這個群體的最好寫照。由此也看出,國內的牛人數量仍然眾多,遠多於西方的牛人數量,在這層上仍然是領先的。

  也有不少謙虛的"牛人",知道自己現在還不到半桶水階段。他們深知爬樓的遊戲就像猴子上樹一樣,往下看是笑臉,往上看是屁股。為了多看笑臉,少看屁股,他們並沒有在此停步不前,而是繼續尋找到更上一層的樓梯,以便繼續往上爬。

相關文章