如何學習新技術?

信息爆炸,充斥著大量的知識。

過去時代,知識積累有限,且獲取途徑有限,所以學習的主要方式是看書,老師教授。

但是現在的社會,知識積累發展的速度以及豐富多彩的途徑,決定了我們需要採用有別於過去的方法去學習。

在現在的社會,如何高效掌握一門技術呢?下面談談自己的感想。


明確目的

人是具有能動性的,而能動性發揮的前提是有目標。

如果你漫無目標的去學習,那麼你的效率比較低。為什麼低呢?如果你沒有目標,意味著你在看書,查看文章等內容時,沒有重點。在這個過程中你會將自己的精力均分到不同的知識點上,也許這在以前可以稱之為全面發展,但在現在這個信息爆炸的社會,可能會出現少許的弊端,在一本書中,一篇文章中,可能會涉及很多內容,你如果把精力浪費在無關緊要的地方,可能你會浪費大量的時間。如果你每篇文章都採用這種方式,那麼結果是: 浪費總時間 = 單位浪費時間 * 數量

(上面提到的方法更多針對的是主題閱讀,如果閱讀的目的是為了消遣、放鬆,那麼可參考其他的閱讀的方法)


新的技術接觸路線

查看該技術能夠應用的場景,解決的問題

(由人已有的認識出發,逐漸擴展到新的東西。壞處是可能帶入一些慣性思維)

解決方案的演繹

在計算機行業,很多事情你得親自去做才能有深刻的體會。在不看別人的解決方案的前提下,你能想到的最好解決問題的方式是什麼。

思考:

  • 問題分解】你真的理解問題嗎?通過將大的問題分解成一些列的問題。(比如,「程序比較慢,如何解決?」這就是一個較大的問題,分解為小的問題:「通過優化網路能否加速程序的處理過程?」,「如何通過引入多線程提升程序的速度?」...)
  • 解決方案的演化】不要直接看別人的解決方案,嘗試去利用自己的現有的知識去解決響應的問題。你如果錯過了這個思考問題的機會,後面你理解別人為何這樣子做可能會花費你數倍的時間。不要祈求一下子就讓自己的解決方案達到完美,而要有迭代的思維,相信解決方案、模型是在不斷迭代中完善的。
  • 參與到演化過程中來,將會使你更加具有變動的眼光來看待軟體世界。

引入技術

經過前面步驟,你的「土」的解決方案也許並沒有成熟技術那樣好,但接下來查看新的技術,你將會更加懂得從哪個角度去品位,去入手。

(你的方案也許失敗了,但碰壁的經驗留下了)

明確技術解決的主要問題

記住:技術是隨問題出現的。

如果你學技術,不知道他能幹啥。這可能意味著你更多是被動的接收。

自頂向下的方式掌握技術的核心思維、核心機制

很多技術的內部細節是非常複雜的,但設計者為了方便其他人使用,需要設計符合程序員認識的介面,以此來屏蔽到相應的底層細節。

如果僅是為了使用框架,你在理解響應的基本概念的基礎上,通過框架使用的場景案例來學習是一種不錯的學習方式。

如果是為了學習框架的思想,那麼你應該採用軟體設計思想(自頂向下)來逐層深入了解。如果深入到某一層(比如介面設計層)你覺得已經滿足你了,那就沒有必要再進行下去了;如果你想深入研究某個模塊,你也可以深入到代碼層面,去查看更加細節的東西。

(更新中...)


推薦閱讀:

TAG:計算機科學 | 計算機 | 應用計算機科學 |