學習的邏輯: 知識經濟學

來自http://liguanglei.name/blogs/2012/11/28/the-logic-of-learning/

1.怎麼證明學會了 ?

2.你的身價是由你表現出來的知識決定的, 不是你掌握的知識決定的



萬物有始皆有終. 我們的邏輯鏈條起源於爲什麼要持續學習, 然後是學習什麼, 怎麼證明學到了, 最後是爲什麼只學一門不夠

爲什麼要持續學習 — 知識通脹時代來臨

大家大部分都是在職的, 平時應該會存錢. 存錢最害怕什麼? 對, 通貨膨脹. 一旦央行開動印鈔機, 並大量放貸製造流動性, 我們辛苦多年的積蓄就會被迅速稀釋甚至蒸發. 然而現在有一樣東西, 正以前所未有的速度被製造出來, 這就是知識. 並且其流動性在互聯網的推動下簡直氾濫成災. 換句話講, 知識正在通貨膨脹. 過去各行各業積攢的各種知識, 各種獨門祕笈, 都大白於天下. 過去少數人才能接受大學教育, 現在哈佛,斯坦福的公開課唾手可得. 前幾天微博上剛流傳一哥們一年時間自學33們麻省理工課程. 在這種情況下, 我們現在的知識積累, 知識儲備, 會被迅速稀釋, 我們的身價也會迅速貶職. 那怎麼辦? 拿存錢來說, 一方面我們要投資保值或增值, 一方面也要不斷賺錢. 放到知識上是一樣的. 我們要不斷學習, 而我們可以投資的, 只有我們的時間. 那麼問題來了, 就像要考慮是投資股票, 黃金, 還是房地產一樣, 我們的時間應該投資在哪些知識上?

學習什麼 — 知識漏斗

回答這個問題, 牽扯到一個理論, 叫知識漏斗. 我們可以將知識分爲三個層次,代表了我們處理知識的三個階段:mystery, heuristic和algorithm。以下斜體內容摘自徐昊博客:

“mystery的知識屬於未知領域,我們甚至無法瞭解這個問題本身是什麼問題。典型的問題比如“如何成得到最好的設計”,“怎麼獲得美滿的婚姻”,甚至一些看上去不那麼難回答的問題實際上也屬於這類問題,比如“下一個客戶從哪來”,“如何讓業務增長十倍”。這類問題中的每個問題都是獨特的問題,就好像並不是所有企業都能做大十倍,而且做大過程中的方式也不一定相同。再比如對於某個項目有效的手法,對別的項目不一定適用,都是一個道理,有時候又被稱作藝術。

algorithm的知識屬於完全已知領域,在這個領域沒有複雜問題,所有的複雜性都被解決掉了。無論在何種環境下,按照algorithm來作,總能得到相同或者是可預期的結果。這類知識往往是像“如何列出磁盤目錄”,“房貸手續是怎樣的”,“在東直門哪裏能買到錢包”之類的問題。對於這類知識,你知道就是知道,不知道就是不知道。較容易通過訓練獲得,其終極形式就是寫成程序,完全不用人來作。

從mystery轉向algorithm就需要heuristic,我如何把一個未知的問題轉化爲已知的algorithm,或者我是能夠去除掉mystery中的複雜性用簡單的algorithm來解決它。或是說,你能否把藝術工程化或者流程化,去掉其中的文藝範。推理,發散,類比等等的都是這個階段需要的技能。大凡革命性的飛躍,都源自把mystery變成algorithm”

而這三種知識的學習方式和價值也是不一樣的. Algorithm最容易學習, 也最廉價, 因爲其最容易傳播和複製. 而最有價值的, 是爲某個mystery尋找的heuristic方法. 一個例子是Martin Fowler的重構. 在此之前, 如何改善既有代碼的設計, 並沒有什麼衆所周知的方法. 而Martin找到了一種啓發式的方法, 就是尋找壞味道, 然後應用一系列對應的重構手法. 這些重構手法甚至將另外一個mystery “如何安全的修改代碼” 給算法化了. Martin是我們學習的榜樣.

根據精益理論, 用問題來拉動, 會避免無意的浪費. 卡爾波普爾也說, 科學研究應該從問題而不是從資料開始. 我的同事米高陳也說停止學習, 開始創造. 所有這些都一個意思: 你應該找到一個自己感興趣的問題, 然後解決它, 在解決的過程中學習.

好, 我們知道了該學什麼, 那麼第三個問題隨之而來, 我們如何知道我們學會了?

怎麼證明學會了 — Validated Learning, 知行合一

我們無論是投資股票, 黃金, 房地產還是其它什麼, 我們總要知道是賺了還是賠了. 我們的時間投資於學習也一樣. 我這兩個小時花進去了, 我怎麼知道我花的值不值呢? 我們可以把我們前面講的TDD的思路用在這裏. 就像用測試保證產品代碼符合預期一樣, 我們也需要一種方法來驗證我們的投資是有效的, 這被稱之爲Validated Learning.

真正的Validated Learning包括拿你學到的知識真的去做事來驗證. 我們先不走那麼遠, 就簡單一點, 證明你學會了即可. 我們常用的有效的方法就是分享, 或者教給另外一個人. 你如果能把你所學到的清晰的講述給你的同學, 或者寫成博客, 或者做成培訓教程, 就可以有效的檢驗你的掌握程度. 大家可以想想, 有多少次, 你向別人講個東西, 別人一問深入了, 你就卡殼了?

所以你應該做作業, 並在課堂上分享. 即使老師不佈置作業, 你也應該自己考一下自己. 大家都經歷過無數的考試了, 我們可能覺得考試是痛苦的, 想逃避. 可是我們想象一種極端的情況, 如果從小學到高中, 我們一次試都不考, 只在高考時考一次, 你願意嗎? 這風險得多大啊? 所以考試是一種validated learning的機制, 是幫助我們的, 暴露我們知識缺陷的, 我們應該歡迎. 即使老師不考我們, 我們也應該想法自己考自己.

說到分享, 還有另外一個理由來證明你爲什麼應該分享. 大家都是知識工作者, 大家覺得自己的身價是由什麼決定的? 有人說是由掌握的知識. 這句話只對了一半, 甚至不對. 你的身價是由你表現出來的知識決定的, 不是你掌握的知識決定的. 你的老闆, 你的同事, 他們不可能知道你都看了啥想了啥學到了啥, 他們只能看到你說了啥做了啥. 我們講面向對象, 我們只能通過public接口來訪問一個對象. 我們就是個黑盒, 別人只能通過我們的行爲來判斷我們. 換句話講, 如果你學了某些知識, 但行爲沒有任何變化, 那跟沒學是一樣的. 所謂知行合一. 在這一點上, Martin Fowler也是我們的榜樣.

那我們學會了並分享了是否就可以高枕無憂了? 現在我們來證明你學一樣還不夠, 要學多樣.

爲何只學一門不夠 — 知識工作者的分工

之前課下有人問, 老師我是做測試的, 你們講的編程的技巧, 我需要學習嗎? 這是很好的問題, 它牽扯到知識工作者的分工. 我們在生活中, 隨時都會享受到分工的好處, 比如不需要自己種地養牛,不需要自己搬磚建樓, 這一切都拜分工所賜. 分工是一種已經被證明行之有效的科學方法, 可以極大的提高效率. 但這一切都有個前提, 就是你可以直接應用別人的工作產物, 而不需要跟這個人交互, 也不需要關心產物是如何產生的. 比如你可以直接喝牛奶而不需要關心牛奶是如何製造的, 當然在兲朝你可能得關心一下. 但在軟件開發中, 或者在一切知識工作中, 這個前提不復存在了.

有多少次, 你可以直接基於客戶的標書工作, 而不需要跟客戶交流? 有多少次, 你可以直接根據需求文檔編碼, 而不需要跟需求分析人員交流? 有多少次, 你可以直接根據架構師的設計編碼, 而不需要跟架構師交流? 有多少次, 你可以直接根據需求去測試產品, 而不需要跟需求人員和開發人員交流? 沒有. 如果我們據此來分工, 那麼我們不得不通過其它的實踐來加強溝通, 來彌補溝通中的信息損失. 而如果一個人從頭到尾包辦所有的事情, 分析設計編碼測試, 則沒有任何信息轉移和丟失造成的效率損失.

換言之, 在傳統行業中, 分工是一種優化, 不到萬不得已, 你不需要自己去搞定所有的事情; 而在知識工作中, 分工是一種妥協, 除非你一個人搞不定了, 你才需要分工.

現在的企業都看重polyskill的人, 從這個角度, 雖然某個時刻你會focus在某個方面, 但我們應該學習軟件開發中方方面面的知識. 不要侷限在自己現在的角色裏.

參考資料

以上是在北航一級實踐課程上的說教, 大部分內容來自徐八叉不同時期的session, 其中隱含着一條邏輯主線, 在向學生說明爲什麼應該做作業時無意中發現的.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章