學習程式語言最好的方法是什麼

問答 | 我適合做軟體開發嗎一文中,列出了當時彙總的7個問題,其中“我是否適合做軟體開發”、“怎樣開始行動”、“學哪種語言”這個問題都聊過了,這次我們來談談怎麼學習的問題。

記得曾經在我的微信公眾號“程式視界”釋出過一篇題為“怎樣新學一門技術的文章”,裡面講了很多東西,現在看看也還有價值,推薦一下。這次呢,我想說的和那篇文章不一樣,主要從下面兩點來談:

  1. 學習方法
  2. 效果度量

什麼學習方法適合我?

知乎上有一個問題——學習程式語言最好的方法是什麼,有很多人關注。

贊同最多的答案是:猛敲程式碼。親,這是最佳答案。

贊同第二多的答案如下:

Miguel de Icaza大大在訪談裡說:我瞭解到C#這門新語言覺得不錯,所以為了充分學習它,我寫了個C#編譯器⋯<–這就是Mono專案的起源。

Evan Phoenix大大在訪談裡說:我在做專案的時候學習Ruby覺得很有趣,於是我鼓搗鼓搗弄出了一個Ruby直譯器⋯<–這是Rubinus專案的起源。

孟巖有一篇文章——快速掌握一個語言最常用的50%,感興趣的也可以看看。

說了這麼多,然而它們適合你嗎?

不見得!

每個人都有自己獨特的學習模式,我們要做的第一件事,就是發現自己的學習模式。

比如有的人喜歡邊看書邊寫程式碼,學一節就做做小練習,學一章就來個綜合點兒的練習,爭取能覆蓋大部分語法和知識點;

比如有的人就喜歡先通覽一遍教材,最後才挑感興趣的部分寫點兒程式碼練習一下,然後找一個熟悉的需求來實現一下,對用到的部分反覆研究;

比如有的人就只是看書、看視訊、看部落格,全都看個遍,始終不動手,直到做實際專案時才開始寫程式碼;比如那幾個大牛,學一門語言就要鼓搗幾個編譯器;

比如我,現在的習慣是邊學邊記筆記,學完一個主題就設計一個練習,有新體會就記下來,抽空就把筆記整理成部落格釋出……

你一定可以找到自己的學習方式,別人的經驗,不一定適合你。唯一可以肯定的是:學習程式語言,學習技術,一定要多練習,練習,練習,再練習,沒有程式碼量,一切都是扯淡

那麼,問題來了,怎麼才能找到適合自己的方式呢?想想你中學怎麼學習的、大學怎麼學習的、空閒時間感興趣的東西怎麼學習的,分析這些過往的學習經歷,有助於你找到自己的學習方式。

除了自我分析,還可以找一個教練。教練的作用就是幫助你發現自己的學習方式。這其實也是老師的作用、教育的作用。教育的作用就應該是引導我們發現自己的學習模式。所以林格說,學習是不用教的。我們不必拿別人的學習方式往自己身上套,但可以請別人幫助我們發現自己,因為有時我們確實會因為視角的原因而陷入迷途卻無法自我發現,有經驗的教練可以看到我們的嘗試不對,他可以點一下我們,啟發我們自己找到方向。所以,從這個意義上講,向別人請教是可行的。請記住,好的教練(老師)不會給你灌輸1 1=2,他會引導你自己去尋找答案並讓你體會到成就感。

自己的學習方式,最大的特點就是適合自己,對自己來講效果較好。所以,通過對效果的度量,就可以確認當下的學習方式是否適合自己,這是確認是否找發現了自己的學習方式的通用方法

那怎麼度量效果呢?接下來看。

學習效果怎麼度量?

大部分人都能感受自己的情緒、感覺自己的感受,比如你今天學習是障礙重重很吃力,還是不斷體會到原來如此果真如此,後者的情況就說明你走對了路子,說明你正勢如破竹地前進。

體會自己的感受,如果覺得順利、興奮,那基本上就可以說明你走在正確的路上,你的學習方式符合你自身的具體情況

還有一種度量方式,是從客觀效果來看的:在一個時間盒內,評估自己的進度與平均水平的差距。比如學習《the C Programing Language》,可以瞭解別人花多長時間掌握了基本語法,與自己比較。

至於怎樣獲悉別人的學習情況,有兩種方式,一種是加入相關社群,比如QQ群、微信群,問別人的學習經歷和所花的時間;另一種是考察學校或職業培訓機構的課程設定,他們給一門技術設定的課時和目標是很好的參考——雖然他們往往用錯誤的、整齊劃一的灌輸的方式來進行教育,但課程的設定大部分都是經過評估的,是相對合理的。

排除智力因素,大部分人學習一門技術,應該在某個時間範圍內達到特定的目標。這是我們說學習效果可以衡量的前提。


Ok,來回顧一下吧。

想讓別人提供一種靈丹妙藥式的學習方法幫助自己打通任督二脈的想法是應該摒棄的,那些聲稱自己發現了適合所有人的學習方法的“大師”基本上都是江湖騙子,他們只是想通過推銷自己的方法賺迷途羔羊的錢或者等價物,別信廣告,要看療效。

一句話總結:設定目標,用自己的方式去實現,這就是我們學習一門技術的指導原則。


相關閱讀:

更多文章請關注我的微信訂閱號“程式視界”(programmer_sight)或“漫談程式設計師”專欄。