Saturday, October 1, 2011

[轉錄] 一個程序員的成長六個階段

[轉錄] 一個程序員的成長六個階段

第一階段
此階段主要是能熟練地使用某種語言。
這就相當於練武中的套路和架式這些表面的東西。

第二階段
此階段能精通基於某種平臺的介面
(例如我們現在常用的Win 32的API函數)
以及所對應語言的自身的庫函數。
到達這個階段後,也就相當於可以進行真實散打對練了,
可以真正地在實踐中做些應用。

第三階段
此階段能深入地瞭解某個平臺系統的底層,
已經具有了初級的內功的能力,也就是“手中有劍,
心中無劍”。

第四階級
此階段能直接在平臺上進行比較深層次的開發。
基本上,能達到這個層次就可以說是進入了高層次。
這時進入了高級內功的修煉。
比如能進行VxD或作業系統的內核的修改。
這時已經不再有語言的束縛,
語言只是一種工具,即使要用自己不會的語言進行開發,
也只是簡單地熟悉一下,就手到擒來,
完全不像是第一階段的時候學習語言的那種情況。
一般來說,從第三階段過渡到第四階段是比較困難的。
爲什麽會難呢?這就是因爲很多人的思想變不過來。

第五階級
此階段就已經不再局限於簡單的技術上的問題了,
而是能從全局上把握和設計一個比較大的系統體系結構,
從內核到外層介面。可以說是“手中無劍,心中有劍”。
到了這個階段以後,能對市面上的任何軟體進行剖析,
並能按自己的要求進行設計,就算是MSWord這樣的大型軟體,
只要有充足的時間,也一定會設計出來。

第六階級
此階段也是最高的境界,達到“無招勝有招”。
這時候,任何問題就純粹變成了一個思路的問題,
不是用什麽代碼就能表示的。也就是“手中無劍,
心中也無劍”。此時,對於練功的人來說,他已不用
再去學什麽少林拳,只是在旁看一下少林拳的對戰,
就能把此拳拿來就用。 這就是真正的大師級的人物。
這時,Win 32或Linux在你眼?堿O沒有什麽差別的。
每一個階段再向上發展時都要按一定的方法。
第一、第二個階段通過自學就可以完成,
只要多用心去研究,耐心地去學習。

要想從第二個階段過渡到第三個階段,
就要有一個好的學習環境。例如有一個高手帶領或
公司?埵酗@個好的練手環境。經過二、三年的積累就
能達到第三個階段。但是,有些人到達第三個階段後,
常常就很難有境界上的突破了。他們這時會産生一種觀念,
認爲軟體無非如此,認爲自己已無所不能。其實,
這時如果遇到大的或難些的軟體, 他們往往還是無從下手。

現在我們國家大部分程式師都是在第二、三級之間。
他們大多都是通過自學成才的,不過這樣的程式師一般在
軟體公司也能獨當一面,完成一些軟體的模組。但是,
也還有一大堆處在第一階段的程式師,他們一般就能
玩玩VB,做程式時,去找一堆控制項集成一個軟體。