寫給程式設計師的有效學習方法

百焱發表於2016-11-12

在 9 月紐西蘭的 Kiwi PyCon (一個關於 Python 語言的年度例行研討會)研討會中,我就提出了針對程式設計師的有效學習方法。演講中主要提到了兩個方面:一個是思維模式方面,一個是具體可用的學習方法。下文是那次演講中關於思維模式的一個簡單指南。如果你想了解學習方法方面的內容,這裡有視訊

Recurse Center

在去年我加入Dropbox(美國一家雲端儲存服務公司)之前,我在紐約一家叫Recurse Center的公司工作了兩年。Recurse Center是一個針對程式設計師靜修的社群,類似於作家的靜修寓所。參與者在這裡用三個月的時間來做他們最感興趣的事情。因此一個做了十年java開發的人可能去Recurse Center學習一個新的語言,比如Clojure(Clojuer是一種在JVM平臺執行的動態函數語言程式設計語言)或者有人剛剛畢業於計算機專業可能去那裡學習Web開發技能。再者,有人只是業餘學習程式設計,可能只是去那裡充電。在那裡編寫程式幾乎是沒有組織計劃的——沒有交付期限,沒有任務分配,也沒有教學指導。是成人自學的一次體驗。

我的角色相當於一個導師,幫助人們充分利用他們在Recurse Center因充分自由而感到迷茫的時間。受過傳統教育或者從事過傳統工作出來的人們經常不知道他們該做什麼。因此我會幫助他們設立目標,幫助他們充分利用經驗。我們考慮的最多的事情是對程式設計者來說如何儘可能有效地充分利用他們的學習經驗。今天我將講一些調研案例,涉及到如何成為一個高效的學習者以及作為程式設計師和工程師怎麼將研究成果應用到們的日常生活中。

想從這篇文章中學到什麼

花一分鐘想想你想從這篇文章學到什麼。你可能想要學到怎樣儘可能有效地工作。你可能想知道怎樣成為初級工程師的更好老師或指導者。或者你可能想知道怎麼在組織中做出一些制度上的改變,為高效地工作建立一個更好的環境。

以上的這些都是有用的目標,我將在材料中提及相關內容。然而,我建議你仔細思考一下你自己大多的學習方法。當我聽到這些學習方法的時候,經常是這些方法明顯適用於其他人,但是對我來說並不適用。我稍後會詳述這個觀點。

成長型思維模式:Carol Dweck

讓我們來討論一下有效學習的第一個關鍵。社會學家 Carol Dweck 在關於人們怎樣看待智力的問題上做了大量有趣的研究。她發現對於智力的看法主要有兩種不同的看法。一種,她稱為固定型思維模式。這種觀點認為,智力是與生俱來、難以改變的資質。另一種是成長型思維模式。成長型思維模式的觀點是:這些人相信智力是可塑的,可以通過努力來改善的。

(譯註:Carol Dweck,美國心理學、社會心理學和發展心理學領域的傑出人格研究者)

Dweck發現,一個人對於智力的觀點——固定型思維模式還是成長型思維模式,可以顯著地影響一個人選擇工作任務的方式、對於挑戰的應對方式、一個人的認知表現,甚至一個人的誠信。讓我們看一些Dweck有趣的的研究。

兩種思維方式引起努力程度的不同

第一個有趣的研究結果就是,思維模式影響了人們對努力的觀點如果你是固定型思維模式的人,你相信人不是聰明的就是不聰明的,人們沒辦法真的改變這個事情。同時你相信如果你擅長某件事情,它對你來說就是容易的。如果某件事情對你來說是困難的,你就一定不擅長這件事。這是固定型思維模式人群的觀點。成長型思維模式的人相信只要你在一件事情上付出勤奮的努力,你最終會變得擅長這件事。

一些研究發現固定型思維模式的人不願付出真正的努力,因為他們覺得這樣意味著他們不擅長他們正在努力的事情。Dweck備註道:“如果你每遇到需要付出努力的任務你就質疑自己的智力,很難保持你能力上的自信。”

