1. 程式人生 > >不按傳統套路,我是這樣學習新程式語言的

不按傳統套路,我是這樣學習新程式語言的

【導讀】:以往我們認為學習新程式語言的最佳方式是看語法,然後做小專案練習。Sahil Dua 另闢蹊徑,找到了學習新語言的另類方式:參與對應的開源專案。參與的過程中,需要檢視已有的模組,瞭解這種語言的模式,對自己寫出高質量的程式碼非常有益。

補充:Sahil Dua,創業公司 Refiral 合夥人,DuckDuckGo 開源社群 leader 之一,多個開源專案主要貢獻者。

目前程式語言超過 500 多種。學習一門新的程式語言對我們來說已是家常便飯。很有可能你熟悉 C++ 和 Java,而你的工作需要用到 Python 或者你非常精通 Python,但你工作寫程式碼需要用 Java 。再或者你想學習一種炫酷的程式語言來拓展你的技能。

如果你想學習一門新的程式語言,你選擇哪種方法?

  1. 網路教程
  2. 網路公開課(MOOC)

有些人甚至主張,學習新程式語言最好的方法其實如下:

  • 學習語法;
  • 建立一些個人專案;

嗯,說得過去!你想學習一門程式語言,你學了它的語法,建立一些個人小專案可以確保你應用到這些語法知識。

在學習不同的程式語言時,我建立了 20 個以上的小專案。相信我,當你為一週甚至一整晚就能快速完成的小專案寫程式碼時,你只是想完成任務。你所關心的只是——“我的程式碼能執行嗎?”你幾乎不關心程式碼的質量。

任何傻瓜都可以編寫計算機能理解的程式碼。優秀的程式設計師寫人類能理解的程式碼。”  —— Martin Fowler

那麼,在嘗試學習一門新的程式語言時,你怎樣獲得好的實踐呢?

參與該語言的開源專案。

是不是感到驚訝?一些人或許會認為 —— ”等等,開源是很難的。只有當我們精通這門語言,我們才能為開源專案做出貢獻,對嗎?“。答案是否定的。

讓我先給你講個故事。

去年,我得到了一個來自 Booking.com 的全職工作 offer,而且我得知我工作的程式語言是 Perl (這是他們公司首要的後端語言)。2016 年 6 月,當我完成我的大學學位,我開始學習 Perl ,以便準備我大學後的第一份工作。我入職的時間是 7 月的第二週,因此我差不多有一個多月的學習時間。

我開始閱讀 Perl 的語法,並開始理解該語言的一些常見模式。到這裡,我真正想使用 Perl 來建立一些東西,這樣我就可以應用我學到的該語言的知識,實踐它的各種概念。當我在為使用 Perl 建立一些東西尋找 idea 時,我在 GitHub 上偶遇了 DuckDuckGo 的開源組織。我注意到一些開源專案是用 Perl 語言寫的。我瀏覽了一下發布的 issues,找到了很多帶有“初學者”標籤的 Issue 。我立即開始工作,並提交了一些 pull requests。快進到今天,我成為了它們一些開源專案的主要貢獻者,以及 DuckDuckGo 20 個開源社群的領導者之一。

這個故事的意思:我通過參與 Perl 語言的開源專案最終學會了 Perl 語言。

為什麼參與到開源就奏效了呢?

就在我學習了 Perl 的語法後,我開始參與開源專案。在那期間,我常常檢視現有的模組。我時常注意 Perl 正被使用的模式。因此我開始挑選這些好的例項應用到我自己的程式碼中,這有助於我學習怎樣用 Perl 更好地寫程式碼。

這不只是巧合;讓我告訴你另一個故事,以獲得更多的相關性。

最近,在 Booking.com 工作時,我接受了一些任務,其中有一個是在 Go 語言寫的服務系統上新增一些功能。下面是我和隊友的對話:

我:我真的很喜歡這個任務,我想完成它。你怎麼看?他:是的,的確很有意思。但是它要用到 Go,你熟悉 Go 嗎?
我:不。
他:那你想學嗎?
我 : 是的!
他: