通常,我們得知了一種新技術新領域,所做出的第一反應就是去了解它,學習它的使用方法,最後再借助相關文件和google來邊實踐邊熟悉這項技術。
但是這樣真的是把技術學到家了嗎?我們或許只是把知識簡單的搬運到了大腦中。讓我們來看乙個簡單的生活中的例子。
在玩具店中,擺放了乙隻「會說話的小黃鴨」。這只會念兒歌、會講故事的鴨子在不同人的眼中可以有不同的解讀:在這裡,我們可以看到我之前的學習方法,似乎只停留在了「小孩」層面,即只學習了最表面最直接的資訊。面對ognl的價值和意義,以及他是如何在框架中實現的,我一概不知。即使我能熟練地使用它,卻不理解他為何廣為所用,不理解它的底層實現。可能很多初學者都跟我一樣,在乙個「小孩」的層面去學習,所做的只不過是資訊的搬運工,將知識從其他地方搬到了我們的知識庫中。在孩子眼中,他關心的是「小黃鴨說了什麼」,於是他聽到的是兒歌、故事。即孩子關心的是最直接的資訊。
在家長眼中,他們關心的是「小黃鴨是什麼」,首先他們會把它定義為乙個玩具(而不是一直「鴨子」),然後他們可能會對這只鴨子的娛樂性、教育性、安全性、價效比等做出評判。也就是說,家長關心的是價值和意義。
在玩具構建者的眼中,他們關心的是「小黃鴨是怎麼做出來的」,他們會思考和設計小黃鴨有哪些功能模組,會想它的電路結構以及聲光效果。也就是說,構建者關心的是結構和實現。
其實最好的學習方法是循序漸進,把問題當做一段多層加密的密文,逐步解碼。在面對知識的時候,我們可以依次問自己四個問題(從「小孩角度」到「構建者角度」):
這個知識是什麼?(ognl是一種什麼樣的語言?去了解它的背景)
他能完成什麼工作?(他能完成什麼操作?去學習他怎麼使用)
這個知識的價值何在,我們為什麼要用它而不選用其他的知識來替代它?(ognl相比於el表示式有什麼優勢?了解它的特性和較其他技術的強大之處)
這個知識是如何實現它的價值的,他憑什麼有這種效果?(ognl在struts2中的底層實現是什麼樣的?通過底層**來學習它的結構組成,實現原理)
一一破開了密文的面紗,才能真正解讀一門技術。在能熟練使用它的同時,還能根據實際需求判斷是否需要運用它,也就是通過深入剖析它的結構,達到對其價值的理解,從而判斷它的應用場景。
如何學習一門技術
第一步 what 1 這個技術是什麼,本質是什麼?2 這個技術的核心模組有哪些,核心架構是什麼?3 整體流程,細節流程,核心模組的細節分析 核心原理,核心類,流程圖 第二步 why 1 為什麼要使用,解決什麼問題,是否替代方案?2 版本有哪些,每個版本的新增特性,解決問題?3 優缺點是什麼,與同類技...
如何學習一門技術
這一階段主要是對該技術有乙個整體了解,他所解決的是什麼問題,他的整體結構等.第二個階段,學會基本使用了就要去看官方文件,文件會讓你更加詳細的了解該技術的特性,開乙個demo專案把官方的一些例子都試試.第三個階段,嘗試在一些複雜的專案中使用 非生產專案 使用過程中難免會遇到各種各樣的問題,官方文件和搜...
如何學習一門新技術
前言 這個問題非常關鍵,也就是所,你必須知道這個技術的成因和目標。這個也是這個技術的靈魂所在。如果你不知道這些東西的話,那麼你就會看不懂這個技術的一些設計理念。首先,任何一門技術都有他的優勢和存在的不足。比如redis,他的優勢很明顯,作為乙個nosql型別的資料庫,redis將資料存入記憶體當中,...