“事與願違的稱讚”

最有名的大概是第二個有趣的研究的研究結果。Dweck團隊發現,給學生們細微差別的稱讚,顯著地影響了他們的表現

在這項研究中,Dweck團隊給學生設定了一系列試題。第一套試題所有的學生都做得很好。他們稱讚其中一半學生:“哇!你這些題做得非常好,你一定特別聰明!”。稱讚另一半學生:“哇!你這些題做的非常好,你一定非常努力!”。接著他們做了第二套試題,這套題比第一套更難些,每個人都表現很差。然後他們做了第三套試題,第三套題像第一套題一樣——又回到了簡單的水平。

此時,A 組學生(被稱讚聰明的學生)建立了固定型思維模式。B 組學生(被稱讚努力的學生)建立了成長型思維模式。

他們發現這裡有一堆有趣的事情。一個事情是:在做第一套題和做第二套題間,他們問學生,接下來他們想做更簡單一點的練習還是更難一點的。(在實際練習中,每個人接下來拿到的都是更難的試題。)Dweck 想要看看獲得不同稱讚的學生是否會有不同的迴應。果真如此,90%被稱讚努力的學生選擇接下來做更難的試題,對比之下,被稱讚聰明的學生僅僅有三分之一的人選擇更難的試題。被稱讚努力的學生更喜歡挑戰

他們發現的第二件事情是在第三套試題中學生的表現。他們發現,A 組學生很明顯地比他們做第一套試題時表現更差了。但 B 組學生比第一套試題做得稍稍好一點。A 組學生不能很好地從第二套試題的碰壁中恢復過來,而 B 組學生卻可以很好地恢復。

此後,他們讓學生給筆友寫信講這次研究:“我在學校中參加一個了研究專案,這是我得到的分數”。他們發現被稱讚聰明的學生中,幾乎有一半在講述成績時撒謊,但是被稱讚努力的學生幾乎沒有一個不誠實的。

因此,這裡有三個啟示:成長型思維模式相對於固定型思維模式,使學生更願意選擇挑戰而不是選擇更簡單的事情;在遇到挫折時更容易堅持;並且在表現中更加誠實。

這個研究最有趣的地方在於,兩種稱讚方式之間差別這麼細微,導致的結果卻天差地別。被稱讚聰明導致他們想要保持聰明的表現,通過只做一些簡單的、他們知道一定能表現好的事情來隱藏他們不好的表現。被稱讚努力導致他們想要保持更努力的表現——最好的方式就是更加努力。

對干擾的反應

另一個研究考察了學生面對臨時干擾的反應。Dweck團隊給基礎教育學校的學生設計了一個簡短的心理學課程。這個課程是一個小冊子附帶一個小測驗。有一些小冊子有一個混亂的段落,另一些沒有。混亂的部分沒有設入測驗,因此學生如果完全忽略掉混亂的地方就可以掌握重點。調查者想知道學生能否從混亂片段的暈頭轉向中恢復過來。

他們發現,不論有沒有人遇到干擾段落,成長型思維模式的學生掌握了70%。而固定型思維模式的學生當中,沒有遇到干擾段落的學生也掌握了70%,但是遇到干擾段落的學生僅掌握了30%。固定型思維模式的學生,在遇到干擾時恢復能力比成長型思維模式的人差些。

“怎麼更好地解釋人喜歡模仿別人習慣的本性?是因為這些人本身很優秀,我們想要變得像他們?還是我們想讓這些人像我們?”

如果我參與其中,我希望拿到有干擾片段的冊子,因為這個事情真的能引起我的共鳴。如果你曾經在使用一個新工具或者檢視技術文件時有過類似情形或感覺請舉手(大多數人會舉手)。類似的事情時常發生——你拿到了某領域專家針對新手編撰的文件,或者冷門或有些其它的問題的文件。在我們閱讀的文件中跳過困惑的地方,成功獲取到剩餘的資訊是程式設計師至關重要的技能。

