Sunday, December 9, 2012

「守、破、離」學習模式三階段


第一次在 Agile in a Flash 小卡上看到「守、破、離」還一頭霧水不知道在講什麼。最近因才終於了解意思,據說是出自於學習劍道的不同階段:
  • 「守」,一切盡量遵守教條,練習基本功夫直到熟練。這個階段專心學習一種實務,比學習各種理論重要。
  • 「破」,開始打破一些規範限制,可以因地制宜靈活運用。這個階段開始思考理論,也會參考看看其他門派是怎麼做的。
  • 「離」,超越所有規範的限制,自創一格,達到無招勝有招的境界。
學習軟體開發又何嘗不是如此,無論是 Scrum、TDD 或是 Design Patterns,總是得先經歷一段照章行事「盡信書」的階段,循序漸進,才能融會貫通。而不是直接進到「黑貓白貓,會抓老鼠的就是好貓」「無招勝有招」「盡信書不如無書」的階段,直接把所有規範拋開。
例如,前一陣子 Kent Beck 大師 (TDD作者和XP發明人)在 stackoverflow 回答了一題測試要測多少深,答案竟然是 “I get paid for code that works, not for tests, so my philosophy is to test as little as possible to reach a given level of confidence.” 可說是跌破眾人眼鏡 XD 但其實這種答案根本是第三階段的大師答案嘛,也就是「隨心所欲寫測試」的大師境界。如果從來沒學過寫測試,看到這句搞不好會說測試根本不重要,不需要學哩。所以搞清楚自己在哪個階段也是很重要的,當你聽到有人說「「X方法不重要,只要做的出來就好」時,要注意到大師已經練到可以隨心所欲,我們普通人還是先乖乖遵守「所有 production code 都應該要有對應的 test」培養寫測試的感覺跟經驗吧。
Reference:

No comments: