學(xué)習(xí)技術(shù)的三部曲:WHAT、HOW、WHY

把學(xué)習(xí)歸類為三個步驟:What、How、Why。

經(jīng)過我對周圍同事和朋友的觀察,大部分感覺自己技術(shù)沒有提高的人,都僅僅停留在What階段。

下面我把這三個步驟解釋一下。

?第一步:WHAT 所謂的“WHAT”,就是搞清楚某個東東是什么?有什么用?有什么語法?有什么功能特性?......

舉例如下:對于學(xué)習(xí)語言(比如C++、Java、Python),大部分人都能夠掌握基本的語法和標(biāo)準(zhǔn)庫,然后用它寫一些小程序(諸如二分查找、冒泡排序、簡單文件操作等)。

對于學(xué)習(xí)類庫(比如JDBC類庫),大部分Java程序員都能明白JDBC主要包含哪些類,也能夠用JDBC進行簡單的數(shù)據(jù)庫查詢和增刪改操作。由于這個步驟是最基本的,假如你連這都做不到(可能你的理解力不夠好),也別在IT界混了。 但是光會What是不夠的。僅僅停留在這個步驟,導(dǎo)致了很多程序員只知其然,不知其所以然。這就是目前大部分開發(fā)人員的現(xiàn)狀。

第二步:HOW

所謂的“HOW”,就是搞清楚某個東西內(nèi)部是如何運作的?實現(xiàn)機制如何?等一系列相關(guān)問題。

?舉例如下:假如你在學(xué)習(xí)C++語言,你是否搞明白函數(shù)傳參數(shù)的實現(xiàn)機制?虛函數(shù)是如何實現(xiàn)?拋出異常時的?;赝耸窃趺椿厥??......

?假如你在學(xué)習(xí)Java語言,你是否搞清楚GC如何實現(xiàn)?反射是如何實現(xiàn)? 假如你在學(xué)習(xí)JDBC庫,你是否清楚JDBC Driver的4種類型?不同游標(biāo)類型的實現(xiàn)機制?事務(wù)的機制?學(xué)習(xí)群64弍46衣3凌9,資料群69似64陸0吧3

在這個階段,你必須多想想類似這些問題。然后通過各種途徑(參見“關(guān)于自學(xué)能力”的幾個方法),把問題徹底搞清楚。自然而然,你的提高就會比較明顯。而且如果碰到一些深層次的問題(比如性能優(yōu)化),也就知道該如何去解決。

完成這個階段之后,你基本上就屬于該技術(shù)領(lǐng)域最優(yōu)秀的20%的人(根據(jù)二八原理,80%的人不會去思考HOW的問題)。

?第三步:WHY

一般來說,只有你把HOW的問題想清楚,才開始考慮步驟WHY。所謂的“WHY”,就是搞清楚某個東西為什么設(shè)計成這樣?為什么不是另外的樣子?這樣的設(shè)計有什么講究?

?說實在的,善于問“為什么”有一定的天賦成分?好像某個科學(xué)大牛曾經(jīng)說過“提出問題有時候比解決問題更難”。一般來說,只有當(dāng)你深刻理解了某個東西,才能夠針對這個東東的設(shè)計問出一些問題。所以,我前面強調(diào)過,要先把HOW的問題搞清楚,再來考慮WHY的問題。

?舉例如下:對于C++語言:為什么C++沒有類似Java的finally關(guān)鍵字?為什么C++當(dāng)初沒有考慮GC?......

對于Java語言:為什么Java沒有類似C++的類析構(gòu)函數(shù)?為什么Java要同時提供String和StringBuffer兩個似乎冗余的類?......    對于Python語言:為什么Python不提供類似C++/Java的訪問控制機制?......

?如果你能夠自己問出諸如上述的“為什么”問題,并且能夠通過各種途徑找到解答,那你基本上已經(jīng)吃透這個技術(shù)了,并且你已經(jīng)有可能自己去設(shè)計一個類似的玩意兒了。到這時,你已經(jīng)踏上了通向技術(shù)高手的康莊大道。 由于本博客偏重IT方面,所以今天舉的這些例子多半都是IT相關(guān)的,但是這個三部曲在IT以外的行業(yè)/領(lǐng)域其實也能適用,就看讀者自己的領(lǐng)悟了

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容