豆瓣鏈接:刻意練習 (豆瓣)
這是這樣的一本書:知道如何練習的人覺得此書在說一些廢話模她,而遇到瓶頸停滯不前的人會覺得好像突然開了竅解寝。我就是后者,這本書對我個人而言在練習方法上的啟發(fā)是巨大的。兩個多月前酸钦,我讀完了這本書,這兩個多月咱枉,我運用此書中得到的啟發(fā)練習編程卑硫,感受到了明顯的進步徒恋。這篇讀后感,算是對寫作的練習欢伏,也算是對自己的啟發(fā)做個總結入挣。
主要有以下幾條:
- 練習目的一定要明確
- 一定要有反饋
- 通過練習不斷重構心理表征
- 專注也可以練習
明確練習目的
在沒有閱讀此書之前,我對“練習”并沒有那么重視硝拧。這可能與我的“自信”径筏,以及經(jīng)常試圖消化更多知識有一定關系。從2011年開始障陶,我斷斷續(xù)續(xù)一直在學習編程滋恬,但至今只能寫一些短小的程序,甚至連基本的標準庫都沒能完全熟悉抱究。我會寫程序嗎夷恍?我只是大概知道了程序是怎么一回事兒,知道了它的基本語法媳维,能看懂一些比較短的代碼酿雪,會使用一些框架api,而已侄刽。我感覺自己一直在原地打轉指黎,也因此有好幾次遇到瓶頸后中斷了學習。唯一慶幸的是州丹,編程是我的樂趣醋安,我始終都還保持著學習編程的動機。
認清自己的技能水平并不容易墓毒。很多時候吓揪,通過google搜索,然后復制黏貼所计,自以為解決了問題就算掌握了柠辞,而實際上只是個代碼搬運工而已,當自己寫的時候還是不會寫主胧。就像看了很多書叭首、很多教程,以為懂了踪栋,實際上依然不知道該如何運用焙格。我必須認清事實,我的編程技能水平還很低夷都,我的基礎很薄弱眷唉,我的練習太少了。我告訴自己奏候,不要試圖一口吃下一整個饅頭总放,不要試圖同時追兩只兔子。
我最近在學習JavaScript足绅,為了提升水平摩泪,我在網(wǎng)上找練習題來做笆焰,機緣巧合就找到了 codewars 這個網(wǎng)站,它完全符合我目前的需要见坑,并且也完全符合刻意練習的要求(有非常好的反饋機制)嚷掠。我給自己制訂了計劃,每天完成5道練習荞驴,每周對練習進行總結不皆。最初的目標也非常簡單:提高 codewars 上的等級。我現(xiàn)在的等級是 5kyu (最高等級 1kyu熊楼,最低等級 8kyu)霹娄,與游戲中打怪練級相似,升級的過程鲫骗,也是動機的來源犬耻,等級越高難度越大。
我在練習的過程中执泰,不斷增添新目標枕磁,比如以下幾個小目標:
- 熟悉JS 語法
- 熟悉ES6新增的語法
- 熟悉JS標準庫
這幾個小目標我目前基本完成了。
沒有反饋的練習是無效的
我在《刻意練習》這本書中得到的一點很重要的啟發(fā)是:沒有反饋的練習是無效的术吝。
當你寫完一段代碼计济,如何能夠判斷它的好壞?首先排苍,能夠運行是最基本的要求沦寂,也是最直接的反饋。但你個人很難判斷它是否是最優(yōu)解淘衙,很難判斷它是否寫的漂亮传藏。如果有一位專家在旁邊給你修正建議,那無疑是最好的反饋幔翰。但是作為自學者漩氨,很多時候根本沒有人教你。我在網(wǎng)上看到有人給的建議是遗增,將寫的代碼上傳到github,問題是開源的代碼太多了款青,根本沒人關注你做修,沒人給你提意見,你只是一個人(但對有一定開發(fā)能力的程序員來說,這其實是一個很好的獲得反饋的方式饰及,只是目前還不適合我)蔗坯。還有人建議,參與開源項目的開發(fā)燎含,為開源項目改bug貢獻代碼宾濒,這也是獲得反饋的好方法,前提是要先找到合適的開源項目屏箍,這需要機緣(有很多不錯的開源項目已經(jīng)非常完善了绘梦,想要參與需要一定的編程功底),它可能是你現(xiàn)在正在使用的某個軟件赴魁。
回到 codewars 卸奉。codewars 上最大的優(yōu)點是:它有一個非常好的 反饋機制 。每當我完成一個練習颖御,它會給出投票數(shù)最高榄棵、以及最聰明的解答。通過參考“牛人”的解答潘拱,讓我學習到了很多編程套路疹鳄,還有標準庫的巧妙用法,以及漂亮的代碼該有的樣子芦岂。
我總結一下幾點經(jīng)驗:
- 先獨立完成習題瘪弓,完成后看最佳答案是如何完成的,與自己的答案進行對比盔腔。
- 多關注一些牛人杠茬,看他們是如何解答的。(等級排名前50的我全部關注了)
- 重復弛随,直到掌握了那個技巧 瓢喉。
- 針對某一個知識點,強化訓練舀透。
- 總結并復習栓票。
怎樣針對某一個知識點進行強化訓練?
我的方法是愕够,在google 上搜 "codewars collection" 走贪,這樣可以搜索到其他用戶針對某一類型的習題做的收藏。比如下面這個鏈接的收藏分類非常的清楚 https://www.codewars.com/users/juansgaitan/authored_collections (Generator惑芭, Functional坠狡, Recursion, RegEx 等等)遂跟。
制造競爭 加入組織
一個小技巧逃沿,在 codewars 的個人資料里設置你的 Clan (相當于一個組織)婴渡,比如我設置的 "China",這樣相同組織里的所有人都將成為 Allies 凯亮,你可以看到他們的等級以及 Honor 值边臼。在同一個組織中,超過你的 Allies 假消,這不也是答題的動力嗎柠并?
通過練習不斷重構心理表征
什么是心理表征(Mental representations)?要解釋這個專業(yè)術語不太容易富拗,你可以閱讀一下下面幾個鏈接:
- 認知心理學中「表征」的概念是什么臼予? - 知乎
- Mental representation - Wikipedia
- Peak: Secrets from the New Science of Expertise by Anders Ericsson and Robert Pool — Elizabeth Floyd
書中是這么說的:
"心理表征是一種與我們大腦正在思考的某個物體、某個觀點媒峡、某些信息或者其他任何事物相對應的心理結構瘟栖,或具體或抽象"
"將杰出人物和我們其他人區(qū)分開來的主要因素是:他們經(jīng)過年復一年的練習,已經(jīng)改變了大腦中的神經(jīng)回路谅阿,以創(chuàng)建高度專業(yè)化的心理表征半哟,這些心理表征反過來使得令人難以置信的記憶、規(guī)律的識別签餐、問題的解決等成為可能寓涨,也使得他們能夠培養(yǎng)和發(fā)展各種高級的能力,以便在特定的專業(yè)領域中表現(xiàn)卓越氯檐。"
(題外話:我個人覺得把 "Mental representation" 翻譯成“認知表征”更合適戒良。)
那么,知道了這個“心理表征”有什么用冠摄?它解釋了為什么我們能夠通過刻意練習提升水平糯崎。當我們習慣了在舒適區(qū)中思考,在舒適區(qū)中解決問題河泳,我們自然而然就形成了一套認知沃呢,這套認知在應對舒適區(qū)內的情況能夠得心應手,而一旦超越舒適區(qū)就會變得沒那么容易拆挥。這就能說明刻意練習的目的:提升認知水平薄霜,從而應對更復雜更棘手的局面。
在這個信息纸兔、資源如此充分的時代惰瓜,我們很容易產生一個幻覺,就是自以為知道的很多汉矿。通過google搜索我們可以解決一系列問題崎坊,好像都不必思考了,google一下就有答案≈弈矗現(xiàn)實是流强,通過google 能解決的都是一個個具體的小問題痹届,它無法代替我們思考呻待,無法代替我們面對復雜的局面做出合理的決策打月。
從另外一個角度講,這本書重構了我的認知蚕捉。但是奏篙,如果我對此就感到滿足了的話,那么我的認知水平也就僅限于此了迫淹。
專注也可以練習
這本書中不斷有提到 專注 這兩個字秘通。作者說:
“有目的的練習是專注的”,“要以專注的方式制訂明確的目標”敛熬,
“為了在沒有導師的時候有效地練習某種技能肺稀,牢牢記住以下三個F,將是有幫助的应民。這三個F话原,其實是以字母F開頭三個單詞,即:專注(focus)诲锹、反饋(feedback)以及糾正(fix it)”繁仁。
怎樣能夠保持專注?作者給的建議是保持動機归园,但擁有了強烈的動機就能不斷保持專注了嗎黄虱?我對此持懷疑態(tài)度。很多時候庸诱,無法專注就是無法專注捻浦,各種各樣的雜念在腦海中飄來飄去,一會兒看下微信桥爽,一會兒看看網(wǎng)頁朱灿,很難一心一意的專注于手頭的事情。
直到我閱讀了《正念的奇跡》這本書聚谁,結合《刻意練習》母剥,我意識到 專注 也是可以練習的。舉個例子形导,在你做你不喜歡做的事情环疼,比如有一大堆的碗要洗,或者要修改別人丑陋的代碼朵耕,你會不會感到煩躁炫隶?你會不會想很多別的事情?當你有各種各樣的雜念的時候阎曹,你很難去保持專注伪阶。
關于《正念的奇跡》煞檩,關于怎樣練習專注,我想另外寫一篇文章栅贴,再談一談它對我的啟發(fā)斟湃。
還沒有結束
作者在書中質疑了天才,強調了普通人只要找到合適的方法(問題是如果沒有一位好的老師指點檐薯,我們怎么知道方法是否合適呢凝赛?)通過大量刻苦刻意的練習,也能夠達到天才的水平坛缕。這碗雞湯我先喝了墓猎。畢竟在這個互聯(lián)網(wǎng)時代,很多領域的練習方法都有現(xiàn)成的赚楚,就比如編程毙沾,只要沿著前人鋪好的路走下去,至少說是能夠達到職業(yè)水準吧宠页。如果你還沒有比別人付出更大的努力左胞,你怎么知道自己不行呢?理論知道的再多再清楚勇皇,終究是要回歸實踐的罩句,更何況這本書講的就是練習,那就少說廢話敛摘、好好練習去吧门烂!