關(guān)于編程的練習(xí)方法——讀《刻意練習(xí)》有感

豆瓣鏈接:刻意練習(xí) (豆瓣)

這是這樣的一本書:知道如何練習(xí)的人覺得此書在說一些廢話,而遇到瓶頸停滯不前的人會(huì)覺得好像突然開了竅。我就是后者,這本書對(duì)我個(gè)人而言在練習(xí)方法上的啟發(fā)是巨大的。兩個(gè)多月前,我讀完了這本書,這兩個(gè)多月,我運(yùn)用此書中得到的啟發(fā)練習(xí)編程,感受到了明顯的進(jìn)步。這篇讀后感,算是對(duì)寫作的練習(xí),也算是對(duì)自己的啟發(fā)做個(gè)總結(jié)。

主要有以下幾條:

  1. 練習(xí)目的一定要明確
  2. 一定要有反饋
  3. 通過練習(xí)不斷重構(gòu)心理表征
  4. 專注也可以練習(xí)

明確練習(xí)目的

在沒有閱讀此書之前,我對(duì)“練習(xí)”并沒有那么重視。這可能與我的“自信”,以及經(jīng)常試圖消化更多知識(shí)有一定關(guān)系。從2011年開始,我斷斷續(xù)續(xù)一直在學(xué)習(xí)編程,但至今只能寫一些短小的程序,甚至連基本的標(biāo)準(zhǔn)庫都沒能完全熟悉。我會(huì)寫程序嗎?我只是大概知道了程序是怎么一回事兒,知道了它的基本語法,能看懂一些比較短的代碼,會(huì)使用一些框架api,而已。我感覺自己一直在原地打轉(zhuǎn),也因此有好幾次遇到瓶頸后中斷了學(xué)習(xí)。唯一慶幸的是,編程是我的樂趣,我始終都還保持著學(xué)習(xí)編程的動(dòng)機(jī)。

認(rèn)清自己的技能水平并不容易。很多時(shí)候,通過google搜索,然后復(fù)制黏貼,自以為解決了問題就算掌握了,而實(shí)際上只是個(gè)代碼搬運(yùn)工而已,當(dāng)自己寫的時(shí)候還是不會(huì)寫。就像看了很多書、很多教程,以為懂了,實(shí)際上依然不知道該如何運(yùn)用。我必須認(rèn)清事實(shí),我的編程技能水平還很低,我的基礎(chǔ)很薄弱,我的練習(xí)太少了。我告訴自己,不要試圖一口吃下一整個(gè)饅頭,不要試圖同時(shí)追兩只兔子。

我最近在學(xué)習(xí)JavaScript,為了提升水平,我在網(wǎng)上找練習(xí)題來做,機(jī)緣巧合就找到了 codewars 這個(gè)網(wǎng)站,它完全符合我目前的需要,并且也完全符合刻意練習(xí)的要求(有非常好的反饋機(jī)制)。我給自己制訂了計(jì)劃,每天完成5道練習(xí),每周對(duì)練習(xí)進(jìn)行總結(jié)。最初的目標(biāo)也非常簡(jiǎn)單:提高 codewars 上的等級(jí)。我現(xiàn)在的等級(jí)是 5kyu (最高等級(jí) 1kyu,最低等級(jí) 8kyu),與游戲中打怪練級(jí)相似,升級(jí)的過程,也是動(dòng)機(jī)的來源,等級(jí)越高難度越大。

我在練習(xí)的過程中,不斷增添新目標(biāo),比如以下幾個(gè)小目標(biāo):

  1. 熟悉JS 語法
  2. 熟悉ES6新增的語法
  3. 熟悉JS標(biāo)準(zhǔn)庫

這幾個(gè)小目標(biāo)我目前基本完成了。

沒有反饋的練習(xí)是無效的

我在《刻意練習(xí)》這本書中得到的一點(diǎn)很重要的啟發(fā)是:沒有反饋的練習(xí)是無效的。

