May 15 00:14~01:26
最近突然對「話哪要說透支,目屎就撥不離」這句話特別有感覺…今天來談個有點無聊的問題:什麼是「設計模式」(design pattern)?
話說幾個月前Teddy在網路上看到有人開了一堂「行動裝置設計模式」的課程,教導學員們設計行動裝置的使用者介面。當時Teddy就覺得課程名稱有點怪怪的,不知道有沒有鄉民們發現怪在哪裡?
怪就怪在「設計模式」這四個字,因為從軟體設計者的角度來看,「設計模式」指的是類似GoF這本書裡面所談的模式,用來解決軟體設計上的問題。而解決設計行動裝置的使用者介面的模式,Teddy覺得應該算是「人機介面模式」(HCI Pattern)或是「互動模式」(Interaction Pattern)這一類的。
鄉民甲:這不是雞蛋裡挑骨頭嗎,幹嘛分那麼細?
因為要避免誤會。當初Teddy看到「行動裝置設計模式」,一開始以為是教導「專門使用在行動裝置上面的(軟體)設計模式」,沒想到看了內容才知道是「行動裝置人機介面設計模式」,這兩者可是完全不同的領域啊。後來有一位朋友告訴Teddy,這樣的誤會,可能是以下兩個原因造成的。
誤解可能原因一
第一個原因可能是因為翻譯的問題。請看下面這本書:《Designing Mobile Interfaces》,中文書名被翻譯成《行動介面設計模式》。雖然Teddy的英文不太好,但是英文書名裡面根本沒有「Design Pattern」這兩個字啊。英文書名如果照翻成中文應該是「設計行動介面」或是「行動介面設計」。會不會是書商覺得這樣的中文書名比較不響亮,所以才翻成「行動介面設計模式」?
(書的封面照片節錄自天瓏網路書店)
話說回來,《Designing Mobile Interfaces》這本書…的封面…的確是有出現Pattern與Design這兩個字,但是原文是「Patterns for Interaction Design」(這幾個字在中文版裡面居然不見了),而不是「Interaction Design Patterns」,Teddy相信這本書的兩位作者應該是知道「Design Patterns」一般而言是用來指類似GoF的設計模式,所以不用「Interaction Design Patterns」而採用「Patterns for Interaction Design」以避免混淆。
總之,書都翻好而且也上市了,就叫做「行動介面設計模式」…你咬我啊。不過話說回來,如果中文書名能多加一個字改成「行動介面設計之模式」會不會好一點呢?
***
誤解可能原因二
第二個原因就是還真的有一本英文書的書名就叫做《Mobile Design Pattern Gallery》,中文書名叫做《行動介面設計模式圖鑑》,人家也是用「行動介面設計模式」這幾個字啊。
(書的封面照片節錄自天瓏網路書店)
Teddy個人是覺得,這本書的英文書名,真正的意思應該是Mobile Design-Pattern Gallery,換句話說,這是一本「行動介面設計之模式圖鑑」。請看一下原文書的封面,有一排字:「UI Patterns for iOS, Android and More」(這幾個字在中文版裡面居然也不見了,書商,我真的猜不透你啊)。請注意,這裡用的字是「UI Patterns」而不是「UI Design Patterns」喔,所以Teddy在公堂之上大膽假設一下,其實這本書的作者也知道「Design Pattern」和「UI Pattern」是不同的意思,只是書名取成這樣,很容易被讀成 Mobile Design Pattern-Gallery。
***
不是Teddy太無聊要寫這一篇,只是在台灣可能大部分的「設計師」(互動設計、使用者經驗、或人機介面設計師)並不是很熟悉pattern的由來與演進歷史,如果這些「設計師」要和軟體工程師溝通,大家所說的「設計模式」其實根本是指不同的東西,這樣溝通起來有溝沒有通就很辛苦了。
***
友藏內心獨白:我們都是設計師啊XD。
所以 Yahoo! Design Pattern Library 也是 Yahoo! Design + Pattern Library 嗎?
回覆刪除或者,是 Yahoo! 也不懂 design pattern 的意義呢? ;-)
(可是他們有提到 Go4 的書吔!)
請參考:
Yahoo! 公佈其 design pattern library 時的文章
http://www.yuiblog.com/blog/2006/02/13/yahoo_patterns_released/
Yahoo! Design Pattern Library
http://developer.yahoo.com/ypatterns/
謝謝你提供 Yahoo! Design Pattern Library的資料,從你提供的網址內容來看,正印證了我在文章中想要表達的看法。我在文章中有提到--->『因為從軟體設計者的角度來看,「設計模式」指的是類似GoF這本書裡面所談的模式,用來解決軟體設計上的問題。』就我所知,『Design Pattern』這個用法是首先被軟體開發領域的人所提出的(GoF的書),後來因為pattern在軟體領域非常成功,所以漸漸擴展到其他的領域,例如HCI/UI/Interaction Design/learning...etc。Teddy早些年看到與『使用者介面設計相關的pattern』,大多會以 UI/HCI patterns for XXX、Patterns for HIC Design、Patterns for Interaction Design這樣的描述方法,用來與『軟體領域的Design Pattern』區隔。
刪除有可能後來pattern在HCI/UI領域與在軟體領域一樣的成功與受歡迎,所以這些領域的人,就『預設』把『Design Pattern』想成是『UI/HCI Design Pattern』。就好像做軟體的人通常不會在Design Pattern前面加上Software一樣,HCI/UI的人自然也不會在他們自己認為的『Design Pattern』前面加上HIC/UI。結論就是,『你 (UI/HCI) 的Design Pattern,不是我 (software) 的 Design Pattern... XD』。
『所以 Yahoo! Design Pattern Library 也是 Yahoo! Design + Pattern Library 嗎?』--->沒錯,從我的觀點來看,是『Yahoo! (UI)Design + Pattern Library』,我猜寫這些pattern的人很可能是HCI/UI領域的人,所以省略了UI這個詞 。
至於Yahoo! 懂不懂原本 design pattern 對於軟體領域的人的預設意義,這我就不知道了,因為我不認識寫Yahoo! Design Pattern Library 的人啊。
最後一點,以上言論純屬『公堂之上大膽假設一下』,按照大清律例是沒有刑罰的 XD。
的確,從歷史來說,是 Go4 先用了這個詞。
回覆刪除但這詞本身很中性,我不覺得它只限於軟體開發。
Go4 大概也這麼覺得,所以他們的書叫 Design Patterns: Elements of Reusable Object-Oriented Software(不是只有 Design Patterns);他們很明確指出書裡要談的 design patterns,是 OO software 的 design patterns。
言下之意(好啦,是我幫他們想的言下之意 XD),就是其實也有很多其他的 design patterns。
另外,Yahoo! 的人懂不懂,我的連結裡面有。 ^^
裡面他們細述了 design pattern 是來自 Alexander,後來又有 Go4(你看看他們有讀過 Go4 啊啊啊),後來又有 ooxx;
所以,我的意思就是說,他們知道 Go4,但仍然認為可以用 design pattern 一詞,所以這個詞應該沒有被綁死在某個領域裡。 ^^
您的文章重點:溝通,這一部份我很同意。
只是有沒有可能,或許這個詞本來不見得只限於軟體工程呢? ^^
哦,還有,那本大公雞書裡面,也有用 design pattern 這個詞(而不是 mobile design),所以我也大膽假設,他們認為 design pattern 是可以在軟工之外用的。 XD
回覆刪除早上看到一則新聞,有人買『足爽軟膏』去治療香港腳,但是越擦越嚴重,後來才發現買錯藥,買到『足爽痔瘡軟膏』,而不是『足爽軟膏』。
刪除疑,一般人的認知『足爽』就是治療『香港腳』的藥啊,無奈因為足爽知名度太高了,所以藥廠想要利用足爽的知名度,又出了『足爽痔瘡軟膏』,因此造成鄉民們的混淆。
只要溝通上不要造成誤解就好了,寫這篇文章只是想提醒『足爽』不是只能治香港腳,還有另外一種『足爽』是用來治療痔瘡的 XD。
剛剛沒看到這句:『他們認為 design pattern 是可以在軟工之外用的。』---> design pattern(嚴格講起來應該是 Alexander 的 pattern理論)當然是可以用在其他領域,這一點我完全同意。只是因為最早,GoF從Alexander的書裡面,把 pattern 的觀念借過來用在軟體設計裡面,所以為了區隔 GoF 在 pattern 前面加上 design 這個字,變成 design pattern(為了解決 software design的問題)。你可以參考一下早些年 PLoP研討會,全名叫做 Pattern Languages of Program Design(Program Design-->程式設計),一開始投稿到這個研討會主要的 pattern 都是所謂的『 (software)design pattern』,但後來因為 pattern 廣受歡迎(這一點要感謝 GoF寫了 Design Patterns 這本書還有pattern community的前輩),所以凡是以 pattern 形式撰寫的文章,都可以投搞到 PLoP研討會(我自己也投稿過 e-learning patterns)。
刪除總之,時代在變,我相信『design pattern』的確是慢慢演變成『比較中性的詞』,但如果能在『design pattern』前面加上『應用領域』,溝通起來會比較清楚。例如,UI Design Pattern。(不過如果加上UI兩個字,其實 Design這字就應該可以省略,直接用UI Pattern就很清楚了)。
所以我個人的感受,比較是軟工的人一下子還不太習慣這個詞被用在其他地方。
刪除但是前面提到的足爽例子,有點是反過來了。
因為知道 design pattern 是指 Go4 的人,應該是社會上的少數。
例子可能要說,在某個村莊裡有個產品叫足爽,是治痔瘡的,因為用了以後「足爽」(台語),所以如此命名;
後來外地有人想說「足」爽應該可以來賣跟「腳」有關的產品,所以就做了治香港腳的足爽。
這時候村子裡的人就想,這樣大家會搞錯吧?足爽明明是治痔瘡的啊!這樣溝通會有問題啊!
但是會誤會的,說不定只有村子裡的人…
抱歉啊!開個玩笑!Teddy 兄莫怪! XD
我個人也覺得design pattern真的是很中性的詞,不太需要去限定。
回覆刪除與其說 design pattern 是很中性的詞,我覺得 pattern 還更中性一點。
刪除可是不是在比誰「最」中性呀!
刪除對於不知道 Go4 的人說,這個詞真的很中性呀!
我們不能要求大家都知道 Go4 嘛! ^^
是不能要求大家都知道 GoF,但是『Design Pattern』這個名詞好歹也是他們創的啊,『借用』過去使用的人應該要稍微區隔一下....XD。
刪除會不會是說,看到書名會誤解的,只有軟工背景且知道 GoF 的人呢?
回覆刪除也就是說,溝通上會出問題,是因為這些人太專業了,所以一下子想到自己知道的那個專門用法了呢?
也就是說,問題不是出在書商或者其他領域使用 design pattern 的人呢? :-p
同意,的確是比較有可能對軟工背景且知道 GoF 的人造成溝通誤解,我也提到過,對於 HCI/UI加上UX 領域的人,他們心中所謂的『design』就是指 介面、互動、使用者經驗這類的『design』(絕對不是物件導向軟體設計裡面提到的 design)。因此,『design pattern』自然也就是『他們心目中的 design pattern』,根本不會是做軟體的人心中的『GoF Design Pattern這一類的 pattern』。
刪除我之前和所謂的『(使用者介面)設計師』開會的時候,他們開口、閉口就稱自己是『設計師』,把軟體開發人員稱為『工程師』。當時我心裡就在想:『我也是設計師啊』,我還是『架構師』哩 XD。當跨領域交流的時候,每個人預設的 『name space』或是說 context 如果沒有說清楚,很多共用的名稱是會造成誤會的。
PS:Design Pattern至少是軟體的人先用的,所以總是要給我們一些『使用特權』,不用特別加上 Software Design Pattern吧 XD。
特權沒問題啊! :-p
刪除所以上面我說,是村子裡的人不習慣啊… XD
有點鬼打牆,不過文中已經提到了;『因為從軟體設計者的角度來看,「設計模式」指的是類似GoF這本書裡面所談的模式,用來解決軟體設計上的問題。』--->的確是因為『物件村』裡面的人不習慣...Orz.....
刪除是的,這一點您的確有說明。
刪除只是文中感覺還是有點在說其他人用的不太適當,
而我是想指出或許是反過來,也就是軟工的傳統用法有些限制住這個詞了…
可以瞭解就好啦! ^^
作者已經移除這則留言。
回覆刪除好文! (受過明明在說同一個專有名詞,理解卻不同的困擾...那溝通的時間可是燒了將近1個月...最後發現時,我潛藏已久的良知小天使才告訴我,真對不起老闆發的這一個月糧餉...(抱頭
回覆刪除如果那時候大家理解的都是同一個意思,我想1hr就能改進了...orz
回覆刪除在Alexander的書裡面提到:「Quality Without A Name」,真的是「言語無法形容,只能用心體會」。Pattern 原本是希望作為「a common ground for communication」,搞到後來變成「什麼是design pattern」都要加上 name space先釐清一下是那一個領域的「design pattern」....Orz...
刪除不過其實這是一個好現象,代表除了軟體領域還有其他領域的人也越來越接受 pattern。
Design Pattern不是本來就很中性嗎?他並不是一個專有名詞啊,不覺得有啥問題。
回覆刪除