2022年9月23日 星期五

學習技術的三部曲(作者:編程隨想)

 轉:

2009219 123 評論 標籤: 學會思考學習方法

學習技術的三部曲:WHATHOWWHY

文章目錄

第一步:WHAT
第二步:HOW
第三步:WHY
後續更新

  最近幾天有些網友在郵件裡面問我關於學習的問題。有好幾個人覺得工作了幾年,也學會了不少的類庫、框架、甚至語言,但是感覺自己的能力沒有太大的提高。因此今天來說一下我個人對這方面的體會,希望對大夥兒(尤其是新手)有幫助。
  先聲明一下,本帖子討論的三部曲是指你已經選定了某個技術方向之後,該如何學習;至於如何選定技術方向,則屬於另一個話題,不在今天的討論之列。
  我把學習歸類為三個步驟:WhatHowWhy。經過我對周圍同事和朋友的觀察,大部分感覺自己技術沒有提高的人,都僅僅停留在 WHAT 階段。下面我把這三個步驟解釋一下。


★第一步:WHAT


  所謂的“WHAT”也就是“What is it?”——這是最簡單的層次。在這個層次,你要搞清楚某個東東是【什麼】樣子的?有【什麼】用處?有【什麼】特性?有【什麼】語法?......
  舉例如下:

對於學習語言(比如 C++JavaPython),大部分人都能夠掌握基本的語法和標準庫,然後用它寫一些小程式(諸如二分查找、冒泡排序、簡單檔操作等)。
對於學習類庫(比如 JDBC 類庫),大部分 Java 程式師都能明白 JDBC 主要包含哪些類,也能夠用 JDBC 進行簡單的資料庫查詢和增刪改操作。

  由於這個步驟是最基本的,假如你連這都做不到(可能你的理解力不夠好),也別在 IT 行業混了。
  但是光會 What 是不夠的。僅僅停留在這個步驟,導致了很多程式師【只知其然,不知其所以然】。這就是目前大部分開發人員的現狀。

★第二步:HOW


  所謂的“HOW”就是“How to do?”。在這個層次,你要搞清楚某個東西,其內部是【如何】運作的?【如何】實現的?......
  舉例如下:

假如你在學習 C++ 語言,你是否搞明白函數傳參數的實現機制?虛函數是如何實現?拋出異常時的棧回退是怎麼回事?......
假如你在學習 Java 語言,你是否搞清楚 GC 如何實現?反射是如何實現?......
假如你在學習 JDBC 庫,你是否清楚 JDBC Driver 4種類型?不同游標類型的實現機制?事務的機制?......

  在這個階段,你必須多想想類似這些問題。然後通過各種途徑(參見關於自學能力的幾個方法),把問題徹底搞清楚。自然而然,你的提高就會比較明顯。而且如果碰到一些深層次的問題(比如性能優化),也就知道該如何去解決。
  完成這個階段之後,你基本上就屬於該技術領域最優秀的20%的人(根據二八原理80%的人不會去思考 HOW 的問題)。

★第三步:WHY


  一般來說,只有想清楚 HOW 之後,才能繼續去考慮 WHY
  所謂的“WHY”,就是搞清楚某個東西【為什麼】設計成這樣?【為什麼】不是另外的樣子?這樣的設計有什麼講究?......
  說實在的,善於問為什麼有一定的天賦成分?好像某個科學大牛曾經說過提出問題有時候比解決問題更難。一般來說,只有當你【深刻理解】了某個東西,才能夠針對這個東東的【設計】問出一些問題。所以,我前面強調過,要先把 HOW 的問題搞清楚,再來考慮 WHY 的問題。
  舉例如下:

對於C++語言:為什麼 C++ 沒有類似 Java finally 關鍵字?為什麼當初發明 C++ 的時候沒有考慮 GC......
對於Java語言:為什麼 Java 沒有類似 C++ 的類析構函數?為什麼 Java 要同時提供 String StringBuffer 兩個似乎冗餘的類?......
對於Python語言:為什麼 Python 不提供類似 C++/Java 的存取控制機制?......

  如果你能夠【自己】問出諸如上述的為什麼問題,並且能夠通過各種途徑找到解答,那你基本上已經吃透這個技術了,並且你已經【有可能】自己去【設計】一個類似的玩意兒了。到這時,你已經踏上了通向技術高手的康莊大道。

  由於本博客偏重 IT 方面,所以今天舉的這些例子多半都是 IT 相關的。但這個三部曲 IT 之外的行業和領域,其實也適用。如何舉一反三,就看各位的悟性了。

★後續更新


  寫完本文3年之後(2012),俺又寫了一篇《用提問來促進思維——兼談【非】技術領域的 WHAT HOW WHY 三部曲》,談“IT 之外的行業和領域,如何運用這三部曲。


俺博客上,和本文相關的帖子(需翻牆)
用提問來促進思維——兼談【非】技術領域的 WHAT HOW WHY 三部曲
如何【系統性學習】——媒介形態聊到“DIKW 模型
如何完善自己的知識結構
書評:<你的燈亮著嗎?——找到問題的真正所在>
為什麼獨立思考這麼難?——談談心理學的成因,並分享俺的經驗
批判性思維掃盲:學會區分事實觀點
思維的誤區:倖存者偏見——順便推薦巴菲特最著名的演講
思維的誤區:忽視沉默的大多數
光環效應引發的認知誤區
學會透過現象看本質,即使現象有時候挺詭異

版權聲明
本博客所有的原創文章,作者皆保留版權。轉載必須包含本聲明,保持本文完整,並以超連結形式注明作者程式設計隨想和本文原始地址:
https://program-think.blogspot.com/2009/02/study-technology-in-three-steps.html


 

 

沒有留言:

張貼留言