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

NO IMAGE

前言

我的上篇文章:面試分享:專科半年經驗面試阿里前端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的,用包管理網站/谷歌搜索一個一個的搞明白,堅持很重要,去年的筆記截圖:

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

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

      • 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裡面

相關文章

深入理解Webpack打包分塊(上)

WebAssembly系列一:WebAssembly介紹

Flutter系列一:Flutter快速入門

大前端性能總結