當(dāng)你寫完一段代碼,如何能夠判斷它的好壞?首先,能夠運(yùn)行是最基本的要求,也是最直接的反饋。但你個(gè)人很難判斷它是否是最優(yōu)解,很難判斷它是否寫的漂亮。如果有一位專家在旁邊給你修正建議,那無疑是最好的反饋。但是作為自學(xué)者,很多時(shí)候根本沒有人教你。我在網(wǎng)上看到有人給的建議是,將寫的代碼上傳到github,問題是開源的代碼太多了,根本沒人關(guān)注你,沒人給你提意見,你只是一個(gè)人(但對(duì)有一定開發(fā)能力的程序員來說,這其實(shí)是一個(gè)很好的獲得反饋的方式,只是目前還不適合我)。還有人建議,參與開源項(xiàng)目的開發(fā),為開源項(xiàng)目改bug貢獻(xiàn)代碼,這也是獲得反饋的好方法,前提是要先找到合適的開源項(xiàng)目,這需要機(jī)緣(有很多不錯(cuò)的開源項(xiàng)目已經(jīng)非常完善了,想要參與需要一定的編程功底),它可能是你現(xiàn)在正在使用的某個(gè)軟件。

回到 codewarscodewars 上最大的優(yōu)點(diǎn)是:它有一個(gè)非常好的 反饋機(jī)制 。每當(dāng)我完成一個(gè)練習(xí),它會(huì)給出投票數(shù)最高、以及最聰明的解答。通過參考“牛人”的解答,讓我學(xué)習(xí)到了很多編程套路,還有標(biāo)準(zhǔn)庫的巧妙用法,以及漂亮的代碼該有的樣子。

我總結(jié)一下幾點(diǎn)經(jīng)驗(yàn):

  1. 先獨(dú)立完成習(xí)題,完成后看最佳答案是如何完成的,與自己的答案進(jìn)行對(duì)比。
  2. 多關(guān)注一些牛人,看他們是如何解答的。(等級(jí)排名前50的我全部關(guān)注了)
  3. 重復(fù),直到掌握了那個(gè)技巧 。
  4. 針對(duì)某一個(gè)知識(shí)點(diǎn),強(qiáng)化訓(xùn)練。
  5. 總結(jié)并復(fù)習(xí)。

怎樣針對(duì)某一個(gè)知識(shí)點(diǎn)進(jìn)行強(qiáng)化訓(xùn)練?

我的方法是,在google 上搜 "codewars collection" ,這樣可以搜索到其他用戶針對(duì)某一類型的習(xí)題做的收藏。比如下面這個(gè)鏈接的收藏分類非常的清楚 https://www.codewars.com/users/juansgaitan/authored_collections (Generator, Functional, Recursion, RegEx 等等)。

制造競(jìng)爭(zhēng) 加入組織

一個(gè)小技巧,在 codewars 的個(gè)人資料里設(shè)置你的 Clan (相當(dāng)于一個(gè)組織),比如我設(shè)置的 "China",這樣相同組織里的所有人都將成為 Allies ,你可以看到他們的等級(jí)以及 Honor 值。在同一個(gè)組織中,超過你的 Allies ,這不也是答題的動(dòng)力嗎?

read-peak

通過練習(xí)不斷重構(gòu)心理表征

什么是心理表征(Mental representations)?要解釋這個(gè)專業(yè)術(shù)語不太容易,你可以閱讀一下下面幾個(gè)鏈接:

書中是這么說的:

 "心理表征是一種與我們大腦正在思考的某個(gè)物體、某個(gè)觀點(diǎn)、某些信息或者其他任何事物相對(duì)應(yīng)的心理結(jié)構(gòu),或具體或抽象"

"將杰出人物和我們其他人區(qū)分開來的主要因素是:他們經(jīng)過年復(fù)一年的練習(xí),已經(jīng)改變了大腦中的神經(jīng)回路,以創(chuàng)建高度專業(yè)化的心理表征,這些心理表征反過來使得令人難以置信的記憶、規(guī)律的識(shí)別、問題的解決等成為可能,也使得他們能夠培養(yǎng)和發(fā)展各種高級(jí)的能力,以便在特定的專業(yè)領(lǐng)域中表現(xiàn)卓越。"

(題外話:我個(gè)人覺得把 "Mental representation" 翻譯成“認(rèn)知表征”更合適。)

那么,知道了這個(gè)“心理表征”有什么用?它解釋了為什么我們能夠通過刻意練習(xí)提升水平。當(dāng)我們習(xí)慣了在舒適區(qū)中思考,在舒適區(qū)中解決問題,我們自然而然就形成了一套認(rèn)知,這套認(rèn)知在應(yīng)對(duì)舒適區(qū)內(nèi)的情況能夠得心應(yīng)手,而一旦超越舒適區(qū)就會(huì)變得沒那么容易。這就能說明刻意練習(xí)的目的:提升認(rèn)知水平,從而應(yīng)對(duì)更復(fù)雜更棘手的局面。

