程式設計師的學習方法【思考】
程式設計師的學習方法
作為IT業的一員,我們幾乎每天都有大量的知識需要學習,有大量的技能等待我們去掌握。幾乎從我決定“獻身”程式設計師這一偉大事業之後,我就一直在考慮怎麼提高自身的學習的能力(簡稱學習力),以下兩張圖作為我多年學習生涯得來的寶貴經驗,拿出來和同學們分享。
如果你看到的第一張是埃及的金字塔,第二張是中國的太極圖,說明我的圖片沒錯:第一張代表“知識的金子塔結構”,第二張說明了“理論和實踐的相生相剋原理”。
一、知識的金字塔結構。我把我瞭解的軟體知識分成了四個層次:思想,原理,技術和應用,他們之間的關係就像金字塔一樣:
- 思想:目前我覺得能上思想的就兩個:演算法和麵向物件。
- 原理:原理就有很多了,比如計算機組成原理,網路連線的原理,作業系統的檔案訪問原理,GC的執行原理等等。
- 技術:這個就數不過來了,比如Asp.net技術啦,Ajax,WPF……這些統統是技術。
- 應用:世界上所有機器上執行的程式碼,都算是應用。
思想到應用的劃分沒有高低貴賤,而只是抽象層次的不同。
學習的過程,就是通過某一個應用,瞭解它所使用的技術,進而掌握其中的原理,最後,領悟其中的思想。這大概也就對應了“瞭解”、“掌握”和“精通”這三個層次吧。所以學習力的高低,在於對高層次抽象的掌握能力。
舉個例子:設計模式這最近幾年很火,23個模式翻來覆去的有人在講。我不知道有幾個人認真看了,又有幾個人能記得住,反正我比較懶,也比較笨。但是笨人有笨辦法,面向物件就那麼幾個概念:“繼承”、“派生”、“多型”,說的再具體一點,也就DIP,SRP這麼幾個原則,大體看看每個設計模式中運用了哪些概念和什麼原則,下次在遇到類似的問題,估計就能把這個模式用出去。(PS:此處選擇性的忽略了模式在溝通上的意義,呵呵)。
所以要提高學習力,咱們看書就地多看些有深度的書,什麼“精通”啦、“速成”啦,就免了。孫子兵法、道德經之類的思想藏的太深,想用在程式碼裡咱沒那水平。像《敏捷軟體開發 原則、模式與實踐》,《深入淺出設計模式》之類的就剛剛好。
可是也千萬別認為思想就比應用更重要,沒有應用,要思想、原理、技術作甚?
二、理論和實踐的相生相剋原理。
說完抽象,再看看理論與實踐的關係,老祖宗的太極圖很形象的說明了這個問題,再看一下:白色代表理論,黑色代表實踐:
- 白色走到頭,和黑色接觸的就更多:實踐多了,更容易理解理論。
- 黑色走到頭,和白色接觸的也更多:理論的東西看多了,就可以更好的實踐。
- 白色走到頭,就會產生黑色:實踐的東西多了,自然會有理論產生。
- 黑色走到頭,就會產生白色:理論的東西多了,自然而然就會想去試試看。
所以我常用的方法是邊看書,邊寫程式,看完書就試著把學到的東西用在專案裡。感覺這樣能把知識體系穿起來,容易記,不容易忘;寫程式寫多了就回過頭來琢磨一下看看哪兒好哪兒不好,下次肯定會有進步。
本文摘至: http://blog.csdn.net/fengyunzi_007/article/details/2632891