程式設計師需要一個成長型思維模式

程式設計師需要一個成長型思維模式!程式設計師的關鍵技能:像對干擾的反應、受挫後的恢復能力、對挑戰的渴望,對成長型思維模式的人來說很容易應對,而對固定型思維模式的人來說卻很難。

每個人都是固定型思維模式嗎?

現在,有時當人們聽到固定型思維模式的觀點時,像一個稻草人一樣(一臉懵逼)。比方說,技術公司的每個人都真的瞭解這個觀點嗎?我認為絕大部分人是固定型思維模式。這裡有一些例子。

10倍效率的工程師

從「10倍效率工程師」的概念開始講。「10倍效率工程師」指一些工程師比其他工程師的效率高出一個量級,「10倍效率」是對效率的一個定義。這個概念有很多爭議,但是我們現在暫時把它們先放一邊。如果你認同「10倍效率工程師」的概念,那麼你認為「10倍效率工程師」天生就是一個超級高效的程式設計師嗎?還是認同他們的效率也是逐漸增長的?

我認為,很多相關的流行概念中,「10倍效率工程師」的概念是建立在一個觀點上的,比如“我們永遠也沒辦法成為某些人”的觀點。很明顯這是一種接近固定型思維模式的觀點。

英雄崇拜

另一個表明我們是固定型思維模式的證據就是英雄崇拜。因此Julie Pagano 在“PyCon 2014”大會做了關於“冒名頂替綜合症(冒牌者綜合症、騙子綜合症等各種中文譯法)”一個精彩的演講,她的一個戰勝冒名頂替綜合症的建議就是“幹掉你的偶像”。不要將其他程式設計師作為衡量你自身能力的標準,不要講“這個人跟我有很大的不同”。借這個事情驗證兩種不同的思維模式也很有用。如果你有一個程式設計師偶像,你是不是認為他們跟你很不同?你是不是變得更像你崇拜的人?如果你不這麼認為,這就是固定型思維模式的證據。

因此我承認,一個技術公司固定型思維模式確實很普遍。

你可以改變固定型思維模式嗎?當然可以!

很值得慶幸,你們現在確信了成長型思維模式比固定型思維模式更好。因此接下來的問題是:這個是可以改變的?你可以從固定型思維模式轉換為成長型思維模式?答案是:當然可以,你完全可以將固定型思維模式轉變為成長型思維模式。

實際上,在Dweck的很多研究中,通過一些細微的方式誘導了成長型思維模式或固定型思維模式。“稱讚”研究就是一個例子:一句稱讚改變了一個學生的行為。在其他研究中,他們讓學生閱讀了一段某著名人物的成功事蹟,在文章末尾寫“因為他們工作很努力”或“因為他們優異的基因決定的”。所以這完全是一個可改變的事情。

因此怎麼改變固定型思維模式?有時,挑戰實際上可以用來識別固定型思維模式,一旦你聽到自己說“我從來不學物理學”,這已經明顯是錯誤的思維。但是有時,很難根除固定型思維模式。因此你可以用一些小旗來識別固定型思維模式從而根除它。

怎麼識別固定型思維模式?

如果你擔心你是固定型思維模式,你應該留意以這些關鍵詞開始的句子。像“我從來不擅長CSS”、“我不是一個受歡迎的人”或“一些程式設計師就是比別人學得要快”。以“我是……”開頭的句子就是“嫌疑句”。關鍵詞“就是”也經常出現在此類句子中。

現在,顯然你不是不可以講帶有關鍵詞“我是”的句子,這不是固定型思維模式的標識。而是將這些句子作為你提醒自己的一個黃色小旗,緊密地提示並檢查你的固定型思維模式。

只是說句題外話,“我不是一個受歡迎的人”是某個研究的案例——Dweck團隊做了一個關於交際和社交情境的研究,這個研究也有所保留。(詳情請看問答環節)

