【書籍資訊】
軟體觀念革命--互動式設計精髓【About Face 2.0 -- The Essentials of Interaction Design】 詹健鋒,張知非【Alan Cooper, Robert Reimann】 電子工業出版社:2005
【讀書感觸】
一本讓我激動、羞愧、深思的書。就像上課坐的太靠前被XX教授噴了一頭吐沫星子——醍醐灌頂。本書作者之一,VB之父Cooper,用一種傲慢、幽默、無可辯駁的腔調,把互動式設計的精髓剖析的清晰透徹。靜心而看,或拍案叫絕,因為寫的東西正是我所需要的;或倍感羞愧,因為書中描述的種種令人髮指的錯誤我都曾犯下過;或暗自慶幸,因為很多大公司的軟體都和我們犯下了一樣的錯誤。
也許上面的描述有些誇張了。畢竟,此書是我看的第一本關於UI設計的書。大姑娘頭一回出嫁,總會覺得什麼東西都很新奇。原來,我們做UI,一看(別人的軟體)二憋(閉門造車)三拼湊(有什麼用什麼),看完這本書,感覺咱也從兵升級成為半個秀才了,不僅是動手做做,有時候也能扯上個之乎者也了。這本書不僅讓我們知道某種解決方案好不好,也讓我們更明白碰到類似的問題應該怎麼思考。所謂授人以魚不如授人以漁,一本從理論到實踐的書籍能讓你魚和漁兼得。
本書主要講述的是傳統型應用程式的UI設計,對Web開發和嵌入式開發只是少量提及。與一般設計類的書不同,書中的措辭非常的堅定。很多問題都不是用“比較好”、“可能有問題”這樣的詞,而是採用了“優秀”、“糟糕”這樣帶有強烈感情色彩的詞。雖然人家是VB之父,UI設計專家,但我們還是要帶著更多自己的思考去看,畢竟具體問題具體使用者有所不同,解決的方式也需要有所改變。前有有中國特色的社會主義,我們也不妨來一個有本程式特色的UI設計,^_^。
這本書,我不算完全仔細的閱讀了。很多感覺暫時不需要掌握的或不能理解的細節都一晃而過。我會挑著把感觸最深的內容寫下,希望能與大家共勉。如有意見,不要吝嗇你的板磚。
【目標導向設計】
本書最核心的觀點就是使用者導向設計。什麼是目標導向設計呢?直白點說,指在程式設計過程中,應該以滿足使用者使用目標為開發的驅動力,最終提供的介面應該很好的滿足使用者的目標。那,什麼是使用者的目標呢?一個比方,如果有一個人覺得天熱了想添置件過夏天的衣服。他的目標可能就是買一件舒服、涼爽、最好還能吸引PPMM眼球的上衣。為了達到這個目標他可以採取的手段可以很多,如果他有足夠的Money,他可以駕車去買件耐克的新款(不好意思,我就這點出息了。。。);如果他比較懶,他可以上網買讓人送到家裡;如果他混得比較拽,就可以大喊一聲“我要買衣服”,不一會就會有一大堆小弟小妹肩扛手拎的拿過來了。但無論利用什麼手段,最終都是為了他的買衣服目標。具體實現中所有必須去做的事情,都可以看成是任務。比如他決定上網去買,那麼逛網站、看圖片、線上支付可能就是他必須去完成的任務。
回到程式設計中,使用者對軟體的要求,只是為了滿足他的某種目標目標。比如一個搖滾愛好者,他可能希望能隨時隨刻看到Linkin Park的最新訊息。那麼為了達到他的目標,程式員可能需要建立資料庫,放出爬蟲,然後把內容顯示到他的面前。作為一個使用者,他不會關心程式員為了達到這個任務用了多少很牛的技術,費了多少功夫,他只要看輕鬆看到訊息就好。而對於程式員來說,我們常犯的錯誤,就是我們把我們所需完成的任務強行讓使用者參與或瞭解,以顯示我們的艱辛與勞苦。比如我們可能會這樣要求:請您選擇你希望將資料存放在資料庫中還是檔案中;或者向他報告我們的功績:我們從10000000個頁面中提取了你需要的3個頁面,你看我們是不是很NB。諸如此類的互動,我想很多人和我一樣都寫過的。
所有這些程式和UI設計中的問題,都需要放在目標導向設計的架構中去衡量。我們給使用者提供的互動介面,只需要提供滿足他最終目標,而不需要提供任何關於中間任務的互動。那些東西對於使用者是一種考驗,對於軟體這是一個滯銷的訊號。
【實現模型和心智模型】
也許上面的目標導向設計有些抽象,書中的另一種解析方式也許可以讓我們得到更多的理解。即從不同人的視點來看:同樣一個問題,比如檔案備份,從程式員的視角來看,所有問題展現的都是其實現模型。我們對這個問題的理解,就是該如何設定線程定期從磁碟中複製檔案,如果跨網通訊需要如何配置等等諸如此類問題的堆積。而從使用者的角度上看,他能想到的只不過每次操作錯誤的時候,開啟backup檔案夾就可以得到老的版本。他理解不了也不願意去理解其中複雜的奧妙。這就是使用者的心智模型。
換句話說,使用者能理解能想到的東西就是心智模型,具體實現的細節屬於實現模型。設計UI的關鍵在於,提供所有的互動都應該滿足使用者的心智模型,而不要暴露使用者理解不了的實現模型。比如對於一個電腦新手來說,問他希望多長時間備份一次是合適的,但問他需要用那種協議進行網路傳輸就是不合適的了。
一項功能,是滿足實現模型還是心智模型是我們確定提供一個UI介面前所必須思考的問題。
【新手、專家和中間使用者】
可能你很快就發現了問題所在。那就是使用者和使用者之間的心智模型能夠統一嗎?回到上回書,再那那個例子說事。對與一個電腦高手來說,提供網路傳輸方式或者是加密相關的內容是他們希望的,那不但能滿足他對傳輸速度和安全的要求,還能為他提供一個在心儀MM面前展示的機會。山有高低人有美醜,使用者也分個菜鳥大蝦。對於我們的軟體來說,我們是更應該收買菜鳥們的心還是籠絡大蝦們的情呢?
回答這個問題之前,需要將使用者排個名安個座次,劃分成所謂的新手、專家和中間使用者。顧名思義,新手應該是剛和某種軟體親密接觸的人,專家就是常年廝混與該軟體在一起的人,其他的,規整規整都都是中間使用者了。但其實,所謂的是新手、專家和中間使用者是從對軟體功能的使用和熟悉程度上來說的。也許很多人用Word就是打點字設個頁面打列印,其他什麼都不用,那麼哪怕20年過去了他們也不能算是高手的。
具體而言,哪一種類型的使用者會更多呢?其實,從我們每個人自己的經曆出發,能很容易理解這個問題。當我們第一次處理某件事情,我們往往是個新手,什麼也不懂什麼都需要問都需要教。但如果我們每天都需要做這件事,我們不會天天去問些相同的問題,重複做一些很基礎的步驟。就比如第一次算3+4的時候,我們掰著手指頭,一個一個數出來,那連續第二次第三次第N次呢?你還會每次都掰著手指頭點嗎?我想,如果一個心智正常的人是不願意的,他會覺得羞恥,而很快擺脫那些只屬於新手的活動。這時候,他們就成了中間使用者——永遠的中間使用者。是的,事實證明,絕大多數人都屬於並長期屬於中間使用者。很少有人來在新手層級不升級,也很少有人願意費盡心機做一些費盡心思的事情去成為專家。大部分人用某些固定簡便快速的方式,完成著類似的任務,他們安於現狀,並自得其樂。當然,也有極少數心智頗高的人,他們不怕花時間和力氣,堅持不懈努力打拚,想成為一名專家。他們不在乎成為專家的路有多麼艱險,武俠小說中不常寫,某大俠為了一本武功秘籍翻山越嶺跋山涉水受盡種種欺辱最終稱為一代宗師的事嗎?那麼他們吃這麼點苦又算的了什麼呢?
瞭解了這些,也就相當於瞭解了不同使用者的心智模型。對於一個優秀的軟體而言,我們應該充分協助每一個新手,給他們提供大量的指導和提示,讓他們迅速上手,對我們的軟體一見鐘情。但,一旦他們升級成為了中間使用者,我們就應該悄悄的撤銷那些曾經協助過他們但以後會讓他們感到恥辱的內容。讓他們以後訓斥新人的時候更理直氣壯一些,就像他們是天生就會用這個軟體一樣。當然你最好留些手段,當他們遺忘了某些功能的使用方法,想能趁著月黑風高再當回新手的時候,還能很輕易的找到那些協助過他們的內容,並可以再一次抹去痕迹...當大部分人在軟體中尋找到了他們所需的功能的時候,他們會希望能夠足夠便捷的使用,不要在回覆那些繁瑣的對話方塊,不再需要在成堆的菜單中尋尋覓覓,只需要輕敲幾下鍵盤晃動幾下滑鼠就能搞定。請記住,滿足他們,不論他們的要求有多麼的BT,你都要滿足他們。讓他們定製,讓他們按他們的需求改變軟體的原貌,因為他們是永遠的中間使用者,是你的財神爺搖錢樹大奶牛...當然,有了財神爺也不要忘了少數的專家們,也許他們有些窮酸,但他們都是金口玉言。每一個新手使用軟體之前,都可能去詢問他們的意見,如果他們說了No,那就意味著你有少了一個未來的財神爺。但他們追求的只是強大的功能和對軟體方方面面的控制力,他們不在乎這個功能是否很哪找到,是否很難配置成功,正是因為難,他們才感到驕傲,如果沒那麼兩道坎,他們會鄙視你的軟體,另尋高就的。
總而言之言而總之,做軟體應該充分考慮每一類使用者的感受。讓新人感到家一般的溫暖,讓中間使用者感到不費吹灰之力的便捷,還要讓高手們感到無與倫比的成就感。這,也許就是UI設計的終極目標了吧。