pattern是一種整理知識的過程與結果,也是種解決問題的框架

身為泰迪軟體的員工,最大的員工福利(?)就是可以重複上Teddy的課XD。所以基本上兩年多來Design Pattern入門實作班開了幾梯次,我就聽了幾梯次(當然有時候要處理一些周邊的瑣事,也不是每次都有心思認真聽),但加上平時與Teddy的討論,直到現在對Pattern已經有越來越有更深的感受。

 

在課程中第一天固定都是介紹Pattern的內涵,來看看Alexander的Pattern到底在講什麼、有哪些元素、各有甚麼用處、要怎麼去理解一個Patterns,並且自己透過實作討論從Solution開始回頭整理出一個Pattern。以及回應最重要的問題:為什麼學Design Patterns之前一定得先理解什麼是Pattern,把時間省下來,直接講完23個GoF的Patterns內容不就好了?

還 真 的 不 行

 

因為如同Teddy常引用一句話:A Pattern is a thing and a process,意思就是說Pattern是一種整理知識的過程(Process),也是一種整理知識的結果(thing)。我們如果不明白這個知識本身被整理的脈絡、原因、限制、方式、後果,我們又怎麼能夠因地制宜在合適的時機拿出來使用呢?世界上被整理出來的並不只有GoF的Design Patterns,死背了這23個,還有千千萬萬個不同的Patterns等著你。就像數學解題一樣,不可能死背解答,因為題目會變阿,所以要先擁有解題的能力。

 

所以當透過Alexander Pattern的這六個元素-Name、Context、Force、Problem、Solution、Resulting Context,讓我們可以從不同層面去更深刻的探討同一件事情的全貌,而這樣的思考方式,更可以應用在除了軟體設計以外的其他領域。

 

這讓我想起羅輯思維有一集*的開場很有趣,他說到:

2015-06-12-12.20.24.png

「為什麼我們現代的人去讀歷史的名著、經典,有時候會覺得詰屈聱牙,完全不懂書裡面在講什麼?

可能最重要的原因其實是,身為現代人,我們已經丟失了原創者在當時面對那個真實的問題(Problem)、這本書出版時所處的背景(Context)、遭遇到的限制(Force)。

說白了,任何社會科學的名篇(Solution),本質上都是創作者用生命去回答當時人們所關切的一個大問題。這個問題(Problem)一旦被丟失,我們當然覺得那些文字(Solution)陳腐不堪、陌生不堪。

直接閱讀內容,就只是在現在的框架去試圖理解當時的事件,以至於往往難以理解。」

 

因此看一本書時,應該要試圖去問這本書到底作者要談問題(Problem)是什麼?整個環境的現況(Context)是什麼?目前遭遇了哪些限制或現象(Force)?用Patterns的角度來看,就是直接看Solution是沒有用的,無法理解甚至有時候根本是違反直覺。要去梳理Context、找出Force,最後才發現到底是平衡了哪些而得到現在這本書的結論(Solution)。

 

開始透過這樣的方式理解之後,現在我對Pattern的感覺除了整理知識的過程與結果外,更像是一種解決問題的思考框架。

 

當同一個Pattern隨著時間的演進,當每觀察到的Force越多,並提出相對應的Solution,層次就會越深,同時看問題的角度也會不同。所以不是只整理出格式,Pattern也是有好壞之分。如果沒有看出Force就直接套用Pattern,就只是Doing,Not Being/Solving。

每次學新方法,或是複習已知時,重新用這個角度去看,好像又體會多了一些什麼不同的東西。(但其實我還處於需要花更多功夫把他們連接起來的階段,都要被提醒了才會有種啊哈的恍然大悟感XD)

 

*註:羅輯思維2014 第23集 托克維爾講什麼

6/11 22:00-23:20

Erica Liu

Erica Liu

大多時間都在軟體圈打滾,這幾年漸漸體悟敏捷精神,至今仍然持續實踐不斷改善。重視人與人的交流,喜歡透過引導讓人自我啟發,工作之餘也常和社群交流與分享經驗。
Erica Liu

發表迴響