如何快速學一門新語言?關鍵問題是什麼?

語言: CN / TW / HK

highlight: a11y-dark theme: Chinese-red


先説結論

我花了半個月時間學習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的成本應該不高。

但是,我看公司前輩的代碼很頭大,學習筆記做的很辛苦,效率也並不高。

如果你也有遇到類似的問題,我強烈建議你這麼做:

以官方文檔為重點,而不是前輩的代碼,帶着項目中的問題有針對性的查文檔。同時再花時間從頭到尾系統的閲讀官方文檔。

以我的經歷舉例:

當時剛入職,公司給了我兩天的時間熟悉項目需求、已有代碼和架構設計,從第三天就開始參與需求評審做項目了。

前兩天看前輩的代碼可以説是一臉懵,類似的需求,每個人的實現方式都不一樣,團隊內並沒有統一的代碼規範。

我也和老大吐槽過,老大給我的建議是:希望我能輸出規範的代碼,形成規範,之後讓大家按照我的標準寫。

好吧,壓力和責任更大了,於是:

  1. 我白天積極的和同事確定不清楚的需求,溝通之前的實現細節,為什麼這麼寫等等。

  2. 晚上回到家帶着疑問去刷官方文檔,刷完對應的知識點後整理筆記,這些筆記不怕細碎,只要是對實現需求有幫助,能提高我工作效率的都會記錄。

todolist

記錄todolist是個非常好的習慣,和大家重點分享一下:

  1. 比如,能複用的代碼,方便我快速查找的代碼,沒有理解透徹的代碼等等,我都會記錄到筆記,並且記錄成todolist,最後統一花時間逐個解決。

  2. 細碎的知識點如果有不理解的,我也會先放放,不用因為一兩個不懂的知識點影響整體的學習進度。

  3. 我又花了大概兩個晚上下班後的時間,熬夜刷文檔,從頭到尾刷官方文檔,比較深刻的理解框架了的設計思想和最佳實踐。

  1. 最後花了1個晚上的時間,把細碎的知識點給串起來,這樣就有了整體的認識。

並且有的時候還會和之前的經驗做對比,比如我有整理過一篇有感而發的文章:《為什麼我覺得GoFrame的garray比PHP的array還好用?》,已經收到了 120 多個贊。

就這樣,我花了大概三天的時間,帶着問題系統的刷了官方文檔,保質保量的完成了項目需求,分享了我覺得比較優雅的實現方式(其實就是通過官方文檔學的)。

並且在提測之後,0 BUG。

後來項目覆盤時,同事還説我是"大佬",一看就是很有經驗的。

其實當時的自己並沒有 GoFrame 的經驗,並且對項目理解的也不夠深入。時間太緊張啦~

只是找對了方法,並且願意花時間去實踐,刻意練習,去執行,而已。

總結一下

不管你是想快速學Go,還是想學其他新的語言;

不管你是有充足的時間去學習,還是像我學習GoFrame時一樣時間緊張。

關鍵的問題都是找到合適的方法,不斷去實踐,多動手敲代碼。

碰到理解不了的問題也不要懊惱沮喪,可以先列todolist,放到後面解決。

可能在你花了更多的時間,比較系統的學習之後,之前困擾你的問題都不是問題了。

所以:找到合適的方法,每個階段有每個階段的學習重點。多動手,刻意練習,堅持實踐。才是快速學習,從小白到"大佬"的王道。

一起學習

公眾號:程序員升級打怪之旅

微信號:wangzhongyang1993

福利🧧:點這裏-->半價買掘金小冊,額外領紅包