自西方文藝復(fù)興以來,中國在自然科學(xué)方面落后西方很多,軟件領(lǐng)域也不例外。當(dāng)然現(xiàn)在中國的許多程序員們對此可能有許多不同的意見,有些人認(rèn)為中國的程序員水平遠(yuǎn)落后于西方,有些則認(rèn)為中國的程序員個人能力并不比西方的程序員差,只是整個軟件產(chǎn)業(yè)落后而已。
那么,到底中國的程序員水平比西方程序員水平差,還是中國有許多優(yōu)秀的程序員達(dá)到或超過了西方程序員同等水平呢?要解決這個問題,必須先知道程序員有多少種技術(shù)層級,每個層級需要什么樣的技術(shù)水平,然后再比較中國和西方在各個技術(shù)層級的人數(shù),就可以知道到底有沒有差距,差距有多大。
當(dāng)然,對于如何劃分程序員的技術(shù)層級,不同公司或不同人會有不同的劃分標(biāo)準(zhǔn),下面的劃分僅代表個人的觀點(diǎn),如有不當(dāng)之處,還請砸板磚予以糾正。
第1層 菜鳥
第1層樓屬于地板層,邁進(jìn)這層樓的門檻是很低的?;旧隙嬎銠C(jī)的基本操作,了解計算機(jī)專業(yè)的一些基礎(chǔ)知識,掌握一門基本的編程語言如C/C++,或者Java,或者JavaScript,。..,均可入門邁進(jìn)這層。
在這層上,中國有著絕對的優(yōu)勢,除了從計算機(jī)專業(yè)畢業(yè)的眾多人數(shù)外,還有大量的通信、自動化、數(shù)學(xué)等相關(guān)專業(yè)的人士進(jìn)入這一行,此外還有眾多的其他專業(yè)轉(zhuǎn)行的人士,人數(shù)絕對比西方多出甚多。并且還有一個優(yōu)勢就是我們這層人員的平均智商比西方肯定高。
沒有多少人愿意一輩子做菜鳥,因?yàn)樽觥锁B’的滋味實(shí)在是不咋的,整天被老大們吆喝著去裝裝機(jī)器,搭建一下測試環(huán)境,或者對照著別人寫好的測試用例做一些黑盒測試,好一點(diǎn)的可以被安排去寫一點(diǎn)測試代碼。當(dāng)然如果運(yùn)氣‘好’的話,碰到了國內(nèi)的一些作坊式的公司,也有機(jī)會去寫一些正式的代碼。
所以,菜鳥們總是在努力學(xué)習(xí),希望爬更高的一層樓去。
第2層 大蝦
從第1層爬到第2層相對容易一些,以C/C++程序員為例,只要熟練掌握C/C++編程語言,掌握C標(biāo)準(zhǔn)庫和常用的各種數(shù)據(jù)結(jié)構(gòu)算法,掌握STL的基本實(shí)現(xiàn)和使用方法,掌握多線程編程基礎(chǔ)知識,掌握一種開發(fā)環(huán)境,再對各種操作系統(tǒng)的API都去使用一下,搞網(wǎng)絡(luò)編程的當(dāng)然對socket編程要好好掌握一下,然后再學(xué)習(xí)一些面向?qū)ο蟮脑O(shè)計知識和設(shè)計模式等,學(xué)習(xí)一些測試、軟件工程和質(zhì)量控制的基本知識,大部分人經(jīng)過2~3年的努力,都可以爬到第2層,晉升為‘大蝦’。
中國的‘大蝦’數(shù)量和‘菜鳥’數(shù)量估計不會少多少,所以這層上仍然遠(yuǎn)領(lǐng)先于西方。
大蝦們通常還是有些自知之明,知道自己只能實(shí)現(xiàn)一些簡單的功能,做不了大的東西,有時候還會遇到一些疑難問題給卡住,所以他們對那些大牛級的人物通常是非常崇拜的,國外的如Robert C. Martin、Linus Torvalds,國內(nèi)的如求伯君、王志東等通常是他們崇拜的對象。其中的有些人希望有一天也能達(dá)到這些大牛級人物的水平,所以他們繼續(xù)往樓上爬去。
第3層 牛人
由于‘大蝦’們經(jīng)常被一些疑難問題給卡住,所以有了‘大蝦’們只好繼續(xù)學(xué)習(xí),他們需要將原來所學(xué)的知識進(jìn)一步熟練掌握,比如以熟練掌握C++編程語言為例,除了學(xué)一些基礎(chǔ)性的C++書籍如《C++ Primer》,《Effective C++》,《Think in C++》,《Exception C++》等之外,更重要的是需要了解C++編譯器的原理和實(shí)現(xiàn)機(jī)制,了解操作系統(tǒng)中的內(nèi)部機(jī)制如內(nèi)存管理、進(jìn)程和線程的管理機(jī)制,了解處理器的基礎(chǔ)知識和代碼優(yōu)化的方法,此外還需要更深入地學(xué)習(xí)更多的數(shù)據(jù)結(jié)構(gòu)與算法,掌握更深入的測試和調(diào)試知識以及質(zhì)量管理和控制方法,對各種設(shè)計方法有更好的理解等。
學(xué)習(xí)上面說的這些知識不是一揮而就的,不看個三五十本書并掌握它是做不到的。以數(shù)據(jù)結(jié)構(gòu)算法來說,至少要看個5~10本這方面的著作;以軟件設(shè)計來說,光懂結(jié)構(gòu)化設(shè)計、面向?qū)ο笤O(shè)計和一些設(shè)計模式是不夠的,還要了解軟件架構(gòu)設(shè)計、交互設(shè)計、面向方面的設(shè)計、面向使用的設(shè)計、面向數(shù)據(jù)結(jié)構(gòu)算法的設(shè)計、情感化設(shè)計等,否則是很難進(jìn)到這個樓層的。
當(dāng)然除了上面說的知識外,大蝦們還需要去學(xué)習(xí)各種經(jīng)驗(yàn)和技巧。當(dāng)然這點(diǎn)難不倒他們,現(xiàn)在出版的書籍眾多,網(wǎng)絡(luò)上的技術(shù)文章更是不勝數(shù),然后再去各種專業(yè)論壇里泡一泡,把這些書籍和文章中的各種經(jīng)驗(yàn)、技能、技巧掌握下來,再去學(xué)習(xí)一些知名的開源項(xiàng)目如Apache或Linux操作系統(tǒng)的源代碼實(shí)現(xiàn)等。此時對付一般的疑難問題通常都不在話下,菜鳥和大蝦們會覺得你很‘?!?,你也就爬到了第3層,晉升為‘牛人’了。
看了上面所講的要求,可能有些大蝦要暈過去了,成為牛人要學(xué)這么多東西啊!要求是不是太高了?其實(shí)要求一點(diǎn)也不高,這么點(diǎn)東西都掌握不了的話,怎么能讓別人覺得你‘?!??
需要提一下的是,進(jìn)入多核時代后,從第2層爬到第3層增加了一道多核編程的門檻。當(dāng)然要邁過這道門檻并不難,已經(jīng)有很多前輩高人邁進(jìn)了這道門檻,只要循著他們的足跡前進(jìn)就可以了。想邁進(jìn)這道門檻者不妨去學(xué)習(xí)一下TBB開源項(xiàng)目的源代碼(鏈接:http://www.threadingbuildingblocks.org/),然后上Intel的博客(http://softwareblogs-zho.intel.com/)和多核論壇(http://forum.csdn.net/Intel/IntelMulti-core/)去看看相關(guān)文章,再買上幾本相關(guān)的書籍學(xué)習(xí)一下。
在國內(nèi),一旦成為‘牛人’,通??梢缘皆S多知名的公司里去,運(yùn)氣好者可以掛上一個架構(gòu)師的頭銜,甚至掛上一個‘首席架構(gòu)師’或者‘首席xx學(xué)家’的頭銜也不足為奇。有不少爬到這層的人就以為到了樓頂了,可以眼睛往天上看了,開始目空一切起來,以為自己什么都可以做了,什么都懂了,經(jīng)常在網(wǎng)絡(luò)上亂砸板磚是這個群體的最好寫照。由此也看出,國內(nèi)的牛人數(shù)量仍然眾多,遠(yuǎn)多于西方的牛人數(shù)量,在這層上仍然是領(lǐng)先的。
也有不少謙虛的‘牛人’,知道自己現(xiàn)在還不到半桶水階段。他們深知爬樓的游戲就像猴子上樹一樣,往下看是笑臉,往上看是屁股。為了多看笑臉,少看屁股,他們并沒有在此停步不前,而是繼續(xù)尋找到更上一層的樓梯,以便繼續(xù)往上爬。
掌握它,除此之外,還得經(jīng)常關(guān)注網(wǎng)絡(luò)和期刊雜志上的各種最新信息。
當(dāng)‘牛人’晉升為‘大?!?,讓‘牛人們’發(fā)現(xiàn)有比他們更牛的人時,對‘牛人’們的心靈的震撼是可想而知的。由于牛人們的數(shù)量龐大,并且牛人對大蝦和菜鳥階層有言傳身教的影響,所以大牛們通常能獲得非常高的社會知名度,幾乎可以用‘引無數(shù)菜鳥、大蝦、牛人競折腰’來形容,看看前面提過的Linus Torvalds等大牛,應(yīng)該知道此言不虛。
雖然成為‘大牛’的條件看起來似乎很高似的,但是這層樓并不是很難爬的一層,只要通過一定的努力,素質(zhì)不是很差,還是有許多‘牛人’可以爬到這一層的。由此可知,‘大?!@個樓層的人數(shù)其實(shí)并不像想像的那么少,例如比爾·蓋茨之類的人好像也是屬于這一層的。
由于‘大?!@層的人數(shù)不少,所以也很難統(tǒng)計除到底是中國的‘大?!瘮?shù)量多還是西方的大牛數(shù)量多?我估計應(yīng)該是個旗鼓相當(dāng)?shù)臄?shù)量,或者中國的‘大?!瘋儠嘁恍?。
看到這里,可能會有很多人會以為我在這里說瞎話,Linus Torvalds寫出了著名的Linux操作系統(tǒng),我國并沒有人寫出過類似的東西啊,我國的‘大牛’怎么能和西方的比呢? 不知大家注意到?jīng)]有,Linus Torvalds只是寫出了一個‘象模象樣’的操作系統(tǒng)雛形,Linux后來真正發(fā)展成聞名全球的開源操作系統(tǒng)期間,完全是因?yàn)樵S多支持開源的商業(yè)公司如 IBM等,派出了許多比Linus Torvalds更高樓層的幕后英雄在里面把它開發(fā)出來的。
可能有些菜鳥認(rèn)為Linus Torvalds是程序員中的上帝,不妨說個小故事:
Linus,Richard Stallman和Don Knuth(高德納)一同參加一個會議。
Linus 說:‘上帝說我創(chuàng)造了世界上最優(yōu)秀的操作系統(tǒng)?!?/p>
Richard Stallman自然不甘示弱地說:‘上帝說我創(chuàng)造了世界上最好用的編譯器?!?/p>
Don Knuth一臉疑惑的說:‘等等,等等,我什么時候說過這些話?’
由此可以看出,Linus Torvalds的技術(shù)水平并不像想像中那么高,只是‘牛人’和‘大蝦’覺得‘大?!人麄兏0闪?。也許有很多菜鳥、大蝦甚至牛人覺得‘大?!@層已經(jīng)到頂了,但大多數(shù)‘大?!烙嫅?yīng)該是有自知之明的,他們知道自己現(xiàn)在還沒有爬到半山腰,也就勉強(qiáng)能算個半桶水的水平,其中有些爬到這層沒有累趴下,仍然能量充沛,并且又有志者,還是會繼續(xù)往更上一層樓爬的。
看到這里,也許有些菜鳥、大蝦、牛人想不明白了,還有比‘大?!瘋兏叩臉菍?,那會是什么樣的樓層?下面就來看看
第4層 大牛
從第3層爬到第4層可不像上面說過的那幾層一樣容易,要成為大牛的話,你必須要能做牛人們做不了的事情,解決牛人們解決不了問題。比如牛人們通常都不懂寫操作系統(tǒng),不會寫編譯器,不懂得TCP/IP協(xié)議的底層實(shí)現(xiàn),如果你有能力將其中的任何一個實(shí)現(xiàn)得象模象樣的話,那么你就從牛人升級為‘大?!?。
當(dāng)然,由于各個專業(yè)領(lǐng)域的差別,這里舉操作系統(tǒng)、編譯器、TCP/IP協(xié)議只是作為例子,并不代表成為‘大?!欢ㄐ枰莆者@些知識,以時下熱門的多核編程來說,如果你能比牛人們更深入地掌握其中的各種思想原理,能更加自如的運(yùn)用,并有能力去實(shí)現(xiàn)一個象開源項(xiàng)目TBB庫一樣的東西,也可以成為‘大?!?,又或者你能寫出一個類似Apache一樣的服務(wù)器,或者寫出一個數(shù)據(jù)庫,都可以成為‘大?!?。
要成為‘大?!⒉皇且患唵蔚氖虑椋枰冻霰扰H藗兌嗟枚嗟呐?,一般來說,至少要看過200~400本左右的專業(yè)書籍并好好掌握它,除此之外,還得經(jīng)常關(guān)注網(wǎng)絡(luò)和期刊雜志上的各種最新信息。
當(dāng)‘牛人’晉升為‘大牛’,讓‘牛人們’發(fā)現(xiàn)有比他們更牛的人時,對‘牛人’們的心靈的震撼是可想而知的。由于牛人們的數(shù)量龐大,并且牛人對大蝦和菜鳥階層有言傳身教的影響,所以大牛們通常能獲得非常高的社會知名度,幾乎可以用‘引無數(shù)菜鳥、大蝦、牛人競折腰’來形容,看看前面提過的Linus Torvalds等大牛,應(yīng)該知道此言不虛。
雖然成為‘大牛’的條件看起來似乎很高似的,但是這層樓并不是很難爬的一層,只要通過一定的努力,素質(zhì)不是很差,還是有許多‘牛人’可以爬到這一層的。由此可知,‘大?!@個樓層的人數(shù)其實(shí)并不像想像的那么少,例如比爾·蓋茨之類的人好像也是屬于這一層的。
由于‘大牛’這層的人數(shù)不少,所以也很難統(tǒng)計除到底是中國的‘大?!瘮?shù)量多還是西方的大牛數(shù)量多?我估計應(yīng)該是個旗鼓相當(dāng)?shù)臄?shù)量,或者中國的‘大?!瘋儠嘁恍?。
看到這里,可能會有很多人會以為我在這里說瞎話,Linus Torvalds寫出了著名的Linux操作系統(tǒng),我國并沒有人寫出過類似的東西啊,我國的‘大牛’怎么能和西方的比呢? 不知大家注意到?jīng)]有,Linus Torvalds只是寫出了一個‘象模象樣’的操作系統(tǒng)雛形,Linux后來真正發(fā)展成聞名全球的開源操作系統(tǒng)期間,完全是因?yàn)樵S多支持開源的商業(yè)公司如 IBM等,派出了許多比Linus Torvalds更高樓層的幕后英雄在里面把它開發(fā)出來的。
可能有些菜鳥認(rèn)為Linus Torvalds是程序員中的上帝,不妨說個小故事:
Linus,Richard Stallman和Don Knuth(高德納)一同參加一個會議。
Linus 說:‘上帝說我創(chuàng)造了世界上最優(yōu)秀的操作系統(tǒng)?!?/p>
Richard Stallman自然不甘示弱地說:‘上帝說我創(chuàng)造了世界上最好用的編譯器。’
Don Knuth一臉疑惑的說:‘等等,等等,我什么時候說過這些話?’
由此可以看出,Linus Torvalds的技術(shù)水平并不像想像中那么高,只是‘牛人’和‘大蝦’覺得‘大牛’比他們更牛吧了。在我國,有一些當(dāng)時還處于‘大蝦’層的人物,也能寫出介紹如何寫操作系統(tǒng)的書,并且書寫得非常出色,而且寫出了一個有那么一點(diǎn)點(diǎn)象模象樣的操作系統(tǒng)來。我想中國的‘大牛’們是不會比西方差的,之所以沒有人寫出類似的商業(yè)產(chǎn)品來,完全是社會環(huán)境的原因,并不是技術(shù)能力達(dá)不到的原因。
‘大?!瘋冎猿蔀榇笈#饕脑蚴且?yàn)榘选H恕o蓋了下去,并不是他們自己覺得如何牛。也許有很多菜鳥、大蝦甚至牛人覺得‘大?!@層已經(jīng)到頂了,但大多數(shù)‘大?!烙嫅?yīng)該是有自知之明的,他們知道自己現(xiàn)在還沒有爬到半山腰,也就勉強(qiáng)能算個半桶水的水平,其中有些爬到這層沒有累趴下,仍然能量充沛,并且又有志者,還是會繼續(xù)往更上一層樓爬的。
看到這里,也許有些菜鳥、大蝦、牛人想不明白了,還有比‘大?!瘋兏叩臉菍?,那會是什么樣的樓層?下面就來看看
第5層 專家
當(dāng)大牛們真正動手做一個操作系統(tǒng)或者類似的其他軟件時,他們就會發(fā)現(xiàn)自己的基本功仍然有很多的不足。以內(nèi)存管理為例,如果直接抄襲Linux或者其他開源操作系統(tǒng)的內(nèi)存管理算法,會被人看不起的,如果自動動手實(shí)現(xiàn)一個內(nèi)存管理算法,他會發(fā)現(xiàn)現(xiàn)在有關(guān)內(nèi)存管理方法的算法數(shù)量眾多,自己并沒有全部學(xué)過和實(shí)踐過,不知道到底該用那種內(nèi)存管理算法。
看到這里,可能有些人已經(jīng)明白第5層樓的奧妙了,那就是需要做基礎(chǔ)研究,當(dāng)然在計算機(jī)里,最重要的就是‘計算’二字,程序員要做基礎(chǔ)研究,主要的內(nèi)容就是研究非數(shù)值‘計算’。
非數(shù)值計算可是一個非常龐大的領(lǐng)域,不僅時下熱門的‘多核計算’與‘云計算’屬于非數(shù)值計算范疇,就是軟件需求、設(shè)計、測試、調(diào)試、評估、質(zhì)量控制、軟件工程等本質(zhì)上也屬于非數(shù)值計算的范疇,甚至芯片硬件設(shè)計也同樣牽涉到非數(shù)值計算。如果你還沒有真正領(lǐng)悟‘計算’二字的含義,那么你就沒有機(jī)會進(jìn)到這層樓來。
可能有人仍然沒有明白為什么比爾·蓋茨被劃在了大牛層,沒有進(jìn)到這層來。雖然比爾·蓋茨大學(xué)未畢業(yè),學(xué)歷不夠,但是家有藏書2萬余冊,進(jìn)入軟件這個行業(yè)比絕大部分人都早,撇開他的商業(yè)才能不談,即使只看他的技術(shù)水平,也可以算得上是學(xué)富五車,頂上幾個普通的計算機(jī)軟件博士之和是沒有問題的,比起 Linus Torvalds之類的‘大牛’們應(yīng)該技高一籌才對,怎么還進(jìn)不了這層樓呢?
非常遺憾的是,從Windows操作系統(tǒng)的實(shí)現(xiàn)來看,其對計算的理解是很膚淺的,如果把Google對計算方面的理解比做大學(xué)生,比爾·蓋茨只能算做一個初中生,所以比爾·蓋茨永遠(yuǎn)只能做個大牛人,成不了‘專家’。
看到這里,也許國內(nèi)的大牛們要高興起來了,原來比爾·蓋茨也只和我等在同一個層次,只要再升一層就可以超越比爾·蓋茨了。不過爬到這層可沒有從‘牛人’升為‘大?!敲春唵危思冶葼枴どw茨都家有2萬多冊書,讓你看個500~1000本以上的專業(yè)書籍并掌握好它應(yīng)該要求不高吧。當(dāng)然,這并不是主要的條件,更重要的是,需要到專業(yè)的學(xué)術(shù)站點(diǎn)去學(xué)習(xí)了,到ACM,IEEE,Elsevier,SpringerLink,SIAM等地方去下載論文應(yīng)該成為你的定期功課,使用Google搜索引擎中的學(xué)術(shù)搜索更是應(yīng)該成為你的日常必修課。此外,你還得經(jīng)常關(guān)注是否有與你研究相關(guān)的開源項(xiàng)目冒出來,例如當(dāng)聽到有TBB這樣針對多核的開源項(xiàng)目時,你應(yīng)該第一時間到Google里輸入‘TBB’搜索一下,將其源代碼下載下來好好研究一番,這樣也許你的一只腳已經(jīng)快邁進(jìn)了這層樓的門檻。
當(dāng)你象我上面說的那樣去做了以后,隨著時間的推移,總會有某天,你發(fā)現(xiàn),在很多小的領(lǐng)域里,你已經(jīng)學(xué)不到什么新東西了,所有最新出來的研究成果你幾乎都知道。此時你會發(fā)現(xiàn)你比在做‘牛人’和‘大?!瘯r的水平不知高出了多少,但是你一點(diǎn)也‘?!黄饋恚?yàn)槟銓W(xué)的知識和思想都是別人提出來的,你自己并沒有多少自己的知識和思想分享給別人,所以你還得繼續(xù)往樓上爬才行。
-
程序員
+關(guān)注
關(guān)注
4文章
953瀏覽量
29825
發(fā)布評論請先 登錄
相關(guān)推薦
評論