程式設計師十步學習法

someecho發表於2018-11-04

如何學習一門新知識??

大概的流程就是: 初期調研一下整個知識的基本資訊,然後制定一個學習目標,搜尋相關的學習資源,篩選出最適合自己的,制定一個可行的學習計劃,然後開始學習, 在學習的過程中,你一開始需要了解整個知識的全貌,然後對一個個知識細節,通過反覆實踐、反覆思考,總結歸納出自己的理解。同時分享和交流讓你獲得更多的成就感以及額外的 收穫。

通過以上方法,使得你的學習過程更為結構化,不用一頭扎進知識的海洋。這種方式通過利用人天生的好奇心來幫助我們吸收更多的知識,這才是學習原驅動。

當然,你需要關注的並不是方法本身,你可以任意棄用,這些步驟本身不重要,重要的是其中蘊含的思想和方法。

  • 步驟:1~6 一次完成 7~10 反覆迴圈

參考:《軟技能-程式碼之外的生存指南》

1. 瞭解全域性

一開始最需要的是克服未知的恐懼。行動起來,去了解、發現,探索和好奇是學習最大的驅動力。

要了解的具體內容

  • 背景: 誰創造的,什麼時候
  • 用途: 為了解決什麼問題
  • 原理: 大致思想是什麼,大致知識體系是什麼
  • 重要性: 在整個知識體系中位於什麼地位,和其他知識之間的關聯
  • 應用場景:具體用於幹啥的,在哪些地方用上了,大致實現方式

行動

  • 網路搜尋相關知識
  • 翻閱相關書籍的目錄
  • 請教導師或瞭解這方面知識的人

有很多菜鳥教程算是對知識的啟蒙了,可以在網上找到; 還有一些介紹性的wiki,也比較適合。

2. 範圍規劃

明確自己要學習的範圍,確定一下哪些是你當前需要了解的。 比如你要學習redis用於java web系統開發,那lua等就不用深入瞭解

行動

  • 構造一個知識圖譜,注意 考慮時間因素、合理切分
  • 擬定一個學習提綱,再然後劃出你目前需要學習的部分
  • 請教導師,讓過來人幫你寫個學習提綱
3. 明確目標

明確你學習這個是為了什麼?去掉你的虛榮心或不切實際的幻想

  • 你的目的一定要純粹、簡單

行動

  • 閉上你的雙眼,思考一下你內心真實的希望,你是渴望力量、敏捷、還是智力
  • 目標一定要能激勵你學習成長,同時具有可行性
  • 想象一下目標成功後的樣子,然後倒推一下實現步驟
4. 尋找資源

很多人一開始學習的時候,就在網上搜尋部落格文章,遇到什麼就學什麼,這樣沒有章法,而且講解不一定準確可行,導致事倍功半

資源清單

  • 官方文件 : 最準確的資源
  • 圖書 : 書籍一般都對知識講解比較深刻、系統,學習成本相對較高
  • 部落格文章 : 實操性強,易於理解,但是系統性不強,不完全準確
  • 線上視訊、課程 : 最為生動,但較為費時
  • 對你想學習的知識早已熟悉的人 :可遇不可求
  • 原始碼 : 原始碼比較難懂、但最接近知識的本質
  • 例項專案 : github很強
  • 文獻報告:專業性較強
5. 制定計劃

行動

  • 從基礎出發、制定一個可行的知識點學習計劃
  • 不要超過學習範圍,注意時間上的規劃
6. 篩選資源

通過你的學習計劃,篩選出你的學習資源,把冗餘的、不太準確的資源去除

行動

  • 檢視書評和目錄,找出最優質的書籍
  • 不要把書籍中超過學習範圍的知識點,納入你當前的學習計劃
  • 選擇適合的線上視訊或文章
  • 嘗試瞭解相關英文文獻
7. 淺嘗輒止

目的: 對於知識內容有一個完整的瞭解

  • 既不能盲目的囫圇吞棗、要對整個知識體系有大致的瞭解
  • 也不能鑽牛角尖、死磕浪費時間
8. 動手實踐

目的:通過行動,對於知識內容的實現方式、產生效果有較為深刻的瞭解

行動

  • 寫一個demo程式,或者測試案例
  • 對於教程的描述的現象和結果,要自己親自體驗和操作
  • 把暫時不懂的記錄下來
9. 融會貫通

目前:對於知識整體的關聯關係、原理有自己深刻的理解

  • 出於自己的好奇心,通過閱讀文字、觀看視訊等,把某一個小知識點搞清楚
  • 有選擇的反覆精讀相關知識,反覆嘗試,舉一反三,直到弄懂為止
  • 將各個知識點串聯起來,結合之前的實現,總結歸納成自己的知識圖譜
10. 分享交流

將你所學的知識淺顯易懂的講給別人聽,在這個過程中,你可能會有對這個知識額外的收穫和理解。

行動

  • 將你所掌握的知識,寫成文章,釋出到網上,並回復別人的留言
  • 寫一個開源的demo專案,用於闡述你所掌握的知識
  • 發表相關演講和交流會
  • 在stackoverflow上回答相關問題

相關文章