【全是乾貨】談談如何學習一項新技能,沒有理論,全是實戰

Gavin1995發表於2018-02-27

前言

我的上篇文章:面試分享:專科半年經驗面試阿里前端P6+總結(附面試真題及答案) 評論區有幾位同學問我如何學習,今天就單獨開篇文章來談談吧,歡迎各位大佬在評論區貼上自己的學習方法。

以下是我的學習方式

學習某種語言

  1. 大致看一下官方文件,不要一個一個的仔細研究,太費時間也記不住(別擔心,後面有方式幫你記牢),英語不好的(我的英語比較渣)推薦直接使用Chrome+谷歌翻譯外掛通篇翻譯,讀懂大概意思,再回來看英文文件是否有理解偏差的地方,相當好用?。如果你有其它語言基礎,可以對比著看,很多東西是通的,找到他的不同點,瞭解他的優勢及實用場景

  2. 看看前輩們整理的Awesome Lists

  3. 想想你到底想用這個語言來幹什麼?

    • 假設我想要node.js來寫一個rest api,我就會 用github搜尋:node rest api(最好不要用中文搜尋)
    • 我會選取其中幾個Readme寫的好並且持續維護的專案直接clone到本地,開始一個一個研究clone下來的專案,最後對比著看,取他們所有優秀的地方
  4. express-mongoose-es6-rest-api 這個專案來舉例

    • 開啟專案,首先搞明白專案根目錄裡面的資料夾/檔案都是幹嘛的,這個時候谷歌搜尋就派上大用場了,一個個的搞明白

    • 通過上面步驟知道了應該在package.json裡面找找入口檔案(其它語言類似)

    • 可以從入口檔案直接讀它的原始碼,可能裡面很多內容看著都一臉懵逼,不要怕 不要怕 不要怕(穩住 我們能贏 哈哈)

    • 我當時讀的時候先看package.json(第一次看這些程式碼沒什麼先後順序的區分,完全憑感覺,最多就是走點彎路)

    • 附上我去年剛剛學習前端時候是如何讀package.json的,用包管理網站/谷歌搜尋一個一個的搞明白,堅持很重要,去年的筆記截圖:

      image
      image

    • 回頭看一下,通過上面步驟我學到了什麼酷炫的東西呢?

      • express、express開發模式、express常用三方中介軟體、及前端安全相關的一些東西
      • node.js的日誌管理
      • 使用joi驗證資料
      • jwt的使用,及應用場景(不止可用於js專案)
      • babel是幹什麼的,搞明白了後,我就開始寫es6/7程式碼了?
      • eslint是什麼玩意,搞明白後,我就用上了
      • gulp是個什麼玩意,開始自己試著編寫我需要的task
      • 學會使用nodemon
      • git commitizen規範(不止可用於js專案)
      • 服務端js測試及覆蓋率
      • travis CI(不止可用於js專案) ...... 還有一些,不一一列舉
    • 現在可以開始看原始碼了,不懂就查文件(這個時候看文件比之前直接看文件記得熟練)?

    • 看第一個專案往往是最難的,堅持吧,堅持下來後面就容易多了(這是我的笨辦法)

  5. 再舉一個學習其它語言的例子,前段時間看身邊很多小夥伴在手機上玩答題遊戲,我就想寫一個答題指令碼實現指令碼自動答題的功能

    • 首先第一個想到的就是研究下微信小程式跳一跳指令碼的實現原理
    • 在網上搜尋學習到跳一跳指令碼的一般實現原理:python起一個指令碼通過WebDriverAgent觸發ios裝置的截圖,根據截圖用python分析旗子位置,分析下一個方塊的中心點,根據演算法算出按住時間,python觸發WebDriverAgent執行
    • 開工...簡單看了python3.5的文件及編碼規範
    • github上找了個相關專案wechat_jump_game
    • 學習大概流程,及常用工具...
    • 開始寫自己的專案,期間遇到給跳一跳不太一樣的地方,答題遊戲需要文字識別,當然還是通過萬能的谷歌找答案:tesseract-ocr百度OCR,網上大部分人說谷歌的tesseract沒有百度ocr識別率高,所以直接用了百度OCR
    • 最後,寫完專案還要思考
      • 例1:如果不通過手機截圖(不通過webdriveragent)怎麼玩?可以通過手機連電腦,共享螢幕,然後電腦截圖,直接ImageGrab.grab很簡單;貌似還可以直接破解協議
      • 例2:你甚至可以寫這樣一個指令碼玩探探,哈哈
      • 例3:如何高階一點玩呢?加入face++人臉識別啊,算出顏值,漂亮的再喜歡(玩笑?,主要是想說明做完專案要思考,做這個專案能給你以後帶來什麼)

學習某種開源框架/工具

  1. 一般比較好的開源框架/工具,它自身專案裡面就會有很好的example與寫的很好的文件,比如next.js、redux等
  2. 如果沒有example,看文件
  3. 遇到問題直接看原始碼,打斷點慢慢除錯,太複雜實在不明白就看它的issue,沒有就提,提完一般要一段時間才有人回你,這期間可以自己去谷歌上搜尋相關問題,或者進入它的組織群,國內比如ant(直接加他們的微信/釘釘群),國外比如next.js,核心維護者一般都會留Twitter在文件裡,直接聯絡就好了(英語渣的使用谷歌翻譯,自己多補補英語),解決完問題記得關閉issue哦。

最後附上Github,以後blog也會第一時間更新到:https://github.com/Gavin1995 的blog專案 issue裡面

相關文章