學習方法論—怎么下功夫才學的會技術
在上一堂課我們有兩個作業,第一個是玩Swift Playground
第二個是倒著畫自己的自畫像
我之所以安排這兩個作業的目的就是,要打破大家對學習的困惑

第一個困惑就是,很多人認為自己沒有天分,所以他下意識的覺得自己不可能可以學會,所以我安排這兩個作業
其實是想讓大家發現,學習是有方法的,很可能只是你之前跟錯了老師,用錯了學習方法,讓節課讓大家玩的Ipad游戲,其實就是編程的一種,你會從里面發現,原來編程就可以用一句話去歸納解釋,就是輸入這個就可以輸出那個,然后反復的做而已,而且你會發現,你如果玩這個游戲,竟然之后就入迷了

第二個困惑就是,很多人覺得學東西要先了解原理,先了解了原理之后才能實際操作,但是各位如果從倒著畫自畫像這個作業你會發現,學習繪畫也不需要什么天分,也不要什么繪畫技巧,你只要放下分析的心態,使用輪廓感知,也學得會一件事情,甚至還可以迅速累積成就感.

一開始我為什么要安排這兩個作業?
是因為我在全職教編程之前我是有10年以上開發經驗的資深程序員,我在行業里面的評價是我不僅僅自己程序寫的好,也擅長去培訓出優秀的程序員,關于訓練程序員這件事情,我一直有一套獨到的見解與訓練方法,我用這個方法,在過去這幾年間訓練出了幾百個學生,

這套方法總的來說是反程序員的直覺與政治正確的,但不可否認的,成果是相當有效,后來我在專職為全職的教練,教編程課之后,我將這套方法改良做成公開課,我的公開課學員背景非常多元,司機,保安,非計算機專業的學生,燒烤店老板,公務員,銷售,客服,各式各樣你想象不到的背景,他們的共同特征就是這輩子他們從來沒有寫過代碼,然而最后他們都習得了編程技能,并且能夠獨立開發完成作品,從培訓出這么多人的經驗里,我發現了一些有趣的事情,就是有很多人同時都栽在同一個坑里面,沒有辦法繼續往前,最后我發現,學習低效到最后失敗者,都是在學習上有錯誤的認知,他們總共有四個錯誤的認知,

他們對待學習都是這樣看待的:
第一,他們認為學習編程必須有天賦
第二,初學者在學習過程中必須看懂每一步,才能開始實際操作,初學時每一步學習都需要踏實的學習,完全掌握了以后才能開始下一步
第三,必須從基層原理開始學起
第四,他們對使用捷徑這件事情非常排斥,覺得是投機取巧,他覺得復制別人的代碼是可恥的行為,一定要一個字母一個字母的敲出來。

在這里我要跟各位分享,其實這四項是相當致命的偽概念

要知道初學一項技能,只有一個訣竅
就是你得讓自己快速進入小獲勝的高成就感 Small Win

你必須要進入到興趣循環的里面,如果初學者找不到成就感,很快就會放棄了

事實上在學習的字典里面,都不應該有堅持這兩個字
如果你的腦袋里面出現了堅持這兩個字,那很可能就是你現在的步驟哪里做錯了,當然有些朋友聽到這些理論,可能會反擊我說這是我胡說八道,我在這邊一定要點醒你一個觀念,很多人認為,必須在你學習編程的過程中,看懂每一個步驟,或者說必須要學習扎實,要從技術基礎原理學起,更或者是說學習編程要禁止使用捷徑,比如模仿,或者復制代碼,這些說法,在某些情況下是對的,但是那是在你取得一項技能,重新復盤學習應該有的方法,他絕對不是初學一項技能應該要有的這樣一個方法。
我在這里,想要跟各位介紹兩個單詞這兩個單詞有非常大的一個區別

Acquire Skill
取得技能
Learn skill
學會技能
這兩個其實是不同的概念
如果各位能夠把這兩個單詞分清楚
你之后再進行學習就不會焦慮了
比如說,舉例來說,我們用學英文來舉例好了。