怎麼改變固定型思維模式?

好,一旦你被識別為固定型思維模式,你怎麼改變它?這裡有四個方法。

①對稱讚和成功進行認知轉換

第一,對稱讚和成功進行認知轉換。轉換對稱讚的認知,我的意思是當你獲得錯誤方式的稱讚時,將它們轉換為有利成長型思維模式的稱讚。因此如果有人說“哇,你的工作做得真好,你太聰明瞭!”,你可以將它轉換為“耶!太好了,我在這個專案中真努力!”。你沒必要大聲地喊出來!但是認知轉換能讓你提高尋求挑戰和付出努力的主動性!

你可以在成功或成就中採用相同的方式。當一些事情進行的順利的時候,不要覺得“當然會做的很好因為我聰明啊”,而是想“我在這個專案中採用了一個有效的方法!我應該更多地去應用這個方法”。

②轉換對失敗的認知

當然這個方法的另一面也非常有效。固定型思維模式和成長型思維模式的很大一部分是你怎樣應對失敗。當你面對挫折或者沒有得到你想要的結果時,你的內心戲是怎麼樣的?如果你覺得“可能我確實不適合這份工作”,這時應該用紅色小旗做標識。與此相反,你應該問問你從你的失敗中得到了什麼或者哪種學習方式你需要改變。這個方法聽起來很平常,但是真的很有用。

③為挑戰慶幸

第三,為挑戰慶幸。當你必須競爭的時候你是什麼樣的反應?試著為此感到慶幸。這是我在Recurse Center工作時始終堅持的習慣。一些人會坐在我旁邊說:我遇到一個奇葩的Python bug(嘆氣)”。 我說:“太好了,我就喜歡奇葩的python bugs!”。首先,讓我們來說說,有一點是清楚的——當你遇到一個奇葩的bug,相對於bug本身更重要的是,這說明你找到了一些可以通過努力獲得成就感的事情,這些事情是你可遇不可求的。

像我提到的一樣,在Recurse Center沒有交付日期,沒有任務分配,因此這種心態是無需付出任何代價的。我一般會說“你可以花一天時間在Flaskpython的一個框架)上追蹤這個bug,多好啊!”現在,在Dropbox(一種雲端儲存服務)上,我們有一個產品要開發,有交付日期和相應使用者。我不能總是一味地為花一天時間來為追蹤bug感到高興。因此,我對身處有交付日期的現實中的人們深感同情。然而,如果我必須修復一個漏洞,我承認bug的存在不利於我對漏洞的修復。但是在沒有交付日期的情況下,你仍然可以採用我的態度。

④關注過程

第四,關注過程。跟很多人一樣,我同一些優秀的工程師一起工作。有時,我會試著用不合理的方式修復一些棘手的bug,但是有些人能夠以正確的方式修復。在這種情況下,我會習慣性地問他們怎麼做到的。尤其當我剛用Dropbox的時候,他們的回答會很有啟發性。有時,他們回答的一些資訊來自於我根本不知道的知識中。現在,我在這裡待得久了,經常看到和別人技術和方法上的不同,或者發現一些自己的方式之所以不能成功的細節。

這種方法對於總是覺得:“這個人能解決這個bug一定是個天才!”的一類人,是長期最有效的。

自信和冒名頂替綜合症

Dweck關於冒名頂替綜合症的研究是非常有趣的,冒名頂替綜合症是一種總覺得自己是一個見不得人的無能騙子,可能隨時被揭穿。如果你曾經在你的職場中有過這種感覺,請舉手(80%的人會舉手)。你們很多人會這樣,我也很清楚地有過這種感覺。這種感覺太不爽了!很痛苦,而且非常不利於你的職業發展,因為如果你總在擔心失去已有的工作,你不大可能去冒險或者尋找成長的機會。

對冒名頂替綜合症的解決建議是保持信心。比如,“如果你覺得在工作中表現不合格,你應該更加自信,這樣你的狀況就會好起來”。這個建議有時就像建議你“不要有這樣的感覺”一樣草率而無用。即使這個方法的效果甚微,但是它會讓你將精力集中在自信心和過去的成就上面。

自信不能幫你應對挑戰

但是這是關鍵。Dweck的研究表明,在你應對新的挑戰的和你從挫折中恢復的時候,自信不能預測你的成功。

Henderson和Dweck對從基礎教育中學升入大學的學生做了一個研究。他們叫低年級的學生對自身的自信程度進行自我評定,同時測試了這些學生是固定型思維模式還是成長型思維模式。接著對這些學生的學習表現保持追蹤直到他們升入高年級。

他們發現,固定型思維模式的較自信的學生在學習上遭受到了挫折。對比之下,成長型思維模式的學生的學習情況更樂觀。不論他們自信程度高還是低,自信不能有效地預測成功。

現在,有很多其他調查顯示自信和成功是有關聯的。Dweck堅持認為自信可以很好地預測你做過的事情能夠做得多好,但是不能預測你對於新挑戰的反應和你對失敗的感受。

第二個相關點是,Dweck發現,成功的經歷也不能影響你對挑戰和失敗的反應。

因此過去的成功不能預測你對新的挫折和失敗的反應,你的信心水平也不能預測這些,能夠很好地預測你面對失敗的恢復能力的是成長型思維模式。

打破束縛

我接觸到的關於冒名頂替綜合症的探討很少,因此這個事情讓我感到很興奮。這給了我們一個新的更有用的方法去戰勝冒名頂替綜合症。基本上,如果你是固定型思維模式,你會感到非常有壓力,每時每刻你都對競爭充滿了恐懼。如果你有成長型思維模式,你可以享受競爭,享受去做棘手的事情。

你猜怎麼著了?當你的身份不被棘手的問題威脅到的時候,專注於問題本身還是很容易的。你不必擔心被開除,不必處在欺騙中,因此你可以輕鬆地運用資源,專注於手頭的任務。

因此再講一次:如果你相信“一些人不適合程式設計”,你需要花費大量時間和精力,費力去找到證據確認、確保你是能做到的人之一。因此要反過來顛覆這個觀點,打破傳統的天才觀,轉變為每個人都可以通過努力來增強他們的技能的觀念。

《Self-theories》:在動機、個性和發展中的作用

成長型思維模式使你面對失敗更有恢復能力,很容易去付出努力,使你更容易接受挑戰,這些都對程式設計師非常有用。

如果你想要探究這個研究中的更多細節,可以去看一些調查結果,我今天沒有時間面面俱到了,我強烈推薦一本Dweck寫的書,叫《Self-theories》是一些隨筆文集,總結了很多作者研究的要點。裡面提到了研究的細節,但是都是一些通俗易懂的內容。同時她有一本書叫《Mindset》寫給需要科普的觀眾,但是如果你想看到更細節的內容,《Self-Thieories》是更好的選擇。

問答環節

問:有關於成長型思維模式和固定型思維模式針對團隊的調研嗎?團隊是怎麼處理問題的?

答:我還沒聽說過,但是這是一個有趣的問題。我很樂意看到這樣的調研。

 

問:我讀過《Mindset》,我是一對雙胞胎女兒的父親。我發現這些方法確實可以改變她們的恢復能力和她們解決問題的方式。

答:是的,這項研究是有點可怕的。就像,你是不是告訴你的孩子他們很聰明?你這是在害她們!我沒有機會講這些,但是這本書裡有一些關於性別差異的調研,發現高目標的女孩更傾向於有固定型思維模式,在未來中她們遇到困難的時候更不願意冒險。在場的女性大概都是這樣的。

 

問:這個研究的結論是非黑即白的,還是存在一定的灰度?

答:我認為它可能是一個頻譜。這項研究可以被規為一個二元模型的類別。我也不能準確地確定在哪裡劃分。在實驗中固定型思維模式和成長型思維模式的反饋結果表明一些情況:一個人有一種思維模式,但是也有另外一種思維方式的反應,這兩種思維模式平衡在某個範圍內。

 

問:有沒有可能一個人在某些領域是固定型思維模式,另一些領域是成長型思維模式?

答:絕對有可能。在程式設計師中在程式設計中是成長型思維模式,但是在社交技能方面是固定型思維模式是很普遍的。

問(來自電腦科學講師/助教):對於我們的新生來說,有讓學生建立成長型思維模式的方法嗎?很多學校出來的學生都是固定型思維模式,這不利於我們早期的授課。

答:如果你是一個講師或者有機會站在聽眾面前,你可以明確地講:“程式設計是一個通過努力就可以做得很好的技能”,即使這聽起來沒有說服力,研究顯示它確實可以產生一些影響。

另一件特別有趣的事情是,一個關於價值的科研實驗。實驗顯示讓女性在進入一個有“成見威脅”的環境前詳細寫下她自己的價值所在,可以顯著地提高她的表現。這個基本概念是,如果你作為一個程式設計師,你的程式設計師身份受到質疑,這是非常痛苦而且艱難的。但是如果你在其他的地方能體現出自己的價值,就會減輕質疑。這個研究結果對於在技術中被邊緣化的人來說是非常激動人心的(這裡並無意中傷任何人)。詳情請看Leigh Honeywell的這個 工作表

 

問:所以這是本質上又是先天與後天的問題,對嗎?

答:我不這麼定義它,在某種程度上,我覺得這兩種思維模式都不能單獨代表一個個體。你可以很大程度地控制你的思維模式。這就是為什麼我認為從我們自身情況出發思考這些研究是非常重要的,而不僅僅是在我們的孩子或者學生身上。

 

問:在程式設計中可以想到很多方式來應用這些方法,但是你可以講講怎麼在社交場合應用這些方法嗎?

答:當然。這個研究在《Self-theories》中覆蓋到了,Dweck讓孩子們寫信申請加入筆友俱樂部(是一個真實存在的筆友俱樂部——最終會促成筆友關係)。結果所有的孩子都被筆友俱樂部拒絕了。(觀眾笑)在寫信之前,孩子們有一半被告知“這是考察你是否善於交際的時候”,另一半被告知“這是一個提高你交友能力的一次練習的機會。”被引導為固定型思維模式的孩子們的申請信有的寫的一樣,有的寫得很簡略。被引導為成長型思維模式的孩子們更喜歡寫很長的內容,為了有更多機會被關注,會說“我非常喜歡跟你聊天”,即使這是第一次寫信給筆友。(觀眾發出了同情的感嘆)正本書中,Dweck團隊都很小心不傷害到任何學生,不讓他們覺得自己不善於交友。

如果你對社交的方法感興趣,我強烈推薦你去看看Captain Awkward的部落格。Captain Awkward有一些社交挑戰的計劃,比如“我將去參加一個聚會,主動同三個人聊天,每當我成功跟一個人交談並瞭解他們的一些事情,我就獎勵自己10分。”關於應對社交焦慮網上有很多有趣的方式,不管你有沒有這方面的困惑都可以去試試。

感謝

感謝 Maggie Zhou、 Amy Hanlon、Alyssa Frazee 和Julia Evans對早前這個主題演講的反饋。

感謝Sasha Laundy,她在《關於得到和給予幫助的PyCon演講》中引導人們思考他們想要什麼,感謝她鼓勵我使用同樣的的方式。

感謝Kiwi PyCon組織成員,尤其是Marek Kuzie,為我主持。

打賞支援我翻譯更多好文章,謝謝!

打賞譯者

打賞支援我翻譯更多好文章,謝謝!

任選一種支付方式

寫給程式設計師的有效學習方法 寫給程式設計師的有效學習方法

相關文章