如何看待系統學習的重要性?

技術文章

如何在學校之外學習新知識,怎麼系統化?系統化學習的標準是什麼?是否有可操作的步驟?

為了避免泛泛而談,我就以計算機科學為例來說明吧。

 

很多人問我如果原來不是學計算機專業, 想轉行做計算機軟體工程師,是否可以通過自學完成?這件事其實是可以做到的, 不過大約需要一年左右的時間學習和一年左右的時間練習。具體的做法是這樣的。

 

首先我們要倒著理解成為一個合格的計算機工程師需要什麼樣的知識體系。

 

既然是計算機工程師,一定要會寫程式, 這點大家恐怕都同意。但是大部分人即使能寫一些程序,比如給你的單位算算賬, 處理一些業務的日誌,或者設計一個控制家庭 IoT 的程序,卻寫不了幾萬行的大程序,比如在給你算法後寫一個能夠工作的人臉識別程序,因為這涉及的方方面面太多,光會寫程序的人 hold 不住。

 

要想做到這一點,就需要理解搭建計算機軟體的那些模塊一一數據結構和算法了。你可以把數據結構理解為蓋房子的鋼筋、 門窗和大樑,把算法理解成蓋房子的結構原理。沒有這些,你從沙石出發,很難蓋成一個大廈。

 

但是如果你善於利用已有的組建,懂得蓋房子的原理,就可以很決設計出蓋房子的流程,並且用半成品蓋一個房子。於是, 會寫程序後,就需要了解數據結構和算法了。這就有些系統性了。

 

不過,即便人在設計軟體時可以不受資源的限制,但是世界上任何一台真實的計算機的資源都是有限的。

 

因此再接下來,如果你想寫一個效率較高的程式,問題又來了,你需要了解計算機能給你提供多少資源,你的程式在計算機系統結構這個框架內,應該怎麼優化。

 

於是你就需要學習兩門課一一計算機的原理,以及計算機的系統結構。這樣才能寫出一個有效的程序。如果一個人不懂得這些知識,也能寫程序,但是寫出來的程序不夠優化,在市場上沒有競爭力。這就如同蓋房子的人不懂得做預算,蓋出的房子肯定是收不回成本。

 

好了,現在你學了一肚子的知識,其實離實用還有差距,接下來怎麼用好它們呢?最簡單的辦法就是看一個例子,比如理解如何用計算機識別人臉,看看別人是怎麼做的。於是你又需要學一門應用類的計算機課程,比如計算機視覺,學完它,你就知道計算機科學家和軟件工程師是如何將一個生活中的問題,變成一個計算機可以解決的問題。

 

當然,你學習自然語言處理、資料庫,或者計算機控制等等都沒有問題。總之要通過學習一門課,有切身的感受。

 

這些內容都學完了,恐怕至少要一年時間。在這中間,你需要不斷地練習,這就如同教練告訴你打網球的技巧後,你不練習還是不會打一樣。至於要練習多長時間就看個人的天賦和悟性。

 

如果你要想成為頂級的工程師,10,000 小時的練習恐怕是必要的。但是,即使練了1萬小時,也不敢保證就能成為頂級人才,這中間有很多其他的因素影響最後的結果。比如你是否能遇到一個好師父帶你,是否遇到一個合適的項目讓你練習, 是否具有計算機思維,等等。當然,如果成為一個合格的工程師,可能 1/4 的時間也就夠了也就是2,500 小時大約一年,如果你想成為好的會計、律師,方法和上面描述的也差不多。

 

關於系統性學習有四個現象和原則要提醒:

 

  1. 要了解知識的背景和相關性。

 

任何一個知識點都需要放到更大的環境去理解。今天很多創業者和企業家非常似渴地學習很多新的概念,他們收看馬雲、雷軍等人的每一次談話,或者拿著德魯克、哈耶克的書死磕,但是他們忽略這些人講話的場合,時間點和對象。不了解背景和環境,那些知識點就難以應用。這也是我們強調系統性學習的原因。

 

  1. 選擇和過濾訊息,把所學的知識使用好。

 

今天的訊息很多,大部分人要做的事倩,不是更多地接受訊息,而是選擇和過濾訊息,把所學的知識使用好。此外,學會使用 Google 查找訊息以及講述知識的影片,也非常重要,要能夠在需要使用時手到擒來。千萬不要把有限的腦容量用來記憶不常用的訊息。

 

  1. 學習的目的不能是為了“解除焦慮”,而是為了解決你真正遇到的問題。

 

很多人莫名其妙地焦慮,然後學了一些熱門的新知,一瞬間獲得那種〝哇,我懂了,我了解了新技術〞的廉價快感,但是,這種快感來得決也去得快,焦慮並沒有消除,甚至因為知道的東西多了更焦慮了。學習的目的應該集中在解決問題,並且為了解決問題進行深度思考,直到問題解決。

 

  1. 系統的學習離不開討論。

 

來源:《吳軍-如何看待系統學習的重要性?》

Gimmy
作者: Gimmy
積極的人在每一次憂患中都看到一個機會 而消極的人則在每個機會都看到某種憂患

發表迴響