所謂Acquire Skill 取得技能
其實就是說,可以去餐館點餐,坐車去旅行,可以去旅館,可以寫英文信件
去的技能的意思是說不需要學習這個領域里面所有的東西,但是在課程結束之后有實際拿的出手的東西可以用

Learn skill 學會技能
熟練單詞、語法、發音標準,腔調純正。

然而絕大多數人學習上的困惑是,
你要先學會,才能夠取得
而真正學的好的人,實際情況是先取得,然后再學會這個技能
一旦你沒有先取得這個技能,后續的學習就會,無論你會多少個單詞,但你還是看不懂文章,然后你就會滿滿的挫折感。
但是如果換個角度,如果你先得到這個技能為目的,圍繞這個目標進行學習,然后你就不會盲目,對自己不會有那么高的目標,不會要求自己那么完美,而且當取得技能以后你就會發現很多東西,自然而然的也就學會了。
所以這是我們今天要講的第一個重要的概念,你得先區分什么是得到技能,什么是學會技能。
兩者的心態和起步方法是完全不一樣的,那你換個角度去看,在學習當中,心理的壓力就完全不一樣了,所以后來你就發現為什么很多人自學編程,或者是接受培訓
90%以上的人最后都是以失敗告終呢?
因為這些課程安排的課表,從來都不是Acquire Skill為目標的,不是以取得技能為中心而設計的
他們通常都是這樣安排的,他們的課表大部分的時間在講授最基礎的部分,很少一部分實際操作。他們給你很長很長的免費基礎視頻給到你,讓你聽起來很無趣,讓你覺得自己一個人沒辦法能夠學會,從而去報名他們的課程。
他們從不告訴你讓你去練習,還強制要求你不要失去耐心,堅持一下就可以了,搞得好像在地獄里面歷練一樣,非常的痛苦,如果你不幸選擇了這樣一個課程,可能導致的最嚴重后果就是,你覺得編程太難了,你再也不要學習編程了。
比如一個16周的課程,前面12周都在講理論基礎和枯燥的概念,到了課程最后,他們覺得得讓你有點實戰經驗,就安排了4周的時間,做一些小demo,讓學生去模仿,美其名曰實戰項目。
這樣的學習效率是非常低的,效果也非常爛的,所以業界對培訓學校的學生,是相當的反感,他們對培訓學校的學生他們是這樣來的,因為經過這樣訓練的學生,基礎又不扎實,又不會搞實戰,甚至別說編程學校,很多編程書,其實都是這樣編輯的,前面啰嗦講了一大堆自己都不明白的道理,讓讀者先失去興趣。然后再示范一個跑不起來的項目。

當然我們也不能在這里去怪這些人是惡意的。
因為事實上編程與教會別人編程,這根本是兩件不通的事情。
程序員通常會喜歡,在初學者不懂的時候,給教程里面添加非常詳盡的解釋,但是他不知道,設計的教程越詳細,越讓初學者崩潰。

因為學生的大腦在這種情況下,沒有辦法用未知解釋未知,那教程寫的越詳盡,初學者不會感覺更開心,反而會感覺越來越崩潰。
這也就是我每次問大家目前的技術水平是什么的根本原因,我們的教程是針對不同技能水平而設計的,你只有找到最適合你現在水平的教程,才能最高效的進步。
之所以我的辦法有效,是一開始就跳出了這個大坑,實際傳授,我以前在內部培訓當中總結出來的有效方法。
那這個方法與通常的培訓都是有一些反常,但并不是不科學的。

我在這里先分享一下這套方法
我是想告訴你,如果你想要自學一門學問,假如是編程
第一步是要挑選, 實戰型的初學指南
如果你不知道怎么挑,又想學習JAVA或者大數據的話,你可以報名我的課程
如果你不是要學JAVA相關的課程,比如你想要學前端開發的話,你一定要請這個領域的高手,你一定要注意,你找的這個人一定不是只高你一級的高手,而是要高上你10級的這樣的高手,幫你挑一個很小的項目,最好是你如果是一個新手,在1到3天可以學完的這樣一個小項目
你放棄前面的解說,直接進入后面的實際操作,不過你在這里有一個要注意的地方,就是最好不要去搞視頻類的教程,最好這份教程是能夠給你復制粘貼代碼的,程序的版本越新越好
接下來你要做的事情是放棄原理的部分,全速沖刺把練習的項目能做的小國能盡快做出來,即便是復制粘貼代碼也在所不惜。
然后把這個項目做上三遍。
特別注意
網絡上的教程魚龍混雜,隨便一個前端項目就敢叫大數據項目,隨便做幾個動畫效果,就敢說自己是BAT核心業務,請大家一定擦亮眼睛,實際操作才是王道,如何操作才是核心。
下面我教大家一下怎么做三遍,因為這個坐上三遍也是有訣竅的
第一遍,你可以先復制粘貼代碼,根據流程,大致了解要貼什么代碼會產生什么樣的結果,如果這個教程上面有解說
,如果你真的很受不了不弄明白就沒辦法繼續下去的話,那可以偷偷的看一眼了解一下,但是只能看一眼,不懂就隨他過去吧,一定不要停下來看太久,也不要太糾纏,一定要搞明白,因為如果你堅持要搞明白的話,會把自己的學習初速度,往下大大的拉低
第二遍,你必須要跟著打代碼,能打的就用打的,也不用鉆研解說,和他對原理的各種描述,因為第二遍的目的是大致了解這個項目框架里面,到底大致上有哪些工具,包括錯誤信息要怎么閱讀,如果解決打字的錯誤等等。
其實打錯字是很正常的,遇到錯誤畫面其實也是很正常的。如果你在學編程過程中,我希望你看到錯誤的時候,不是害怕而是興奮,因為只有你看到錯誤才是成長的最好方式。
但是還是仍然有很多人在初學編程的時候,看到錯誤畫面馬上就崩潰了,但如果你仔細看,錯誤的英文畫面也只是英文的字母,如果是開源的一些工具,他會盡量友好的把錯誤信息給到你,給你解決錯誤的實際操作建議。如果你能深呼吸一下,把上面的錯誤重新閱讀一下,不過是一個錯誤嘛,其實不給你報錯,就是不給你正確結果才是編程中最讓你崩潰的呢。
那為什么看到編程的報錯信息,那么容易讓人崩潰呢?這是因為編程是一門相當特殊的學問,很多人在學習過程中,很容易把編程的這個報錯信息,認為是對自己的嘲笑,跟攻擊,尤其是特別敏感的人,你的一言一行,一眸一笑,在敏感人的眼睛里都會有特殊的深意。
在這里我奉勸各位一句,如果你是敏感的人,請刻意的鍛煉一下鈍感力,如果你是一個神經大條的人,我請你多關注身邊的人的情緒感受,因為真的好多矛盾是由于對行為的過分解讀,而很多矛盾也是因為神經大條的人太不在意別人的感受。
我們言歸正傳,在正常的生活中,你其實不會每天被別人嘲笑10幾到幾十次,所以他看到這么多錯誤自然會感到很崩潰,以為自己是一個失敗者,那如果要學會編程,你得先把“失敗者”這個單詞,從腦袋里面干掉,你只要把他看成是一個忠實的反饋就行了,而設計者設計報錯的初衷,其實也真就是這樣的。
第三遍,還是跟著打代碼,但是跟第二遍有什么不同呢?在這一邊當中你要了解,當初你為什么會在這犯錯誤,那錯誤的原因又是什么,你要了解當中的小原理,在這一遍當中,你就要搞懂,這塊的輸入是什么,輸出是什么,如果我改變著里面的輸入,跟著的輸出會有什么變化,如果我們的輸入保持不變,我想改變輸出的結果,我需要如何做改動
如果有不明白的地方,你就把他背下來。
我還要教給大家一個學編程的小竅門,當你在學習編程的過程中,你可以那一本空白的筆記本在旁邊,把你在學習編程的過程中,犯的所有的錯誤記下來,把你犯的所有非常傻B的錯誤記下來,除了記下來以后,也把解決問題的方法附上去,然后公開的發表,注意,最開始你要做的是只記錄錯誤的信息,在你工作了以后,你可以把正確的步驟和方法也像這個樣子記錄并公開。
我告訴你這個方法以后,也許你會有這樣的疑問,我記筆記為什么要記錄錯誤,而不是正確的地方呢?我必須要告訴你,所有的事情都是分階段來做的,有一本書叫做《囚徒健身》教你如何循序漸進的鍛煉你身上每一塊肌肉的。還有跑步,老師我報名了10月份的一個馬拉松,那最簡單的方法就是保持頻率。科學訓練誰都可以跑下來,你只需要保持心率在160以下,之前不能長跑的同學,都可以試試。
為什么現在不讓你記錄正確的信息,因為正確的信息教程上就有啊,上面都是對的,你沒有必要在這個階段做啊。如果你只記錄正確的東西,到最后反而什么都學不會,你的每一步操作,都是在踐行正確的東西,而不是認真的記錄一下,就覺得自己學會了,其實你需要重復的練習。
我在重復的講一遍,因為這件事非常非常非常的重要、重要、重要。老師不是在這結巴,而是重要的事情說三遍。
請各位在學習新技能時,一定要把錯誤的信息記下來,并且把解決方法記下來,如果你遇到了一個怎么做都做不對,經常絆倒自己的地方,你就要把他先背下來,而不是跟他死磕,這其實是一個很簡單的竅門,如果你不相信的話,你可以試著在下次學習的過程當中,試寫三天的筆記看,我都說了,你就當最后一次被我騙。很快的你會發現。

