如何快速學一門新語言?
先說結論
我花了半個月時間學習Go?,就開發了商業項目,抗住了并發考驗,并且成功被Go圈粉。
2022年初,入職新公司后,花了3天時間,學習GoFrame框架,提前完成了開發任務,在項目復盤會上成了同事口中的"大佬"。
我是如何做到的呢?如何快速學習一門新語言呢?
我認為核心就三點:
第一:多動手
第二:不依賴教程的多動手
第三:帶著問題的多動手
咱們具體講講
我在初學Go的時候,之前學習編程語言的經驗告訴我:
入門階段先不要給自己提出很多問題,也不要對自己要求過高。
第一階段就是多動手
手撕官方文檔,把文檔中的知識點都手敲幾遍,可以有不懂不理解的,這很正常,但是一定要手敲。
而且要盡可能多的手敲,盲敲,不看教程的敲代碼。
第二階段不依賴文檔
自己通過思維導圖或者更簡單的方式,比如列出todolist,集中1小時的時間強迫自己獨立完成知識點的復現。
具體的操作方式是這樣的:
第一步:只列出知識點,最多寫出實現思路,不要寫代碼。
第二步:關閉教程和文檔,自己去實踐,手敲實現一個個知識點和小的需求。
期間如果碰到了問題,也不要去看當時學習的參考文檔,而是通過查看報錯,或者IDE的錯誤提示去嘗試自己解決問題。
第三階段帶著問題去學習
當我們可以不依賴教程就能實現需求之后,這時候才建議大家帶著問題去學習,去思考。
對于初學者來說,如果入門的第一階段就帶著問題去思考,很容易鉆進牛角尖;更可能因為搞不清楚某個知識點而煩躁沮喪,如果因為這些原因“被勸退”可就太虧了。
總結
所以,學習一定要分階段進行。
每個階段做每個階段的事情,每個階段有每個階段關注的重點。
不要胡子眼睛一把抓,貪多嚼不爛。
初識GoFrame
下面再分享一下學GoFrame從小白到“大佬”的故事。
我在學習Go?語言的時候,和大多數同學一樣,是使用的Gin + gorm完成的第一個入門項目開發的。
2022年初,換工作后,新公司用的 GoFrame 框架,開始接觸時也是一臉懵啊,因為公司項目緊,也沒有時間像上面介紹的那樣,能有充足的時間分三個階段去學習,只能一邊查前輩們寫的代碼,一邊實現新的需求。
當時很好奇,公司為什么選擇GoFrame框架。
問過同事才知道,原來公司之前全是PHPer,經過充分的調研發現:PHP轉Go最合適的框架就是GoFrame。
我在查文檔的時候還看到了這么一條評論:
好吧,因為我之前做了幾年PHP,也非常喜歡Laravel框架,聽到這個說法,還是有些竊喜的,感覺對于PHPer來說,學習GoFrame的成本應該不高。
但是,我看公司前輩的代碼很頭大,學習筆記做的很辛苦,效率也并不高。
如果你也有遇到類似的問題,我強烈建議你這么做:
以官方文檔為重點,而不是前輩的代碼,帶著項目中的問題有針對性的查文檔。同時再花時間從頭到尾系統的閱讀官方文檔。
以我的經歷舉例:
當時剛入職,公司給了我兩天的時間熟悉項目需求、已有代碼和架構設計,從第三天就開始參與需求評審做項目了。
前兩天看前輩的代碼可以說是一臉懵,類似的需求,每個人的實現方式都不一樣,團隊內并沒有統一的代碼規范。
我也和老大吐槽過,老大給我的建議是:希望我能輸出規范的代碼,形成規范,之后讓大家按照我的標準寫。
好吧,壓力和責任更大了,于是:
我白天積極的和同事確定不清楚的需求,溝通之前的實現細節,為什么這么寫等等。
晚上回到家帶著疑問去刷官方文檔,刷完對應的知識點后整理筆記,這些筆記不怕細碎,只要是對實現需求有幫助,能提高我工作效率的都會記錄。
todolist
記錄todolist是個非常好的習慣,和大家重點分享一下:
- 比如,能復用的代碼,方便我快速查找的代碼,沒有理解透徹的代碼等等,我都會記錄到筆記,并且記錄成todolist,最后統一花時間逐個解決。
- 細碎的知識點如果有不理解的,我也會先放放,不用因為一兩個不懂的知識點影響整體的學習進度。
- 我又花了大概兩個晚上下班后的時間,熬夜刷文檔,從頭到尾刷官方文檔,比較深刻的理解了框架的設計思想和最佳實踐。
- 最后花了1個晚上的時間,把細碎的知識點給串起來,這樣就有了整體的認識。
就這樣,我花了大概三天的時間,帶著問題系統的刷了官方文檔,保質保量的完成了項目需求,分享了我覺得比較優雅的實現方式(其實就是通過官方文檔學的)。
并且在提測之后,0 BUG。
后來項目復盤時,同事還說我是"大佬",一看就是很有經驗的。
其實當時的自己并沒有 GoFrame 的經驗,并且對項目理解的也不夠深入。時間太緊張啦~
只是找對了方法,并且愿意花時間去實踐,刻意練習,去執行,而已。
總結一下
不管你是想快速學Go,還是想學其他新的語言;
不管你是有充足的時間去學習,還是像我學習GoFrame時一樣時間緊張。
關鍵的問題都是找到合適的方法,不斷去實踐,多動手敲代碼。
碰到理解不了的問題也不要懊惱沮喪,可以先列todolist,放到后面解決。
可能在你花了更多的時間,比較系統的學習之后,之前困擾你的問題都不是問題了。
所以:找到合適的方法,每個階段有每個階段的學習重點。多動手,刻意練習,堅持實踐。才是快速學習,從小白到"大佬"的王道。?