費曼學習法 — 分享、教學是最好的學習方式

為什麼我要免費推廣饅頭計畫呢? 這篇文章告訴你為什麼!

Photo by kazuend on Unsplash

費曼學習法 (the Feynman technique) 的靈感源於諾貝爾物理獎得主理查德費曼(Richard Feynman) ,理查德費曼創造了一種學習方法,確保他會比別人對事物瞭解的更透徹,這個學習方法的名稱就是費曼學習法

學習分為兩種:一種是聽過之後,你好像知道了這個知識是什麼。第二種是你實際使用了這個知識,你已經將學習的內容的內化了,你了解這個知識該用在什麼地方,這個知識的原理是什麼。

而教學就是很好的內化與驗證「你是不是真的懂了?」的方式,如果你不能運用自如,怎麼教別人呢?

首先我們定一個目標,目標是將新學習到的知識點傳授給一個初學者。

費曼學習法的四個步驟 :

  1. 製作教材的草稿— 假設對方是沒有任何背景知識的初學者,不要使用任何的專有名詞,把所有的邏輯交代清楚,試著打出教材的草稿,把你想表達的東西全部寫下來。
  2. 重新檢視你的教材 — 在第一步中你會發現有很多地方你解釋不出來,這可能是你還沒有把重要概念之間的關聯性搞懂。也有可能是有些地方你沒注意到原來你是不懂的。這樣的回饋是非常寶貴的,你發現了你的盲點!現在你知道自己卡在哪邊了 ,開始看原始的資料,開始 Google,直到你可以用白話的語言解釋卡住的地方。
  3. 讓你的教材讀起來直白通順 — 重新順過一次你的教學,盡量用直白的表達方式,讓所有來學習你的教材的人都夠很簡單的吸收。
  4. 實際教學— 實際把這些知識傳授給別人,你可以寫下文章,或是試著教會另外一個人。教學的過程會讓你原先已經組織好的思維出現缺口,因為你想教授的人可能從另一個角度切入。沒錯,這個過程可以啟發你更多方向的思考。用費曼學習法來理解知識,讓你更深入的理解,原因是費曼方法的原理是不斷地打破停滯型思維 ( fixed mindset),讓你的思考更深入 。 而這就是成長型思維 ( growth mindset)。

如果眼尖的話,你可能有發現我正在使用「費曼學習法」學習「費曼學習法」。效果超棒的!!

我在寫文章的同時,我試著讓大家理解費曼學習法。假設大家沒聽過費曼學習法,將每個重要觀念串聯起來,用淺白的話讓大家理解這個概念。將我的文章順過幾遍,把這個知識點傳授給大家。現在我對費曼學習法有更深的理解了。

費曼學習法與「做中學」

你想要學 GraphQL 。你上了課,你知道了 GraphQL 是做什麼用的。但如果你沒有實際的應用在專案上,那麼你的學習效果是有限的,你的理解停留在上課的投影片而沒有內化。

但是如果你學到 GraphQL,在適當的時候導入公司的系統,哪麼接下來的每一天你都必須理解 GraphQL 的用法與限制,每天你都在寫,有時候你可能遇到不會的語法需要查 API。

做中學 — 在實作中不斷累積經驗,不斷把知識內化成自己的東西。「做中學」是深度理解的捷徑。

實作的過程中,不僅僅自己要會使用,還要讓團隊的其他人也知道怎麼使用,或是讓主管理解你到底在做些什麼事情。這時候費曼學習法就派上用場了,不只是讓他人理解,同時間你也在進行更深度的學習。

饅頭計畫是 費曼學習法的實踐

饅頭計畫是我最近在推廣的活動,藉由教學與分享過程,希望能幫助到想學程式的同學。我之前寫了一篇文章叫「不管你是前端、後端,兇狠的變強吧」,分享了我的教學過程與成果。接下來我來解釋為什麼我要推廣饅頭計畫的三個原因,與饅頭計畫的目標。

不只是你在進步,我也在進步

看完費曼學習法的說明後,應該可以理解 — 教學的過程不只是你在進步,我也在進步。幫助同學解決同學想解決的問題的同時,我也在提昇自己解決問題的能力。

舉饅頭計畫第零期的例子來說,「Summernote 所見即所得編輯器」的圖片上傳機制,是我在「饅頭計畫第零期」的教學過程中所學會的新東西。

我以前有用類似的解決方案來做過「所見即所得的編輯器」,因為饅頭計畫的關係我熟悉了新的前端套件,更新了自己可以運用的武器。

技術變化很快,現在的最佳解,在兩三年後可能已經是過時、或是有缺陷的解法。持續更新、加強自己的技術能力是工程師的生存之道。

解決問題的能力是平時所解決問題經驗的累積,在日常生活中解決越多的問題,把這些問題歸納、整理成自己的思路,並進一步昇華成解決問題的架構,那麼當未來碰到從來沒遇到過的問題時,能夠應對的機會就越高。

這正好也是資深工程師必要的能力 — 在面對未知領域時,能夠在腦海中瞬間浮現多個解決方案,挑選最適合的來執行。

跳脫同溫層,接觸不一樣的人,加強軟技能

Image by Melissa Ling. © The Balance 2018

了解各種不同領域的人的思考方式。對我來說很有趣,當我可以理解不同思考模式的人在想什麼,我就能夠更容易的跟不同類型的人合作。

那麼什麼是軟技能 (soft skills) 呢?一開始我也挺不習慣這個詞的,因為在籃球比賽裡面很軟 (soft) 是個貶抑的詞。但相對於硬技能 (hard skills) 來說,的確這樣稱呼又非常的合理。

硬技能指的是你的學歷,你的打字速度,你的外語能力,你的程式能力。這些可以清楚衡量的專業能力。

軟技能又稱為非技術能力,例如:溝通能力、團隊合作能力(Team Building)、時間管理的能力、職業道德 … 等等。

一個公司或是團隊的運作,是大家齊心合力去完成一個專案,就算是再小的公司也需要組成一個團隊才能打仗。

個人能力再強,如果不能幫助隊友一起突破難關,無法把事情做好。

當你的專業水準到一定的程度後,軟技能可能會是決定你職涯發展的關鍵。好的公司會找好相處、可以對團隊產生好的影響的員工。這時候軟技能甚至可以說比硬技能重要也不為過。

了解不同程式語言生態系如何解決問題

大家眼尖的話應該有發現我使用的語言是 Ruby。寫了幾年的 Ruby 對於生態系已經挺熟悉了。藉由饅頭計畫,幫助各式各樣的同學,達成各式各樣的目標。

例如:Moo Jing 想要成為前端工程師,我得補強自身的現代化 JS 能力、與現代的 JS 框架的能力。這樣挺棒的,讓我有動機學習新的東西,有人可以討論,有人可以回饋,提昇知識吸收的深度。

學習不同語言的原因是不同語言生態系擅長解決的問題不盡相同。了解其他語言可以解決的問題,進而擴展了自己解決問題的能力。藉由推廣饅頭計畫 我有了動機去學習 Python, Nodejs, Golang … 等等的其他後端語言。

講到這邊你可能有個疑問,我現在才開始學習這些後端語言,怎麼教學?

原因是我有把握可以在短時間內學習到一個不錯的程度,後端的基礎是共通的,如果你會規劃網站、會設計資料庫,了解 Transaction 的運作原理、會處理 Slow Query、會處理 Multi Thread … 等等的常見的議題,那麼你在不同語言需要注意的地方是一樣的。剩下的只需要去熟悉語言的特性和和框架的熟悉度,勤加練習,累積實戰經驗,就可以學得不錯。

饅頭計畫的目的

我使用費曼學習法學習新的東西,那麼接受過我教學的人也可能會仿效我使用費曼學習法來學習 — 透過教學來學習不熟悉的技能,讓越來越多人願意分享自身的知識。

我試著把我會的東西交給一些想要入門寫程式的朋友,把教學過程與思路記錄下來,希望這些經驗可以帶給大家一些靈感或是啟發。如果帶給大家啟發了,大家是不是會把這些經驗記錄下來,教給其他人。如此一來就會開始產生良性循環。

最後饅頭計畫的饅頭不只是我一個,比我強的大大非常多,日後我想嘗試另一種方式來推廣饅頭計畫,我來找尋願意分享與交流的大大,跟著大大學習,把過程記錄下來,分享給大家。應該會非常的有趣😃

如果你覺得這篇文章對你有幫助,請用拍手讓我知道,我會繼續努力 。
如果你覺得這篇文章值得跟你的朋友分享,請按下 連結 分享到臉書。
如果你想繼續看到我的文章,歡迎按下 follow 來追蹤我的最新文章。

拍 10 下:簽到
拍 20 下:支持
拍 30 下:好!
拍 50 下:感謝!有你這樣的支持,我寫這篇文章值得了!

相信熱情可以逆轉人生,勇於追逐自己嚮往的事物。希望有能力讓更多人變得更好。

相信熱情可以逆轉人生,勇於追逐自己嚮往的事物。希望有能力讓更多人變得更好。