在這個(gè)信息、資源如此充分的時(shí)代,我們很容易產(chǎn)生一個(gè)幻覺,就是自以為知道的很多。通過google搜索我們可以解決一系列問題,好像都不必思考了,google一下就有答案?,F(xiàn)實(shí)是,通過google 能解決的都是一個(gè)個(gè)具體的小問題,它無法代替我們思考,無法代替我們面對(duì)復(fù)雜的局面做出合理的決策。

從另外一個(gè)角度講,這本書重構(gòu)了我的認(rèn)知。但是,如果我對(duì)此就感到滿足了的話,那么我的認(rèn)知水平也就僅限于此了。

專注也可以練習(xí)

這本書中不斷有提到 專注 這兩個(gè)字。作者說:

“有目的的練習(xí)是專注的”,“要以專注的方式制訂明確的目標(biāo)”,

“為了在沒有導(dǎo)師的時(shí)候有效地練習(xí)某種技能,牢牢記住以下三個(gè)F,將是有幫助的。這三個(gè)F,其實(shí)是以字母F開頭三個(gè)單詞,即:專注(focus)、反饋(feedback)以及糾正(fix it)”。

怎樣能夠保持專注?作者給的建議是保持動(dòng)機(jī),但擁有了強(qiáng)烈的動(dòng)機(jī)就能不斷保持專注了嗎?我對(duì)此持懷疑態(tài)度。很多時(shí)候,無法專注就是無法專注,各種各樣的雜念在腦海中飄來飄去,一會(huì)兒看下微信,一會(huì)兒看看網(wǎng)頁,很難一心一意的專注于手頭的事情。

直到我閱讀了《正念的奇跡》這本書,結(jié)合《刻意練習(xí)》,我意識(shí)到 專注 也是可以練習(xí)的。舉個(gè)例子,在你做你不喜歡做的事情,比如有一大堆的碗要洗,或者要修改別人丑陋的代碼,你會(huì)不會(huì)感到煩躁?你會(huì)不會(huì)想很多別的事情?當(dāng)你有各種各樣的雜念的時(shí)候,你很難去保持專注。

關(guān)于《正念的奇跡》,關(guān)于怎樣練習(xí)專注,我想另外寫一篇文章,再談一談它對(duì)我的啟發(fā)。

還沒有結(jié)束

作者在書中質(zhì)疑了天才,強(qiáng)調(diào)了普通人只要找到合適的方法(問題是如果沒有一位好的老師指點(diǎn),我們?cè)趺粗婪椒ㄊ欠窈线m呢?)通過大量刻苦刻意的練習(xí),也能夠達(dá)到天才的水平。這碗雞湯我先喝了。畢竟在這個(gè)互聯(lián)網(wǎng)時(shí)代,很多領(lǐng)域的練習(xí)方法都有現(xiàn)成的,就比如編程,只要沿著前人鋪好的路走下去,至少說是能夠達(dá)到職業(yè)水準(zhǔn)吧。如果你還沒有比別人付出更大的努力,你怎么知道自己不行呢?理論知道的再多再清楚,終究是要回歸實(shí)踐的,更何況這本書講的就是練習(xí),那就少說廢話、好好練習(xí)去吧!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 你有夢(mèng)想,有目標(biāo),有計(jì)劃,但是苦于沒有正確的方式、方法,用來完成制定的計(jì)劃。那么接下來這本書將給你指明方向。 《刻...
    春天的蜜蜂閱讀 6,348評(píng)論 18 194
  • 天才真的存在嗎? 1763年,7歲的莫扎特開始了他的環(huán)歐洲演出,成為一代傳奇人物。莫扎特年紀(jì)很小時(shí)就能準(zhǔn)確辨識(shí)任何...
    丹菡閱讀 9,455評(píng)論 4 106
  • 《刻意練習(xí)》的讀書筆記 作 者:[美]安德斯.艾利克森 作者簡(jiǎn)介: 姓名:艾利克森 簡(jiǎn)介:安德斯?艾利克森博士:...
    格式化_001閱讀 3,668評(píng)論 1 24
  • 緣起 2016-12-31在豆瓣上標(biāo)記為想讀。 預(yù)約的書今天(2017-05-22)終于到了,收到郵件后就讓人順便...
    im天行閱讀 1,918評(píng)論 0 2
  • 場(chǎng)景需求:一個(gè)應(yīng)用A(以news應(yīng)用為示例)跳轉(zhuǎn)到另外一個(gè)應(yīng)用B(以weChat為示例),常見需求如下1.應(yīng)用推薦...
    船長(zhǎng)_閱讀 7,047評(píng)論 8 58

友情鏈接更多精彩內(nèi)容