如何快速的學習一門語言
1 為什麼想寫這個主題
工作的這些年,對於一個技術初級到高階,到架構,到總監的轉身,有許多的感概,有許多的想法。
曾經會想那個還在大學的自己,忙碌於圖書館博覽全書,從概率論的股票分析,到人工智慧的機器學習,每一本你能看到的前沿的書,如果咱們是一個學校的,或許你也曾經摸到過一樣的破舊的或者散發著書香的紙皮和書名,文人說“書非借不可讀也”,“隨便翻翻”,所以我看書也是以這個理論來指導,當然核心的知道思想就是我非常明確我上這個學就是為了更容易的找到一份好工作。
轉眼間終於畢業了,剛工作那會看著自己手裡拿的工資,想著也聽說著高階工程師的工資水準,以及高階工程師們的住宿方式(有自己獨立的空間,花費我1/2的工資來租房,房間啥都有,可能最重要的是有一個自己獨立的空間,可以好好思考怎麼寫程式碼吧)。
北上廣深,一線城市,我都去了一遍,終於也熬到了高階,然後變成了架構,最後也忙碌於總監的產品追求。
這麼說著幾年過去了,總覺得回顧以往,總結,覆盤,總覺得哪裡可能可以不那麼走,可能可以走得更快,如果形象的比喻,那就是成長曲線是不是可以平方指數,或者直線(那角度也要比45度要大),可最終感覺平均下來也就是一個正常的45度曲線的成長水準。
any way 囉嗦了很多,切入主題,有很多想做的事情,幾年前就在思考,但是總找不到切入點,直到15年接觸了go語言,並快速學習了它(這裡說的快速就是3天看看,然後直接寫common的框架——當然這個用了很多的設計模式),然後這幾年也帶了很多新人,沉澱了以go語言為技術棧基礎的技術棧,並向微服務靠齊,前後端分離的產品架構和方案。從中我發現,不單單是我這種老兵,即時從大二的實習生,到剛畢業的學生,到畢業2年的,到畢業4年的,到畢業6年的等等小夥伴,無一不是在實踐著快速學習golang,然後起早貪黑的幫我寫業務程式碼,用go。
而我想基於go語言(雖然與其他語言比起來,這是一門最好學的語言),講一講如何快速的學習一門語言。
2 怎麼做到快速
那就直接上乾貨,直接上套路,下面是我的實踐經驗:
2.1 語言總體介紹
熟悉這個”語言的總體介紹”——需要對這個語言的歷史、語言的特性(可以做什麼,不可以做什麼,適合什麼場景等)有個熟悉和了解。然後要專門去看看誰在用這個語言,可以通過開源庫,語言官網,以及語言社群知道這個語言有多火爆。當然最重要一點,不要忘了,看下招聘網站上,這個語言的薪資水平,人才需求(數量的和能力的),仔細看看初、中、高階的jd要求細節。
2.2 語言的語法和關鍵字
這個沒啥好說的,直接去看吧。
2.3 選擇學習的方法
一個語言的學習方法主要有兩種,而對於一個語言初學者來說,可能系統的學習方法 是比較奏效的。
而對於本身有語言實踐基礎的人來說,對比學習的方法 會效率非常高(而我說的快速的學習主要的人員都是這個背景基礎的)。
2.4 執行一些例子
一個語言它的官網或者開源庫總會提供一些快速入門的例子,以及針對每個特性的例子,我覺得你有必要去執行一遍。
在執行例子的過程中,你會有以下思考思路:安裝好學習開發編譯環境,看一遍程式碼,執行一遍,看結果和自己看的理解的是不是一致的。最後手癢還回去改改程式碼,在編譯執行一遍。於是你有可能就快速的掌握了這個特性。
2.5 針對語言的特性進行專門的針對性學習
語言的特性,也特指這個語言針對某一個業務領域的一些特點,比如go語言,針對高併發,分散式,後臺服務開發,簡化了服務開發模型,不管是初學者還是老手都不需要掌握諸如epoll那麼複雜的服務開發模式,就是使用go開發一個還不錯的服務端。還有諸如python的科學計算框架針對科學計算那就是信手拈來。
2.6 寫一些小專案或者工作直接使用
最後需要為自己準備一些小專案,這個建議使用這個語言的一些成熟的框架,什麼是成熟的框架,比如開源庫上評分比較高,搜尋引擎的搜尋出來最多帖子的,stars排名比較靠前的。這些都是成熟的框架,把這些框架的例子跑起來,同時拿框架來重寫(或者直接工作使用)進行專案業務編寫,並除錯應用起來。最後去在實踐中踩坑,去成長。
3 效果
我可以告訴你:
那個大二的實習生,沒什麼語言和工作基礎的,花了2周時間掌握了go語言並開始參與工作專案,交付了很好的實習專案成果。
那個1年c++工作經驗的朋友,轉go語言只花了5天時間變參與團隊的基礎庫和框架的編寫,並參與最終在半年內負責團隊最重要的分散式技術架構的核心程式碼編寫。
那個有4年工作經驗的朋友,對,你能想到,他基本上是一來就開始變學習,變寫看專案程式碼,並開始著手工作了的。
4 你呢
你呢?你會花多久,1周,1個月,3天?
5 最後我想說的
曾經我帶了一群小夥伴(有測試,運維,開發,技術新手,技術老兵)建立一個社群,帶了他們學習go語言,所以也才有了我啟動的這個go語言專欄——如何快速學習一門語言。其實我想說的就是如何快速學習一門語言。
我還是希望你們都能體會我上面所說的,就像某位大咖說的,“學習英語不應該是學習一門語言和知識,而是應該學習一個技能”,那麼我也想說,如何快速學習一門語言,這個也是一個技能。希望你能掌握,當然我的專欄是針對go語言的,那麼最基本的我會有所奢求的就是,你們都能快速的學習了go語言,並給自己新增一個技能。
當然更高的奢求就是,能有人可以從中總結或者覆盤,掌握如何快速學習一門語言的技能。當然是程式語言。