程式設計師的技術成長三階段模型
技術成長三階段模型
為了更好地選擇技術方向,我們先來介紹一個模型,我給它取了個名字叫“技術成長三階段模型”,參照下圖1-1所示。
圖1-1 技術成長三階段模型
我們在一個專業領域內的成長,基本上都會經歷三個階段:
- 初級階段:專項能力的提升
- 中級階段:技能體系的構建
- 高階階段:融合創新
1.初級階段:專項能力的提升
專項能力提升階段是初級階段,針對某項具體任務你必須先具備某些基礎能力,比如從事軟體開發工作,你要學會某種語言、某個 IDE、某種技術框架……
如果你剛剛從學校畢業從事開發工作,或者剛剛從別的跑道轉換到開發領域,那麼你就處在這個階段。這個階段最重要的目標就是提升專項能力,讓自己能夠迅速搞定一些別人安排給你的事情,體現出你的價值。
這個階段持續的時間長短因人而異,可能會是1~3年。如果超過3年還沒有進入下一個階段,那麼你的成長速度就需要提升了。
2.中級階段:技能體系的構建
當你擁有了一組技能,圍繞某個方向構建了自己的知識圖譜,能夠用自己的方式來解決問題時,代表你已經進入了中級階段。比如你使用 Java 語言做後臺方面的開發,你的技能體系可能由 Java、MyBatis、Spring、SpringMVC、Netty、MySQL、Python、Linux 等組成。此時你在團隊中,應該已經可以獨立負責某個模組,能夠完成模組的設計和開發工作,也能夠指導初級階段的同事進行開發。
你可能需要2~3年,經歷2~3個專案才能慢慢構建起自己的技能樹,然後還會在這個階段再待上1~2年,不斷練習你的技能體系中的各項技能。所以當你能夠擁有一棵強大的技能樹時,距離你剛從事開發工作可能有5~8年了。
假如你超過這個年限,用過的技術還是散亂的,東一榔頭西一棒槌,不能有機組合在一起,那麼你的開發經驗和能力,肯定大大落後於你的工作年限。換句話說,你可能把一年工作經驗學到的知識、技能機械地重複了幾年,沒有獲得應有的成長。
3.高階階段:融合創新
這是高手階段,你擁有了豐富的實踐經驗,具備了 T 型知識結構,形成了自己的思維框架和解決問題的框架,能夠融合不同領域的知識,組合各種資源,創造性地解決各種問題。
進入這個階段非常重要的一個標誌就是當你遇到問題時,不再從下而上去思考(即從技術實現細節來考慮問題好不好實現、拿技術去裁剪問題或重定義問題),而是從實現細節跳脫出來,站到更高的層面,自頂向下去思考、去分析,先運用框架、邏輯去分析真正的問題是什麼、問題的目的、問題的現狀、如何去解決。搞明白這些之後,你才會沉降到技術層面去考慮實現的選擇,而且實現時,你也不會拘泥於某種技術,而是什麼技術合適就用什麼技術(你的目的不是“用 Java 或 Redis 解決問題”,而是“解決問題”)。簡單說,就是你走出了被技術束縛和塑造的過程(前兩個階段),可以反過來回到問題本源來思考了。
在這三個階段中,我們都會遇到選擇技術方向的問題。比如在初級階段,入門時要選擇,發現某種技術不適合自己時要重新選擇;在中級階段,我們要選擇某些技術來構造我們的技能樹,或者要做技術轉型,需要重新選擇技術方向;再比如在高階階段,我們往往會負責產品的技術方案探索與選型,免不了要選擇技術方向,甚至在這個時候,我們個人也可能會在技術方向上轉型,必須有所選擇。
所以,我們根據技術成長的三階段模型,挑選了下面幾個可能需要選擇技術方向的時機,分開來講在這些時機下如何選擇技術方向。
- 入行的技術選擇
- 構建技能樹的技術選擇
- 技術轉型的選擇
- 方案選型的選擇