隨筆-199  評論-203  文章-11  trackbacks-0
          我把學習歸類為三個步驟:WhatHowWhy。經過我對周圍同事和朋友的觀察,大部分感覺自己技術沒有提高的人,都僅僅停留在What階段。下面我把這三個步驟解釋一下。

            第一步:WHAT
            所謂的WHAT,就是搞清楚某個東東是什么?有什么用?有什么語法?有什么功能特性?......
            舉例如下:
            對于學習語言(比如C++Java),大部分人都能夠掌握基本的語法和標準庫,然后用它寫一些小程序(諸如二分查找、冒泡排序、簡單文件操作等)。
            對于學習類庫(比如JDBC類庫),大部分Java程序員都能明白JDBC主要包含哪些類,也能夠用JDBC進行簡單的數據庫查詢和增刪改操作。
            由于這個步驟是最基本的,假如你連這都做不到(可能你的理解力不夠好),也別在IT界混了。
            但是光會What是不夠的。僅僅停留在這個步驟,導致了很多程序員只知其然,不知其所以然。這就是目前大部分開發人員的現狀。

            第二步:HOW
            所謂的HOW,就是搞清楚某個東西內部是如何運作的?實現機制如何?等一系列相關問題。
            舉例如下:
            假如你在學習C++語言,你是否搞明白函數傳參數的實現機制?虛函數是如何實現?拋出異常時的棧回退是怎么回事?......
            假如你在學習Java語言,你是否搞清楚GC如何實現?反射是如何實現?......
            假如你在學習JDBC庫,你是否清楚JDBC Driver4種類型?不同游標類型的實現機制?事務的機制?......
            在這個階段,你必須多想想類似這些問題。然后通過各種途徑(參見關于自學能力的幾個方法),把問題徹底搞清楚。自然而然,你的提高就會比較明顯。而且如果碰到一些深層次的問題(比如性能優化),也就知道該如何解決。
            完成這個階段之后,你基本上就屬于該技術領域最優秀的20%的人(根據二八原理80%的人不會去思考HOW的問題)。

            第三步:WHY
            一般來說,只有你把HOW的問題想清楚,才開始考慮步驟WHY
            所謂的WHY,就是搞清楚某個東西為什么設計成這樣?為什么不是另外的樣子?這樣的設計有什么講究?
            說實在的,善于問為什么有一定的天賦成分?好像某個科學大牛曾經說過提出問題有時候比解決問題更難。一般來說,只有當你深刻理解了某個東西,才能夠針對這個東東的設計問出一些問題。所以,我前面強調過,要先把HOW的問題搞清楚,再來考慮WHY的問題。
            舉例如下:
            對于C++語言:為什么C++沒有類似Javafinally關鍵字?為什么C++當初沒有考慮GC......
            對于Java語言:為什么Java沒有類似C++的類析構函數?為什么Java要同時提供StringStringBuffer兩個似乎冗余的類?......
            如果你能夠自己問出諸如上述的為什么問題,并且能夠通過各種途徑找到解答,那你基本上已經吃透這個技術了,并且你已經有可能自己去設計一個類似的玩意兒了。到這時,你已經踏上了通向技術高手的康莊大道。

            由于本博客偏重IT方面,所以今天舉的這些例子多半都是IT相關的,但是這個三部曲在IT以外的行業/領域其實也能適用,就看讀者自己的領悟了。
          posted on 2009-02-20 13:55 Werther 閱讀(102) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 额济纳旗| 霍林郭勒市| 新兴县| 高唐县| 宜章县| 新龙县| 新蔡县| 宣化县| 华池县| 大邑县| 报价| 郎溪县| 兴安盟| 新源县| 婺源县| 青川县| 平泉县| 海丰县| 莎车县| 闻喜县| 新建县| 嵊州市| 河源市| 孝感市| 汕尾市| 克东县| 慈利县| 东辽县| 梨树县| 柞水县| 太白县| 宜丰县| 吕梁市| 江城| 灌阳县| 阳原县| 繁昌县| 曲麻莱县| 荥阳市| 收藏| 荔浦县|