程式設計師不破此關,難達優秀
今天我們來聊如何修煉專業技能。內容分如下 3 個部分:
- 開發者成長的14個階段
- 普通和優秀的關鍵差別
- 知識如何內化成體系
一個一個來說吧。
插一句:我正在參加CSDN 2018年部落格之星評選,希望你能投我一票,我在 NO.55。
感謝你寶貴的一票,投票地址:https://bss.csdn.net/m/topic/blog_star2018/index
(一)開發者成長的14個階段
之前介紹了德雷福斯模型:
這是一個非常好的模型,我在看的時候,覺得如果有一個更細緻的階段劃分,會對開發者定位自己更有幫助,所以,就總結了出了下面的14個階段:
- 看書,看視訊,看部落格,聽課等等
- 對著書敲程式碼
- 脫離書自己敲程式碼
- 自己實現一些小DEMO
- 進專案看程式碼
- 在別人指點下寫程式碼
- 獨立在別人搭建好的框架內填寫程式碼
- 獨立負責別人設計好的模組的實現
- 獨立負責一個軟體模組的設計和實現
- 負責較大的軟體模組,拆分模組,分子任務給他人
- 從程式設計、單一模組設計,進入軟體系統架構設計的學習(書、課、人、搜)
- 負責一個專案的子系統或一個小專案的架構設計,拆分,分派任務
- 負責一個涵蓋前後端、業務較複雜的專案的架構設計,拆分架構,分配角色,分派任務
- 做中大型軟體系統的架構設計(架構師),或專注特定領域,解決疑難雜症
這14個階段是自解釋的,每個人都可以對照著它找到自己的位置,然後看到自己的下一個臺階。
(二)不同階段間的關鍵差別
讓我們從開發者遇到的問題說起,找出不同階段開發者的關鍵差別。
你可能遇到這種問題:
可能遇到下面的問題:
可能經常被人這樣問:
也可能經常被人這樣問:
此時你的反應過程是什麼樣子的呢?
有人沒反應:
有人可以想到一些線索,通過查詢、搜尋,找到答案:
有人一經提示,馬上就能想到是怎麼回事:
有人看到問題,腦子立即瘋狂運算,迅速找到答案:
這 4 種不同層次的反應,內在差別在哪裡呢?
這得從我們遇到問題時的反應過程說起。這個過程是這樣的:
- 接受問題
- 調取知識,分析問題
- 綜合應用知識,生成解決方案
從這個過程可以看出:知識的多寡,決定我們能否正確分析問題,找到答案。
這正是不同階段開發者之間的關鍵差別所在:知識和知識體系。
(此圖僅為舉例,每個方向都有自己的知識體系)
當一個開發者進入第9個階段以後,往往就有了圍繞著某個領域的完整的知識體系。層次越高,知識體系越豐富,越根深葉茂。同時,對知識的運用也越嫻熟,一發牽全身動,窺一斑知全豹,遇到問題,瞬間由此及彼,遍歷知識庫,找到答案。
(三)知識如何內化成體系
那麼,怎麼建立圍繞某個領域的知識體系呢?簡單講:
- 幹中學
- 事上練
- 常回顧
- 重關聯
什麼意思呢?
先看我畫的開發者工作學習流程圖:
從這張圖可以看到,開發者一般很少有專門時間來學習知識和技能,多數時候是進專案,在做專案的過程中,會使用已有知識,會接觸到各種新知識,不懂不會,就通過看書、聽課、問人、搜尋等方式來學習,然後直接組合使用各種知識來做事,在做事中內化知識,然後交付專案。專案交付後,可能會進入回顧階段,練習使用過的知識,梳理新知識和已有知識的關聯,將新知識納入知識體系。
整個過程濃縮起來就是:幹中學、事上練、常回顧、重關聯。
這其中尤為重要的是:常回顧、重關聯。這是兩個反芻過程,能夠讓我們有效提升對知識的理解,能夠讓我們有機會迭代已有知識體系。有了這兩個階段,我們才不會像猴子掰玉米一樣,交付了 N 多專案,自己身上什麼也沒留下。
在知識內化形成知識體系的過程中,還有3點特別重要:
- 頻度
- 強度
- 有意練習
實踐的頻度是指我們應當以足夠短的時間週期重複使用某個知識,以期達到第一反應的水準。頻度對結果有非常大的影響,比如每週都用抽象工廠模式,那過一個月,可能對抽象工廠就諳熟於心了,而如果兩年用一次,可能每次要用的時候都要重新學習。
強度是指開發工作要在時間上和難度上具備挑戰性。時間上的強度,指每次練習要有時間層面的緊張感,即限時完成,甚至短時間要求超額完成。難度是指每次知識實踐,都要設定超出當前應用水準的目標,以便撕裂知識肌肉,產生痛感,激起探索欲,提升對知識的應用能力。
有意練習,指的是對於新知識,要有意識地、刻意地在實踐中使用。比如你學習了裝飾模式,就要創造條件去使用它,有事沒事兒都要琢磨怎麼用。這樣,才能提升使用頻度,促進內化。一個新知識,你不有意琢磨它,它是萬萬不會自動傍身的。
(零)總結 && 預告
今天我們介紹了開發者的14個成長階段,指出不同階段之間的關鍵差別在於知識的豐富程度以及知識是否成體系,然後介紹了修煉知識體系的12字箴言——“幹中學、事上練、常回顧、重關聯”,順帶還介紹了知識內化時的3個要點。
熟練應用這些,可以讓我們很好的修煉技術能力。然而,除了技術,我們還需要另外兩大類至關重要卻往往被忽略的能力:人際溝通能力和專案管理能力。
我接下來要整理的第5篇文章就是——程式設計師加薪升職之人際溝通。
我正在參加CSDN 2018年部落格之星評選,希望你能投我一票,我在 NO.55。
感謝你寶貴的一票,投票地址:https://bss.csdn.net/m/topic/blog_star2018/index 。