程式設計師自我修養之IT人學習方法論——學習誤區

edithfang發表於2014-07-07

一些常見的學習方法誤區

1)資料導向型

現在就停止閱讀這篇文章,開啟“你的電腦”,看看一你的硬碟上是否一個名為“XX資料”的資料夾,我相信,這裡面一定儲存著大量你精心收集的電腦教程、電子書、培訓材料、課程視訊等等。我敢打賭,絕大多數的IT人都會在自己的電腦上儲存一個或者幾個這樣的資料夾,其中內容往往經過精心分類,數量在幾GB甚至幾十GB之巨。請再扭頭看一看你的書架,你所購買的各類計算機書籍、雜誌,是否已經把書架堆滿了?你買的書籍種類,是否已經涵蓋了從程式設計、Windows管理、Unix/Linux一直到美工和PhotoShop?

這是很多人都會經歷的一個“資料導向型”的學習誤區。你現在可以仔細統計一下,你電腦中的資料和書架上的書籍,有多少是從來沒有看過的?有多少是看過超過1/3的?又有多少是真正看完並且對你的技術和工作產生了實質性幫助的?

我這裡想提出一個概念,叫做“有效學習時間 ”,意思是說在學習所花費的所有時間中,對自己掌握新知識、大腦思考和學習新技術、動手操作並且積累經驗直接有關的時間。回顧我們的學習習慣,當開始一項新知識或者新技術的學習時,我們往往是從買書和在網上收集資料開始,據我統計,在學習時,我們有50%時間在收集資料、30%時間在整理資料、20%時間在翻看資料!也許這樣的數字有些誇張,但是你可以回顧一些自己最近的學習過程,看一看是否滿足這樣的80/20分佈,統計一下自己的“有效學習時間”是多少。

“有效學習時間”的多少,直接決定了你的學習結果和效率。有的人在IT行業沉浮多年,涉獵領域廣泛,電子版的資料和各類的圖書“汗牛充棟”,但是常常覺得自己非常迷茫,很多技術都不夠精通和深入。這時,需要從學習的基本效率和學習的有效時間上反思一下了。儲存在硬碟和書架上的並不能直接成為你的能力,不是硬碟有多大,知識就有多豐富;也不是書架有多高,技術就有多牛。你需要大量的“有效學習時間”,把這些轉化為自己的積累。我說的語言可能非常直白,甚至不給人留面子,但卻說的是一個樸實的道理。

2)似懂非懂型

這種型別,換句話說,就是不求甚解。一些IT的概念和產品,往往是比較容易理解的,粗略的翻譯一下書,心裡也許就知道個十之八九了。可是,IT技術和產品往往是跟特殊的環境和場景相關聯的,懂得概念,並不見得能夠在應用上融會貫通。有些朋友看書非常快,不留意書中的細節,只是圂圇吞棗,一目十行,把一些大概的知識點和概念記住了,就以為已經掌握了。

我寫的這些誤區,其實很多都是自己經歷過的。以“似懂非懂型”這個舉個例子,我講一個我自己經歷過的故事。剛畢業的時候在微軟的技術支援部門工作,起初是負責Office/Outlook產品的支援,後來逐漸開始接觸ExchangeServer。當時書看了不少,各種試驗沒少做,客戶的問題也能大概的解決。後來曾經有一個機會,去面試Exchange產品的高階技術職位,本以為自己對這個產品已經非常熟悉,可是沒想到被真正的專家一再考問,很多細節立刻變得模糊,對一些自己以為非常清楚的模組也沒有辦法說的太深入。我想大家也許都有這樣的經歷,認為自己已經懂了,或者覺得這些不太重要,但是就是這些似懂非懂,或者你忽略的地方,在某個特殊時候會跳出來找你的麻煩。“出來混得,遲早要還”,這真是至理名言阿。似懂非懂,歸根結底還是不懂。
因此,如果你認定要學好一門技術,就要抱著打破沙鍋問到底決心,不給自己的知識結構上留下漏洞。資料導向型這個誤區說的是學習要有足夠的效率,要把握“有效學習時間”,似懂非懂型這個誤區,就是說學習的結果和質量,花費了足夠的有效學習時間,必須保證產出的結果是一個過硬的,經得住檢驗的知識結構。

3)丟西瓜撿芝麻型

前面說了學習需要建立一個“經得住檢驗的知識結構”,這並不等於你需要對所學技術或者產品的每一個細節都爛熟於心。過於關注細節,就犯了“丟西瓜撿芝麻”的錯誤了。有些人學Linux,要對每個命令的引數都仔仔細細的背下來,有的人做Windows的網路管理,卻非要花時間搞明白活動目錄的資料庫結構,甚至有人曾發email給我,說決心要把Exhcange的Database介面和物理結構給反向工程出來。

想想前一篇blog中我引用莊子的話吧,“吾生也有涯,而知也無涯,以有涯隨無涯,殆也”。在這些細節問題上死磕,無異與浪費生命啊。話又說回來,到底如何定義西瓜和芝麻?學習,到底需要學到什麼樣的深度?這其實也是一個非常難以把握的問題。我們在前一篇blog討論了“心法”和“招式”,在具體的一項技術或者產品的學習過程中,如何定義“西瓜”和“芝麻”呢?我是這樣理解的:

西瓜,就是巨集觀層面的概念、方法、最佳實踐,一些短期之內不會隨著產品的變化而變化的知識;一些可以活學活用,體現產品設計思想的理念;它可以是一些技術細節,前提是掌握這些細節是會對產品的設計、優化或者故障排除等方面發揮作用的。
芝麻,往往是一些需要機械性記憶的資訊,或者一些被廠商封裝在“黑盒”中的部分。把Linux的命令悉數的背誦下來,並不能讓你成為專家,反向工程廠商的“黑盒”,也只會做一些徒勞無益的努力。

讀到這裡,可能讀者對“芝麻”和底層原理這類“心法”級別的學習會產生混淆,深入地探究一個系統的內部,難道不是提高技術能力的方法嘛?其實,這是有區別的。我前文所提到的底層原理這類“心法”級別的知識,是指獨立於任何廠商產品的理論知識,是放之四海皆準的真理,是現在、未來,當前版本和以後N+1版本都用得著的知識;而我說的“芝麻”,是指特定產品的細節和被廠商有意封裝底層部分,是那種今天學完,明天就過期作廢的東西。比如說,學Windows,你可以看作業系統的教材來獲得“心法”,這樣的知識,即使微軟出了Windows3000,你也用得上;但是如果你去反向工程ntoskrnl.exe,即使搞出了一個所以然,只要微軟發一個ServicePack,你掌握所有的東西就都變了,你也就陷入了丟西瓜撿芝麻的誤區了。不知道我這樣,是不是把這個問題說明白了。:-)

本文轉載自:http://cricode.com/2740.html
相關閱讀
評論(1)

相關文章