(轉貼) 一個程式師的成長的六個階段 (OO) (Design Pattern)
Abstract
我常覺得寫程式的境界跟練武功的境界很像,這也就是為什麼我特別喜歡看武俠小說的原因。
Introduction
轉貼自叶付海的C++的一个程序员的成长的六个阶段(转 ) ,對繁體用語稍加潤飾。
第一階段
此階段主要是能熟練地使用某種語言。這就相當於練武中的套路和招式這些表面的東西。
第二階段
此階段能精通基於某種平臺的介面(例如我們現在常用的Win 32的API函數)以及所對應語言的自身的程式庫函數。到達這個階段後,也就相當於可以進行真實散打對練了,可以真正地在實踐中做些應用。
第三階段
此階段能深入地瞭解某個平臺系統的底層,已經具有了初級的內功的能力,也就是“手中有劍,心中無劍”。
第四階級
此階段能直接在平臺上進行比較深層次的開發。基本上,能達到這個層次就可以說是進入了高層次。這時進入了高級內功的修煉。比如能進行VxD或作業系統的內核的修改。
這時已經不再有語言的束縛,語言只是一種工具,即使要用自己不會的語言進行開發,也只是簡單地熟悉一下,就手到擒來,完全不像是第一階段的時候學習語言的那種情況。一般來說,從第三階段過渡到第四階段是比較困難的。為什麼會難呢?這就是因為很多人的思想變不過來。
第五階級
此階段就已經不再局限於簡單的技術上的問題了,而是能從全域上把握和設計一個比較大的系統體系結構,從內核到外層介面。可以說是“手中無劍,心中有劍”。到了這個階段以後,能對市面上的任何軟體進行剖析,並能按自己的要求進行設計,就算是MS Word這樣的大型軟體,只要有充足的時間,也一定會設計出來。(真OO 無雙:也就是已經到了重視設計(Design)、架構(Architecture)階段,這時注重的是如物件導向分析、泛型編程、Design Pattern、軟體工程、敏捷開發...等議題,程式寫出來已經不是問題,重視的是架構好不好,日後好不好維護)。
第六階級
此階段也是最高的境界,達到“無招勝有招”。這時候,任何問題就純粹變成了一個思路的問題,不是用什麼代碼就能表示的。也就是“手中無劍,心中也無劍”。
此時,對於練功的人來說,他已不用再去學什麼少林拳,只是在旁看一下少林拳的對戰,就能把此拳拿來就用。這就是真正的大師級的人物。這時,Win32或Linux在你眼裡是沒有什麼差別的。(真 OO無雙:這種就是已經不需要Design Pattern,也不需物件導向,隨手寫來都是很有架構的程式,甚至可以自創Pattern或者另闢典範,如Eric Gamma之流,誠大師級人物也。)
Conclusion
每一個階段再向上發展時都要按一定的方法。第一、第二個階段通過自學就可以完成,只要多用心去研究,耐心地去學習。
要想從第二個階段過渡到第三個階段,就要有一個好的學習環境。例如有一個高手帶領或公司裡有一個好的練手環境。經過二、三年的積累就能達到第三個階段。
但是,有些人到達第三個階段後,常常就很難有境界上的突破了。他們這時會產生一種觀念,認為軟體無非如此,認為自己已無所不能。其實,這時如果遇到大的或難些的軟體,他們往往還是無從下手。
現在我們國家大部分程式師都是在第二、三階段之間。他們大多都是通過自學成才的,不過這樣的程式師一般在軟體公司也能獨當一面,完成一些軟體的模組。(真 OO無雙 :到練到第六階段需要天分,必須天生骨骼驚奇、萬中選一而可遇不可求,但最少要鼓勵自已以第五階段為終身目標,身為程式設計師的你,你練到第幾階段了?)