如果你一直都是在記錯誤的地方,很快你的錯誤都不會再犯,你可以很快的加速前進
如果你在練習的過程中遇到BUG解不開,你可以花錢找一個程序員朋友,或者包個紅包給程序員朋友讓他幫你解決一下,不過你一定不要讓他對你的學習方法指指點點,把他當做人肉Debug機就好了。你就當最后試一次學編程,嚴格執行這套方法,不要對這套方法懷疑,如果你還學不會的話,你再放棄也不遲
上面我說了這套方法,可能你聽了還是不相信,因為這種反常式的方法,到底哪里科學,其實你大可不必懷疑,你就當被我騙,先實際跟著做,等你實際跟著做以后,就會發現這套方法的神奇
這當中背后的道理其實有幾個,全是基于認知心理學發展出來的。
第一個理論就是,當你想取得一項技能的時候
初速度一定要快,一旦到達臨界點,你的學習就會形成正向循環。你每向前一步,吸收到的知識和愉快心情驅動這你的下一步學習和完成,反復滾動。
第二個理論就是,如果你面對過去從來沒接觸過的領域最有效的學習方法,就是要配合大腦自然的學習模式,也就是左右腦的學習模式,互相去配合,你得先利用右腦模式,去進行肌肉的記憶,快速的有一個粗淺的知識去當框架,比如全盤不問道理的模仿,接著再用左腦模式精確的去分析其中的道理,一定是以取得技能為前提,不斷的往前進。
這種方法對于學習那種之前沒有對照經驗的技能,非常有效

下面給我大家介紹一下大腦的運作原理
為什么我們一直主張這樣的學習方法是因為一般人學習之所以低效,是不了解自己的大腦是怎么運作的。
一旦你了解了你自己的大腦是如何運作的,很快你就會發現,學習其實是有套路的。
甚至你可以用這套方法,去大幅的拉升自己學習的初速度
我先告訴各位大腦的幾個特征
第一,大腦其實是不擅長思考的,而且大腦的思考是非常的緩慢的,
第二,多數的你認為的思考,其實不是真實的思考,而是調用過去記憶所組成的結果。
第三,人是用已知的事物去了解新的事物的,但是大家以為的理解,其實是記憶。
第四,如果你沒有重復的練習,是不可能精通任何的腦力勞動。
第五,大家痛恨的題海戰術或者填鴨式教育,有時候其實是有用的,甚至是必須的。

