l

2014年6月26日 星期四

學習Pattern的兩個理由

June 20 13:04~14:50

螢幕截圖 2014-06-20 15.03.19

 

對許多軟體工程師而言,學習pattern等於學習design pattern也等於學習GoF的23個design pattern。其實pattern本身的意義比廣義的design pattern,或是狹義的GoF Design Patterns還要來的多。

Pattern作為一種溝通工具,其目的希望扮演a common ground for communication(一個共通溝通基礎),這一點也是一般鄉民比較熟悉的觀點。假設開發團隊中的成員都了解23個GoF Design Patterns,在溝通軟體設計問題的時候,就可以直接用pattern來討論。有了設計的共同語彙,不但可以增加溝通的「頻寬」,也可以減少溝通的誤會。

***

Pattern的另外一個好處,就是可以讓「外行人」(layman)快速上手某個特定的領域。例如一個不熟悉軟體測試的工程師,如果透過傳統方式來學習軟體測試,可能必須要先了解軟體測試的基本觀念,然後再寫過幾年的測試程式,從中摸索與累積經驗。這個過程少則2~3年,多則3~5年,才能略有小成。但是,如果藉由閱讀《xUnit Test Patterns: Refactoring Test Code》,從中吸取前輩們的日月精華,將可有效地縮短學習的旅程(但前提是需要看得懂用pattern格式所記錄下來的知識)。

資訊安全、測試、軟體架構、介面設計、軟體設計、分散式計算、程式撰寫等,每一個技術領域,都有人已經整理好相對應的pattern,就躺在書局等著鄉民們去幫他們「贖身」。

***

Teddy一直覺得,pattern的重要性在台灣被低估了(此為正常現象,請安心服用)。在業界可能還稍微好一點,但在學界這個現象就很明顯。2002~2003年左右,台灣政府有一個「數位學習國家型計劃」,當時Teddy正在學校念書,因為回學校念書之前在業界做了7年的e-learning工作,於是指導教授就建議,可以提一個「A Pattern Language and System for Web-Based Instruction Design」的計畫作為Teddy的研究題目。花了很多時間寫計畫書,計畫送審之後,一共收到三位評審委員的評論。這個分組一共有五份計畫書,從評審的英文評論猜測,前兩位評審應該是老外,給了這個計畫第1和第2名。第三個評審應該是台灣人,給了第4名。第三個評審的理由大意是:「計畫主持人不是教育背景出身,這種pattern方法一定會失敗」。最後計劃案就在主辦單位「全盤考慮」之下,就這樣被做掉。

雖然計劃案沒過,不過還好Teddy在指導教授的支持之下,還是持續做了三年的pattern研究。說真的當初花時間去研究Alexander的pattern理論,也不知道能夠幹什麼,有些部分也是一知半解。但現在回想起來,還好當初有投入時間研究,否則現在也很難把很多有關軟體開發與設計的問題弄得那麼清楚。

***

友藏內心獨白:有人的地方就有黑暗的一面挑眉質疑

1 則留言:

  1. 不太懂所謂的學Pattern意涵是什麼? 我自己認知的Pattern是指觀察事物,發現其中的規律,所以學Pattern是?? 找出Pattern的方法?

    回覆刪除