Feb. 10 14:33~15:58
有鄉民問Teddy:「為何台灣不少軟體公司有恐design pattern症?」Teddy覺得可能是因為以下的原因:
- 學會GoF的23個Design Patterns本身就需要一點門檻。
- 學會GoF的Design Patterns之後,要能夠靈活運用在專案之中又需要一些時間的磨練。
- 能夠靈活運用GoF的Design Patterns之後,發現怎麼世界上還有各式各樣的「Design Patterns」存在,要等到哪一天才學的完啊。
***
套用pattern在軟體、架構、介面等領域的設計,已經是一種主流方法。但是「如何活用pattern」的答案,並不存在GoF的《Design Patterns》這本書裡面,而是要回到pattern的創始者:Christopher Alexander 的書中去尋找。
這個過程,依據《The Timeless Way of Building》的說法,有五個階段:
- The Timeless Way:首先必須要知道一個有形的物體或是無形的專案,唯有依循「永恆之道」才可能會完整、有生氣、持久存在。「永恆之道」是一種「流程」,它無法被求取,但只要順應它,它便會自然出現。
- The Quality:為了探求「永恆之道」,必須先了解無名特質(quality without a name,QWAN)。這種特質清楚明確,但卻無法被命名。為了定義這種特質,我們必須了解每個地方(或是專案、團隊、公司)的特徵是由不斷發生在哪裡的事件模式(patterns of events)所賦予。這些事件模式與空間中的幾何模式(geometric patterns)相連接。而組成建築、城市(專案、團隊、公司等)的特定模式可以是有活力的,也可以是死氣沉沉的。具有越多有活力的的模式,就越具有無名特質的自我維持特性。
- The Gate:為了達到無名特質,我們必須建立一個有活力的模式語言(living pattern language)作為大門。
- The Way:一旦建好了門,我們可以通過它進入到永恆之道的實踐。
- The Kernel of the Way:永恆之道並未完結,直到我們把大門(pattern language)拋在身後,才有可能徹底產生無名特質。
***
以上五個步驟有點抽象,打個比方,QWAN是一種修練的境界,到達這種境界,就可以讓所創造出來的物品(建築物、城市)達到永恆之道。就好像修練「成佛」之後,便可脫離輪迴,進入永恆之道。
但是,要怎樣才能「成佛」,很難解釋「成佛」的特質是什麼。於是我們需要佛經,來做為修練的大門(the gate)。熟念經典,並且在日常生活中實踐經典的教義,就是到達永恆之道的修練(the way)。
最後,把這些經典拋諸腦後,無招勝有招,大概就離悟道不遠了。
Alexander的想法,是藉由pattern來達到或是探求QWAN,所以他在《A Pattern Language》這本書整理了253個pattern。繼續往下追問,什麼是pattern?Pattern就是一堆force的集合,pattern的solution平衡了這些force,使得它的外在世界(context)達到某種(有活力的)特質。所以「整理pattern」本身就是一種很重要的修練,一種觀察force、體驗QWAN的修練。這也是為什麼Teddy在每一次的「Design Patterns這樣學就會了:入門實作班」都會安排將近一整天的時間,來讓學員練習撰寫pattern、尋找force、觀察solution是否平衡每一個force、resulting context又變成如何。
這種練習,從GoF的《Design Patterns》是學不到的,在台灣也很難找到人教導。
***
除了缺少整理pattern的自我練習以外,GoF的《Design Patterns》還少了一個很重要的因素,就是「它只是23個pattern的集合,並不是一個pattern language」。一個pattern解決一個小問題,要解決大的問題,需要套用一組pattern,形成一個pattern language。很可惜在GoF的書裡面,每一個pattern解釋得很清楚,但卻沒有強調pattern language的觀點,這也可能是導致很多人學完23個pattern之後,需要比較長的一段時間,才可以融會貫通的原因。
***
市面上各種各樣的pattern數量應該早就破千了,不了解Alexander原始的想法,個別去研究每一個pattern,很可能會事倍功半,更糟的可能會徒勞無功。要在短時間內入門並立即可活用pattern,最快且有效的途徑,就是請報名參加:
- 第六梯次Design Patterns這樣學就會了:入門實作班,3月8、9、15(六、日、六)。
- 第二梯次Design Patterns這樣學就會了:進階實作班,3月22、23、29(六、日、六)。
***
友藏內心獨白:為了生活,還是要打個廣告。
沒有留言:
張貼留言