為什么我會說大腦不善于思考呢?
在現實我們最常見的一個現象是絕大多數人是不用腦袋思考的。
仔細想想你會發現大腦就真的是不善于思考的。
你可以讓大腦隨便做一則驗算。比我們計算機的計算速度是低太多太多了是吧?
做個7×8的數學沒問題,但是如果你算一下177×288你算算看 ,你會發現你的大腦瞬間就宕機了。 老師告訴你其實是等于 50976 你問老師咋算的,我會告訴你,老師那能是一般人嘛,最強大腦,相信有些人看過吧, 辻洼凜音那個小姑娘,你們有印象吧。 好吧其實我是背下來的。這里跟大家開一個玩笑。
我再用一個案例給大家理解一下,
一個空屋子里面,有一只蠟燭,一些火柴,和一盒圖釘。我們的目標是讓點燃的蠟燭離地面1米高,你已經嘗試把蠟燭底部粘上蠟液,但是粘不到墻上,你不能用手扶,讓點燃的蠟燭離地面1米高。
一般人如果沒做過這個題目,很少能在20分鐘之內解決這個問題。
但是如果你將這個題目具象化,也就是說真的把這些東西放到你的面前,你就會發現其實這道題目的答案非常簡單,你只要把圖釘倒出來,把盒子用圖釘釘在墻上,把蠟燭黏在盒子上就可以解決這個問題。
這個實驗證明,
第一,其實我們的大腦思考是非常緩慢的。
第二,思考是非常費力的,大腦是很難憑空想象,文字,圖像,甚至是聲音,并產生這個場景。再進行運算和解答,就難上加難了。
甚至有很多人,完全答不出來。
而且有一大部分人,聽完我講的,過幾天幾個月,幾年以后也還是完全答不出來。

但是如果我們把大腦接上視覺系統,觸覺系統。
因為視覺系統和觸覺系統可以很快的回傳結果到我們的大腦。
大腦其實是調用了其他區域可用的記憶資源,進行重新的編碼運算。
大腦就更容易的得出答案
聽完了以上,你會發現,既然思考對我們來說是非常費力的。
那人類平時是怎么做出不非功夫,日常生活中的各項決策呢?
這邊我要給大家一個答案就是

所謂的習慣,其實就是我們做過某件事的記憶回路
習慣其實是大腦調用過去的記憶,讓身體自動做出判斷,
所以我們在這里要引出,我們今天要介紹的認知心理學的第二條

大多數人做的決策,其實并不是基于大腦所做的思考,而是調用過去記憶所組成的結果
大腦的決策其實是依照兩種記憶混搭組成

一種是日常暫存用的工作記憶
一種是儲存過去事實性知識的長期記憶
那什么是工作記憶呢?

工作記憶其實就是我們當下,在思考的工作區域,
以計算機來比喻的話,那就是計算機里面的內存,
他的特點是,
能記住的內容小,
資料存在的時間短,
關機或者斷電就不見了
那什么是長期記憶呢?

長期記憶的就是過往,存儲的事實性知識和經驗,
用計算機來比喻的話,就是外存,外存就是外部存儲的意思,
他的特點是,
他的內容非常的大,理論上是可以無限大的
資料存在時間長,可以永久存在的
而且可以長期的復用,你用的次數越多,記憶的就越牢靠,
對應計算機的理論,就是你可以把常用的內容可以cache到內存
其實我們在做決策的時候,很多時候其實是調用了長期記憶,長期記憶就是過去的經驗或者還沒有變化的科學事實,自動去完成的這樣一個過程。
我們日常所謂的解題,或者思考,其實是復用了短期記憶和長期記憶組成的
比如177乘以288的這個例子

7乘以8是長期記憶,是我們小時候背的九九乘法表
如果我們要在腦袋里面計算 177乘以288 這就是工作記憶
突然之間你就會發現你的腦袋里面算不出來了,算不出來的原因就是,人類的工作記憶區,不夠大,正常情況下只能存儲 7正負2個結果而已
所以很多時候,人類對于復雜狀況他是沒有辦法迅速決策的,但是如果他過去有經驗的話,他就能迅速調取之前的經驗,迅速做決策
所以事實上我們說穿了,人類大多數的時間,是在調用記憶在做決策的

第三部分,我要分享的原理是,人類是利用已知的事情理解新的實物

但理解其實是記憶,我們所認為的理解,其實不是一個調用大腦思考的一個過程,而是一種匹配記憶的過程,所以很多行業不喜歡招小白,事實上就是因為小白的經驗過少,他缺乏相關的記憶,可以直接去匹配學習
注意
但是現在互聯網社會的一個特點,并不是是你之前會多少,而是要看你的增量是多少,比如一個投資機構,投資給一個公司,他看中的不是你的公司今年能賺多少錢,而是他看你今年比去年增長率增加了多少,我們大學的教育,跟不上時代的發展,才催生了想我們這種培訓的機構,就是因為學校的教材,和教育方法,和企業中實際要的不一樣。學校的教育是給你講各種知識點,然后期末給你一個不超出范圍的一個考題,但實際工作中,往往老板給你的一個問題,沒辦法有現成的經驗和
為什么一般人難以上手編程,而且對于學習編程感受到痛苦,是因為在學習編程的時候,編程里面大多數的知識,是跟之前所有的生活環境原理,幾乎是不匹配的,所以很多人覺得,編程語言雖然是英文,甚至還有中文的編程語言,但是卻無法理解,而大量調用大腦資源去匹配思考,結果確實都匹配不上,在沒有有效回傳的情況下,你就會造成意志力崩潰了
這根我們學習英文也是一樣的,我們試圖把中文和英文對照在一起記憶,因為中文是你熟悉的,而事實上英文的語法是你中文無法理解也從來沒有見識過的。兩個在很多時候,是沒辦法匹配的,就算能夠匹配,也是有很多意外的狀況的。所以你就會覺得學習英文非常非常的困難,也會感覺到很痛苦。
很多人學習英文和編程,都是被一些所謂枯燥的基礎所嚇倒的,但是很多時候,在教學的時候,老手會覺得基礎是非常重要的不能跳過,而且要放在最前面講,其實這種方法也是無可厚非的,但他們所不知道的,基礎知識對于新手來講根本就是沒辦法理解的,就算你講的再好,講的再細,他也沒有辦法理解的,也是沒辦法能夠記住的
關于講的好和講的不好的問題
在培訓的過程中,我經常能聽到一些聲音,這些聲音怎么說,就是老師,我覺得XXX老師的視頻講的,比咱們XXX老師好,(或者說句不謙虛的話,老師我覺得你講內容,比講相同內容的XXX老師的視頻好),其實這些話我是理解的,你之所以覺得這個老師講得好,是不是你原本聽過XXX老師的音頻就聽了一遍了,已經聽懂了一部分內容,然后再聽我的講解,有更多的關聯,然后記住了,然后就覺得我講的好呢?其實大家可以反思思考一下。
其實我們同行培訓的講師,授課的內容,我們都是會通過各種手段,買回來學習的,我講課的內容,我基本上都看過很多機構很多老師關于這個知識點的多種講法,我所展現給大家面前的,是我覺得你這種方式能聽的懂的講法,但每個人基礎不太一樣,我的目標是淺顯易懂,但個人能力有限,如果不是馬老師給我們做課程的把關,我也很難說怎么講一個知識點最恰當和合適,
我曾經做了一些實驗,就是我把我講課的內容,給我媳婦講,因為她是沒有太多編程經驗的這么一個人,如果他能聽懂,我就認為可以了,但也還是經過不斷的打磨的。
好,我們回到正題
比如說我要引述一本書,這本書講的是程序員界用于管理代碼的一個工具叫做Git,他的初學指南上的描述,我們就來看以看Git是如何來運作的,這本書的初衷是讓初學者很快的了解Git是什么,他是這樣說的,我在這邊給大家念一下
那么,簡單地說,Git是一個什么樣的系統?這第一章節是非常重要的。若讀者了解Git的本質以及運作的基礎,那么使用起來就會很輕松且有效率。在學習之前,試著忘記以前所知道的其他版本控制系統,如:Subversion以及Perforce。這將會幫助讀者使用此工具時發生不必要的誤會。Git存儲資料以及運作他們的方式遠異于其他系統,即使他們的使用者界面是很相似的。了解這些差異會幫助讀者更準確的使用此工具。
Git與其他版本控制系統(包含Subversion以及其他相關的)的差別是如何處理資料的方式。一般來說,大部分其他系統記錄資訊是一連串檔案變動的內容,這些系統(CVS、Subversion、Perforce、Bazaar等等)存儲一組基本的檔案以及對應這些檔案隨時間遞增的更動資料。
Git并不以此種方式存儲資料。而是將其視為小型檔案系統的一組快照(Snapshot)。每一次讀者提交更新時、或者存儲目前專案的狀態到Git時。基本上他為當時的資料做一組快照并記錄參考到該快照的參考點。為了講究效率,只要檔案沒有變更,Git不會再存儲該檔案,而是記錄到前一次相同檔案的連結。
這就是一般程序員,或者一般培訓講師(比如說我),會寫給新手,或者講給新手的知識,你會覺得,這里面每個字都是中文的字,但就是連在一起不知道個所以然,那這本書的寫作初衷,作者寫了,他說若讀者了解Git的本質以及運作的基礎,那么使用起來就會很輕松且有效率。所以他花了很大的篇幅試圖去解釋Git是怎么樣運作的,聽起來邏輯是對啊,但效果你不覺得是很諷刺的嗎?
他竭盡所能的要讓你了解原理,但事實上你已經聽的快睡著,當然在我在這里不是要諷刺他寫作是什么水平(因為我的水平也不怎么樣,畢竟人家已經出了書,我卻還沒有出書,不過不用急,不久之后會有的),我是因為需要學習這門技能的人大多是一無所知的編程小白,而這邊教程里面提到的,絕大多數的名詞,對于一般人來說也是無異議的,不只是一般人,甚至是一些初階的程序員來說,這段他到底在說什么。
那么我們如果要寫一篇人看的懂的教程,要讓非計算機背景的讀者,了解這個機制,我們要怎么做呢?
強勢插入
說到這我又想起來一個段子,就是羅振宇,羅胖,我為什么喜歡他講的故事,因為他講的一些專業的知識,對于我這樣的一個門外漢來說,我會認為我聽懂了,雖然到最后還是什么都記不住,但我當時是以為我懂了的,而與之對應的還有另外一種情況,當一個人在某一領域不是很擅長的時候,他更可能認為自己是這方面的專家,這其實是有個專有名詞的,叫做二階不勝任
舉兩個例子,你就懂什么叫二階不勝任了,比如有人會說:
“公務員,我懂的,無非是官官相互”,
“讀書用處不大的,實踐才出真知”
,也不知道這幫心理學家是怎么想的,反正我們老家那稱這種人叫,心沒數。他要是不弄出個二階不勝任,不能顯示他高人一等的地位。
這么說話有點狂,但如果我不狂,你就不信我牛逼,整因為我不牛逼,我在只能裝作我很牛B,其實我不想的,是你們逼我這樣的。
說到這我又想起來有一個段子,說一個男領導性侵以為下屬,下屬不從,他把人家胳膊給弄斷了,當警察問他為什么要這么做的時候,他說我也不想的,是女下屬逼他這么做的,如果當時他不反抗,就不會把人家的胳膊弄斷
這在段在心理學上又是一個術語,行了,我不在這裝B了,感興趣的可以自行百度一下。
好吧,我承認我說的都是雞湯,但是不是毒雞湯只有你喝了才能知道,我唯一可以確定的一點,就是沒有解藥。
對吧,你們說我一個一天只會灌雞湯,吹牛逼的人都能學會大數據,你們有什么好擔心學不會的呢?畢竟我只關注灌雞湯和吹牛逼,而你們關注的是學習計算機技術,你說是吧?
哈哈好就沒這么認真的裝逼了,好爽。
http://www.lxweimin.com/p/89ecdf42dd31
我們言歸正傳

那么我們如果要寫一篇人看的懂的教程,要讓非計算機背景的讀者,了解這個機制,我們要怎么做呢?
如果是我的話,我就會介紹Git就是寫作代碼的時候用的時光機
而且我們可以用一套圖形的界面去操作這個時光機,任意回到希望回溯的時間點,我們可以任意的時間點,檢視之前寫的代碼并且觀看他的變化,所以,不僅很多開發團隊在用,后來我發現很多寫作團隊,他也在用這套工具去實行協作。
比如,我組織了一個小組織,大家一起協作做一些教程出來,做教程的方式很簡單,0基礎的人也可以做,那我們協作的時候,也是想用這樣的工具。但由于有學習成本,我們先用其他更簡單的工具。
那么我換個方式講,是不是瞬間可以理解這個工具是什么?
和用來解決什么問題的?
你看著當中的差異是什么?
這個差異,就想是我和馬士兵老師之間關于講課這個技能之間的差異。
我用時光機去比喻Git這個工具,是因為絕大多數的人曾經看過,我哪時候叫,機器貓,臺灣叫小叮當,現在叫哆啦A夢,或者看過科幻電影,他能夠理解時光機是什么,也可以知道時光機能帶來的好處是什么,所以一旦想要回溯他的代碼,他就像到聽到這個概念以及工具以后,他就像要去接觸和使用這個工具,以提升他開發的效率
甚至他可能在聽完我講這個例子時候,就已經產生興趣,要去使用了。
等到他們理解了,這套工具可以幫他完成什么效果,他想要控制更多細節的時候,就會深入的去學習和使用,
你真的不應該花上一堆時間去仔細告訴小白,這里面的運作原理,這絕對是徒勞無功的
這個例子就是要去解釋,一般人在學習編程時會遇到的坑,我們的話題扯的太遠了,都快回不來了,總之,我是想讓大家理解,讓程序員說人話是有多么的難。
還記得我們這段表述的論點是什么嗎?

就是人類只能用已知的事物去理解新的事物
在很多教學界里面,必提到的金科玉律。
人類的理解,其實是一段不斷在舊有記憶上累加的這么一個過程。

第四部分,沒有重復的練習,不可能精通任何腦力活
我們前面提到了人類的工作記憶,工作記憶區的容量非常的小,
如果你要做的意見事情,需要大量調動工作記憶區,那么很可能,這個人瞬間就決策癱瘓了。
因為新手和大神他們之間的差異處在于,大神已經把很多復雜的狀況,變成直覺了,所以他瞬間就能進行判斷和處理。
比如我們談足球這個運動。

所謂我們講的直覺,就是
一般人所謂的學習,是將新東西放在短期記憶里面,進行理解的聯結
如果我們不進行反復的練習,就很難把他放到長期的記憶當中

我主張題海戰術和填鴨式教育,很多同學會覺得很奇怪,我不向來都是,離經叛道的嗎?怎么會推崇大學教育,或者反過來說,大學教育那么有用,我們應該學會了才對,而不是需要出來做培訓啊
我們傳統教育就是這樣的教育方式啊,我們經歷了9+3+4 16年的教育,有的人可能還更長,聽到這種方式,就深惡痛絕的痛恨
所以你就對我說的這種通過不求甚解的,重復練習這樣的方式不贊同,
甚至有些人太痛恨題海戰術和填鴨式教育了,所以他立志,如果以后他教育別人的時候,一定要用理解型的教育
那我必須說這個結論看起來是正確的,但是事實上是錯誤,并且有毒的

如果讓小朋友理解 7乘以8等于 56
你的手指頭夠用嗎?
如何讓中學生理解 E= MC^2
你發現這根本就做不到啊
因為小白腦袋里面根本就沒有東西做聯結,所以我們只能進行填鴨式教育,讓這些內容,強制的存儲在長期記憶區里面,當日后接觸到更多的材料的時候,才能夠將這些硬背下來的東西,安放到更正確的地方去。。
未完待續。。。。