自西方文藝復興以來,中國在自然科學方面落后西方很多,軟件領域也不例外。當然現在中國的許多程序員們對此可能有許多不同的意見,有些人認為中國的程序員水平遠落后于西方,有些則認為中國的程序員個人能力并不比西方的程序員差,只是整個軟件產業落后而已。
那么,到底中國的程序員水平比西方程序員水平差,還是中國有許多優秀的程序員達到或超過了西方程序員同等水平呢?要解決這個問題,必須先知道程序員有多少種技術層級,每個層級需要什么樣的技術水平,然后再比較中國和西方在各個技術層級的人數,就可以知道到底有沒有差距,差距有多大。
當然,對于如何劃分程序員的技術層級,不同公司或不同人會有不同的劃分標準,下面的劃分僅代表個人的觀點,如有不當之處,還請砸板磚予以糾正。
第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學家’的頭銜也不足為奇。有不少爬到這層的人就以為到了樓頂了,可以眼睛往天上看了,開始目空一切起來,以為自己什么都可以做了,什么都懂了,經常在網絡上亂砸板磚是這個群體的最好寫照。由此也看出,國內的牛人數量仍然眾多,遠多于西方的牛人數量,在這層上仍然是領先的。
也有不少謙虛的‘牛人’,知道自己現在還不到半桶水階段。他們深知爬樓的游戲就像猴子上樹一樣,往下看是笑臉,往上看是屁股。為了多看笑臉,少看屁股,他們并沒有在此停步不前,而是繼續尋找到更上一層的樓梯,以便繼續往上爬。
掌握它,除此之外,還得經常關注網絡和期刊雜志上的各種最新信息。
當‘牛人’晉升為‘大牛’,讓‘牛人們’發現有比他們更牛的人時,對‘牛人’們的心靈的震撼是可想而知的。由于牛人們的數量龐大,并且牛人對大蝦和菜鳥階層有言傳身教的影響,所以大牛們通常能獲得非常高的社會知名度,幾乎可以用‘引無數菜鳥、大蝦、牛人競折腰’來形容,看看前面提過的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的技術水平并不像想像中那么高,只是‘牛人’和‘大蝦’覺得‘大牛’比他們更牛吧了。也許有很多菜鳥、大蝦甚至牛人覺得‘大牛’這層已經到頂了,但大多數‘大牛’估計應該是有自知之明的,他們知道自己現在還沒有爬到半山腰,也就勉強能算個半桶水的水平,其中有些爬到這層沒有累趴下,仍然能量充沛,并且又有志者,還是會繼續往更上一層樓爬的。
看到這里,也許有些菜鳥、大蝦、牛人想不明白了,還有比‘大牛’們更高的樓層,那會是什么樣的樓層?下面就來看看
第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層 專家
當大牛們真正動手做一個操作系統或者類似的其他軟件時,他們就會發現自己的基本功仍然有很多的不足。以內存管理為例,如果直接抄襲Linux或者其他開源操作系統的內存管理算法,會被人看不起的,如果自動動手實現一個內存管理算法,他會發現現在有關內存管理方法的算法數量眾多,自己并沒有全部學過和實踐過,不知道到底該用那種內存管理算法。
看到這里,可能有些人已經明白第5層樓的奧妙了,那就是需要做基礎研究,當然在計算機里,最重要的就是‘計算’二字,程序員要做基礎研究,主要的內容就是研究非數值‘計算’。
非數值計算可是一個非常龐大的領域,不僅時下熱門的‘多核計算’與‘云計算’屬于非數值計算范疇,就是軟件需求、設計、測試、調試、評估、質量控制、軟件工程等本質上也屬于非數值計算的范疇,甚至芯片硬件設計也同樣牽涉到非數值計算。如果你還沒有真正領悟‘計算’二字的含義,那么你就沒有機會進到這層樓來。
可能有人仍然沒有明白為什么比爾·蓋茨被劃在了大牛層,沒有進到這層來。雖然比爾·蓋茨大學未畢業,學歷不夠,但是家有藏書2萬余冊,進入軟件這個行業比絕大部分人都早,撇開他的商業才能不談,即使只看他的技術水平,也可以算得上是學富五車,頂上幾個普通的計算機軟件博士之和是沒有問題的,比起 Linus Torvalds之類的‘大牛’們應該技高一籌才對,怎么還進不了這層樓呢?
非常遺憾的是,從Windows操作系統的實現來看,其對計算的理解是很膚淺的,如果把Google對計算方面的理解比做大學生,比爾·蓋茨只能算做一個初中生,所以比爾·蓋茨永遠只能做個大牛人,成不了‘專家’。
看到這里,也許國內的大牛們要高興起來了,原來比爾·蓋茨也只和我等在同一個層次,只要再升一層就可以超越比爾·蓋茨了。不過爬到這層可沒有從‘牛人’升為‘大牛’那么簡單,人家比爾·蓋茨都家有2萬多冊書,讓你看個500~1000本以上的專業書籍并掌握好它應該要求不高吧。當然,這并不是主要的條件,更重要的是,需要到專業的學術站點去學習了,到ACM,IEEE,Elsevier,SpringerLink,SIAM等地方去下載論文應該成為你的定期功課,使用Google搜索引擎中的學術搜索更是應該成為你的日常必修課。此外,你還得經常關注是否有與你研究相關的開源項目冒出來,例如當聽到有TBB這樣針對多核的開源項目時,你應該第一時間到Google里輸入‘TBB’搜索一下,將其源代碼下載下來好好研究一番,這樣也許你的一只腳已經快邁進了這層樓的門檻。
當你象我上面說的那樣去做了以后,隨著時間的推移,總會有某天,你發現,在很多小的領域里,你已經學不到什么新東西了,所有最新出來的研究成果你幾乎都知道。此時你會發現你比在做‘牛人’和‘大牛’時的水平不知高出了多少,但是你一點也‘牛’不起來,因為你學的知識和思想都是別人提出來的,你自己并沒有多少自己的知識和思想分享給別人,所以你還得繼續往樓上爬才行。
-
程序員
+關注
關注
4文章
952瀏覽量
29818
發布評論請先 登錄
相關推薦
評論