一個程序員,從最基本的做做coding,到成為一代宗師,通常需要經(jīng)過下面六個階段:
第一階段
此階段主要是能熟練地使用某種語言。這就相當于練武中的套路和架式這些表面的東西。一般來說,比較好的入門語言有c/c++、java、delphi和perl(當然,匯編也是一門相當重要的工具)。就這四門語言而言,我通常只使用c/c++進行開發(fā),這是目前應用最為常見的語言,特別是c,和低級語言有很多相似之處;java的最大優(yōu)勢在于跨平臺性,但是其執(zhí)行效率確實是一大問題;delphi是數(shù)據(jù)庫開發(fā)人員的利器,如果你希望從事erp開發(fā),一定要學好這門語言(當然,也有c#,不過我沒有用過,也就不便評價:-P);至于perl,如果你要使用unix/linux平臺,這門語言一定要學會的!我推薦各位可以看看eckle寫的thinking in c++或者是thinking in java入門。這一階段最好的練習方法是多用最基本的語言寫程序,比如用c++的話,除了i/o之外,就不要使用任何的庫函數(shù)和api了,這樣才能盡快的掌握一門語言的基礎。
第二階段
此階段能精通基于某種平臺的接口(例如我們現(xiàn)在常用的win32 api)以及所對應語言的自身的庫函數(shù)。到達這個階段后,也就相當于可以進行真實散打?qū)毩,可以真正地在實踐中做些應用。目前,在windows平臺下最好的參考資料當屬msdn,上面有絕大多數(shù)win32 api的介紹,不過都是e文的(最起碼我拿到的版本是),要求有較高的e文能力(大概也就6級的水準吧)。至于庫函數(shù),一般在網(wǎng)上很容易找到相應參考資料的。最好的練習方法就是多寫些程序,但和第一階段不同的是,這一階段要盡量用api和庫函數(shù)寫。
第三階段
這個階段要求程序員深入地了解某個平臺系統(tǒng)的底層,具備初級的內(nèi)功,也就是“手中有劍,心中無劍”。這個階段要求程序員對os的原理和實現(xiàn)有一定的理解,最好使用開源平臺進行學習,如linux,因為在windows下,所有的細節(jié)都是屏蔽的,很難了解到它到底是怎樣運行的。這個階段正是我目前努力的目標,按照目前的進度,我在今年就應該能夠升級到這里了:-)
第四階級
到達這個階段的人就不多了,這些人大都是一流的黑客、公司的骨干了,能直接在平臺上進行比較深層次的開發(fā)。比如能進行vxd(想想當年陳盈豪的cih病毒)或操作系統(tǒng)的內(nèi)核的修改。這時已經(jīng)不再有語言的束縛,惟一的束縛就是你的開發(fā)思想,語言只是一種工具,即使要用自己不會的語言進行開發(fā),也只是簡單地熟悉一下,就手到擒來,完全不像是第一階段的時候?qū)W習語言的那種情況。一般來說,從第三階段過渡到第四階段是比較困難的,因為很多人的思想變不過來。
第五階級
前幾個階段就好比獨孤求敗年輕用的那柄削鐵如泥的寶劍和那把玄鐵重劍,在一定程度上依賴著武器的威力。但在這個階段,程序員就如同四十之后的獨孤求敗,劍由心生,隨便選取一根樹枝就能當作威力無窮的寶劍。全局把握、整體設計,包括從內(nèi)核到外層,這時的程序員已經(jīng)不是傳統(tǒng)意義上的程序員了,或許叫做項目更合適。如果達到這個階段,你就可以直接向ms遞交申請了,而且一定成功:-P
第六階級
此階段也是最高的境界,達到“無招勝有招”。這時候,任何問題就純粹變成了一個思路的問題,不是用什么代碼就能表示的。也就是“手中無劍,心中也無劍”。此時,對于練功的人來說,他已不用再去學什么少林拳,只是在旁看一下少林拳的對戰(zhàn),就能把此拳拿來就用(就像張無忌學習三十六式龍爪手一樣)。這就是真正的大師級的人物,比如linus,或許gates也能算達到這個境界了吧。這時,Win 32或Linux在你眼里是沒有什么差別的。
每一個階段再向上發(fā)展時都要按一定的方法。第一、第二個階段通過自學就可以完成,只要多用心去研究,耐心地去學習。要想從第二個階段過渡到第三個階段,就要有一個好的學習環(huán)境。例如有一個高手帶領或公司里有一個好的練手環(huán)境。經(jīng)過二、三年的積累就能達到第三個階段。但是,有些人到達第三個階段后,常常就很難有境界上的突破了。他們這時會產(chǎn)生一種觀念,認為軟件無非如此,認為自己已無所不能。其實,這時如果遇到大的或難些的軟件,他們往往還是無從下手。
現(xiàn)在我們國家大部分程序員都是在第二、三級之間。他們大多都是通過自學成才的,不過這樣的程序員一般在軟件公司也能獨當一面,完成一些軟件的模塊。但是,也還有一大堆處在第一階段的程序員,他們一般就能玩玩VB,做程序時,去找一堆控件集成一個軟件。坦白的說,利用控件完成程序本身也是一種很好的開發(fā)模式,但是這樣對于程序員自身的提高而言并無任何好處。
相關推薦:考試吧策劃:2010年軟件水平考試完全指南北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |