l

2021年1月8日 星期五

看懂一本書

Jan. 08 16:47~17:58


看完一本書

Teddy在北科上課的時候,經常會告訴學生利用研究所求學期間培養一種學習體驗:「把一本專業書籍從頭到尾讀完、讀懂」

對軟體開發這種知識工作者而言,學習速度就是軟體開發的瓶頸。如果在求學階段就具備「看懂一本書」的能力,畢業之後面對各種新知,學習起來也就不會覺得特別困難。即使覺得困難,也不會覺得是一件不可能的任務,因為你曾經達成過這種任務,體驗過看懂一本書的Quality Without A Name。

***

打賭

去年秋天開學的時候,Teddy問修「敏捷與精實軟體開發」課程的同學有沒有人曾經把一本專業書從頭到尾讀完的經驗?班上只有一位同學舉手。Teddy問他,你讀完的是什麼書?他說:「Clean Architecture」。

Teddy跟這位學生說:「我問你一個Clean Architecture的問題,如果你答對,這門課就直接及格,可以不用來上課。如果答錯,就退選,好不好?」

同學拒絕了。

Teddy想要測驗一下這位同學對於自己「看完一本書」的信心指數,因為Teddy所謂的「看完一本書」,是指「把這本書看懂」,不是表面上把書「看完(翻完)」而已。

***

怎麼算是把書看懂?

「看懂一本書」是一個很抽象的概念,而且看懂的層次也會隨著讀書的次數與自身體驗的增長而有所不同。Teddy有幾個自己土法煉鋼的方法:

  • Teddy在「增進學習力的三個練習」提到,可以透過了解專業名詞定義、有能力用一般人可以聽懂的比喻來解釋專業術語、看到解決方案之後,可以反推論出這個解決方案所要處理的問題是什麼(problem before solution,問題先於解決方案)這三個方法來讀書。
  • 自問自答,問自己為什麼。例如,學習Design Patterns的時候,學到Adapter設計模式,可以問自己:為什麼要用Adapter?Adapter要解決什麼問題?沒有Adapter之前的世界長什麼樣子?遇到相同問題,除了Adapter以外,還有哪些的解決方案?是什麼因素導致你選擇Adapter而不選擇其他解決方法?每問一個問題,就等於幫自己的知識累積一個層次,問題問多了,也就很難遇到可以把你問倒的人。
  • 實踐。書上很多知識,如果只是透過「腦袋中的理解力」去學習,哪只是學了一半,另一半落實(實作)能力還是要靠自己動手。建築師Alexander說:「A pattern is a process and a thing」從智力上去理解一件事,只是知道這個Thing,要動手去做,才能了解Process。特別是對於軟體開發人員而言,「知道」設計模式、單元測試、CI/CD、TDD、DDD、Clean Architecture、CQRS、微服務,但卻沒有動手做過,這樣的知道,不能算是真的知道。
  • 多看幾遍 (迭代)。好書,不是一次就可以讀完、讀懂。所以,多看幾遍,隨著自己的生活體驗不同,每次都可以看到不同的東西。

***

再續前緣

昨天Teddy在北科的課程期末考,沒想這位剛開學時說過讀完Clean Architecture的這位同學念念不忘這件事,希望Teddy下禮拜學期最後一週可以問他一個Clean Architecture的問題,他想挑戰自己的學習成果。

就如他所願,下禮拜問他一個Clean Architecture的問題。鄉民們可以預測一下,同學會不會答對呢?下周在「搞笑談軟工FB社團」公布對決結果。

***

友藏內心獨白:沒賭注就不刺激了啊XD。

1 則留言: