自學編程已經有些年頭了,一直在考慮一個問題。如何從新手成為這個行業的頂尖大師。
學生時代看過一本書《一萬小時天才法則》以為自己找到了答案:練習10000個小時,甚至還下載了一個app記錄自己學習的時間,想單純的湊夠這10000個小時,就能理所當然的成為大師了。但堅持記錄的時間并不長,仍然相信這個口號卻總覺得有什么地方不對勁,直到我看到這本書。《刻意練習》,信息量并不大,卻是1000小時天才法則的很好的更正和補充。
舉個簡單的例子:拿駕駛汽車來說,如何停留在自己的舒適區,駕駛方法會逐漸趨向于自動化,也就是你可以一邊打電話一邊開車,甚至一邊吃東西一邊開車,這樣一來就算你的駕齡高達30、40年依然也只能算是一個老司機,離賽車手的距離依然遙遠。是什么造就這二者之間的本質區別?是訓練時間么?我想不是,老司機的駕齡會遠遠超過10000小時,關鍵的區別在于訓練的方法,也就是我們接下來要講到的刻意練習
我接下來要講到的內容是:
1]刻意練習是什么?
2]以提高編程技巧為例如何開始刻意練習?
我從第一點講起,例子就舉得少了,書中的相關例子多,可以參考看看:
一、刻意練習是什么?
我們嘗試跑馬拉松的過程,其實就是:首先盡可能的了解跑步的內容(通過網絡、書籍、導師或教練),然后自己就開始練習從短距離開始跑起,以5km為例,我們開始跑步的第一天可能會感覺困難重重,由于缺乏鍛煉連續的幾天雙腿都會持續的肌肉酸痛,但人的身體有極強的適應性,慢慢的我們隨著有規律的鍛煉,我們的身體會適應這個強度,這個時候你跑5km會覺得很舒服,第二天甚至沒什么感覺。如果一直停留在舒適區,你永遠就只能跑5km離馬拉松的距離還很遙遠。天真的重復5km的跑步,不能提高你的運動表現。你應該有目的的刻意訓練,每次都挑戰更長更遠的距離,不斷的沖破自己的舒適區,才能最終完成馬拉松式的長跑。
回到我們上面的問題給刻意練習下一個定義:刻意練習總是發生在舒適區外的有目練習,練習者除了需要保持高度的專注還需要有對練習內容的及時反饋。這樣才能發現自己的不足,不斷的精進自己的技能。有以下的特點:
*刻意練習發展的技能,有很好的提高技能的方法;
*刻意練習發生在舒適區外;
*刻意練習定義明確的可執行的目標,通常偏向于小的計劃;
*刻意練習需要練習者的管住和有意識的行動,通常的有目的的;
*包含反饋機制,及時調整;
*依靠強大的心理表征;
二、以編程為例:如何開始刻意練習?
編程這一行業網絡上有太多的知識,但知識本身并不代表習得的技能。從知識到技能的轉變有巨大的鴻溝,我們如何跨越這一鴻溝就需要利用好刻意練習這個方法。
1]找到導師;2]制定學習計劃]3]及時反饋]4]保持長時間的好奇心和專注 5]心理表征
其實刻意練習最關鍵的一點是找到導師,然后由導師提供學習計劃和及時的反饋。這樣寫沒什么新意了,很多時候我們并沒有老師面對面的教我們。我們以蕭井陌的《編程入門指南》為例,具體講如何開始:
首先以自己目前的具體情況,分析出自己要學習的階段。不一定需要step by step一樣的方法,確定自己的學習階段,如我目前在看的《深入理解計算機系統》。那么這本書就是我的導師,我的目的就是盡可能的多跟老師學習東西。這些知識本身是超出我理解范圍的,至于能學習多少,就要用到刻意練習的方法了。后面的制定學習計劃和提供反饋就要我們自己想辦法了,就想我在開篇講到到練習跑馬拉松一樣,你上來就跑個40多公里,不殘疾也會半路夭折了。
制定學習計劃:
第一遍觀其大略:在開始第一次閱讀的時候我花了12天的時間,每天抽精力最旺盛的時間多半是早上,閱讀一整章節,做100字左右的筆記,這個階段主要是找到書籍的內在框架,就像一個血肉之軀,外表再不一樣,也有個骨架。這一遍是很痛苦的,不知道各位基礎怎么樣,我的感覺是幾乎沒什么懂,這個階段就不要太糾結了,跳過不懂的內容,有時候我甚至連續二十多頁都不知道再講什么,但是不要有太多心里壓力,如果第一遍就能讀懂說明這本書沒有超過你的理解力,讀起來也沒多少意思。
第二遍精度慢讀:將目標分解為小部分,你的夢想如果是閱讀完這本書,那么當下的目標就應該是閱讀完某一章,而你的夢想之所以不能實現,是因為它還不夠小。拿我目前在讀的第四章為例,我的目的是花無限的時間盡可能理解這一章的內容,首先要做的還是仔細閱讀最開始的部分,像這樣邏輯關系很強的書,再開始的部分它必然會告訴你我接下來要講什么,這些東西有什么用,我用什么順序講解。把這些了解清楚以后在開始看每小節的內容,不然你會覺得,意?它怎么開始講這個。
及時反饋:
這一點就不好做了,讀沒讀懂,讀懂多少要自己把握。掌握好一個度,盡可能理解書中的內容。我的反饋的方法是每小節的閱讀要做好筆記,我就隨身帶個小本子,所有的筆記都寫在上面。遇到不懂的內容,就放慢速度,有時候甚至抄寫一遍,這樣一個小節一個知識點的閱讀,最后匯集成一章,我又會把筆記本的內容在電腦上再寫一遍。遇到不懂的地方做好標記,也算是反饋不懂的地方,多讀幾次,實在不行在網絡上看看背景知識,相當于請老師講解不懂的地方。
保持長時間好奇心和專注的方法:
如果你只是覺得好玩,你就不會進步。其實保持長時間專注基本上是不可能的,最好的方法是選擇自己狀態最佳的時候開始學習,比如午睡剛醒的時候我的反應最快,開始理解最難的內容。然后將這種學習計劃養成習慣,就想吃飯一樣,一頓不吃就餓的慌。也就能長期堅持下去了。
創建心理表征:
這里對心理表征的理解其實很簡單,就是理解這一知識點的類比相關內容,以我學習流水線為例,我給自己舉了一個例子:
現代計算機CPU使用流水線方式實現性能的最優化:
舉個例子,你去一家快餐店點餐,想要吃一個雞蛋、一碗稀飯和一個包子,如果都是現場馬上給你做的話,味道肯定最好,但花費的時間我估計你不會再去吃第二次了。然而真實的情況是,服務員將你的要求傳達下去,賓果~~很快的時間就準備好了你需要的食物。這是因為快餐店已經從很早開始就將大家喜歡吃的都做好了,所以的結果(雞蛋、稀飯、包子)都已經提前準備好了,這時候只需要根據你的需要(x,y的大小)馬上就能給你上菜了。
在這個過程中,我們提前處理了一部分指令,如制作包子過程中的和面、包肉、上蒸籠我們成功的預測了90%的人早餐喜歡吃包子。就大大的節約了時間。記住所以的結果都提前準備好了的。
如果你對比較難的知識點都能展開類比到不同的心理表征,那么你正真的掌握了這個知識。
通過以上這些步驟應該可以很好的開始你的學習內容,祝愿學業有成。