【不要打擾你的用戶(hù)】
用戶(hù)使用軟件,是希望通過(guò)軟件達到他需要的目標。但有時(shí)候我們會(huì )自覺(jué)不自覺(jué)的逼迫他了解一些實(shí)現細節。對于這些細節,用戶(hù)并沒(méi)有足夠的興趣,那只會(huì )打擾他們,引起他們的不解、恐慌或憤怒。
非模態(tài)反饋是一種避免打擾和驚嚇用戶(hù)的方式。當軟件系統有必要的內容需要告訴用戶(hù)的時(shí)候,非模態(tài)反饋是系統在對用戶(hù)述說(shuō),用戶(hù)只需要合適的聆聽(tīng)而不需要不停的回答。而傳統模態(tài)對話(huà)框不是這樣的,那是系統在向用戶(hù)質(zhì)問(wèn),用戶(hù)必須不厭其煩的回答,否則不允許進(jìn)行接下來(lái)的操作。見(jiàn)過(guò)最無(wú)趣的軟件就是我們學(xué)校登錄網(wǎng)絡(luò )所用的工具,噼里啪啦依次彈出五六個(gè)對話(huà)框,告訴你諸如你的IP是什么,他們網(wǎng)站是什么之類(lèi)的垃圾信息,每次你都必須也只能夠點(diǎn)一下確定。我充分的相信,它起的唯一的作用是讓你上網(wǎng)之前有一個(gè)糟糕的心情,以至于你很驚訝上網(wǎng)原來(lái)是可以調節心情的。
狀態(tài)欄信息,Loading的進(jìn)度條等等都是非模態(tài)反饋。此外點(diǎn)擊鏈接是發(fā)出嘀噠的聲響,任務(wù)完成時(shí)的輕微閃動(dòng),也都屬于非模態(tài)反饋,它們都滿(mǎn)足在不影響你正常工作的時(shí)候告訴你你可能需要的信息。
詳細講述非模態(tài)反饋前,我們需要了解一下其前身,模態(tài)的對話(huà)框。我們將傳統的對話(huà)框分成四類(lèi):屬性對話(huà)框、功能對話(huà)框、進(jìn)度對話(huà)框和公告對話(huà)框。屬性對話(huà)框向用戶(hù)提供呈現所選對象的屬性或設置,并允許用戶(hù)進(jìn)行改變,比如字體對話(huà)框;功能對話(huà)框通常從菜單打開(kāi),控制某項單個(gè)功能,比如插入圖片對話(huà)框;進(jìn)度對話(huà)框是向用戶(hù)表明程序執行某種內部功能的進(jìn)度的對話(huà)框,比如復制文件的對話(huà)框;公告對話(huà)框是系統用來(lái)告知用戶(hù)某項信息的對話(huà)框,是由系統激發(fā)而不是用戶(hù)激發(fā)的(比如前面看到的那個(gè)垃圾軟件彈出的所有對話(huà)框...)。只有設計良好的屬性對話(huà)框和功能對話(huà)框才是用戶(hù)真正需要的對話(huà)框(因為他們都是被用戶(hù)激發(fā)的),而進(jìn)度對話(huà)框在很多時(shí)候可以用非模態(tài)反饋取代,比如Gmail上面的loading提示框,它最大的優(yōu)勢在于,允許你在系統完成某項工作時(shí)正常操作并可以打斷這種執行,傳統的對話(huà)框,最多只能通過(guò)簡(jiǎn)單的取消了提供。而最后一項公告對話(huà)框是最被濫用也是最需要被用非模態(tài)反饋來(lái)滅絕的對話(huà)框類(lèi)型。想一下,我們曾今用了多少公告對話(huà)框來(lái)告訴我們的用戶(hù)“數據更新完畢”,“輸入數據類(lèi)型不匹配”之類(lèi)的信息。這些其實(shí)都可以用非模態(tài)反饋代替,從而減輕用戶(hù)的心理壓力(當你用鼠標或鍵盤(pán)操作某個(gè)軟件時(shí),它總彈出各式各樣的公告對話(huà)框,你不會(huì )覺(jué)得有點(diǎn)心驚肉跳嗎?)和操作壓力(這個(gè)不用我說(shuō)了吧,如果你感覺(jué)不到,每天上網(wǎng)前去點(diǎn)五個(gè)無(wú)聊的對話(huà)框吧)。
當然有時(shí)候你會(huì )很不屑,你覺(jué)得關(guān)閉Word文檔時(shí)彈出的那個(gè)提示保存的告示對話(huà)框就很好,它無(wú)數次拯救了粗心的你。如果沒(méi)有那個(gè)對話(huà)框,系統無(wú)論是存還是不存都可能無(wú)法滿(mǎn)足善變的你。但如果你用了Google Docs你的觀(guān)點(diǎn)可能就會(huì )有點(diǎn)改變,它采用非模態(tài)的反饋,它不會(huì )在你離開(kāi)時(shí)質(zhì)問(wèn)你一下,而是會(huì )默認保存你對文檔的修改,如果你要反悔,沒(méi)關(guān)系,你幾乎可以找到之前任意一個(gè)時(shí)間點(diǎn)的文檔。之所以這種出色的模式?jīng)]有被大多數本地文字處理軟件采用,是由于你會(huì )非常不愿意一個(gè)1M的文檔在你機器上占有了100M空間,并且其中絕大部分是不會(huì )被使用的(但如果是存放在服務(wù)器上呢?我想你一定不會(huì )介意的)。
這就是我想說(shuō)的一個(gè)關(guān)鍵問(wèn)題(下面是我的看法,請準備板磚),書(shū)上有句話(huà)說(shuō)重要的改變必須比原來(lái)的好,按我的理解,這就是說(shuō)你對界面的實(shí)現需要遵循你用戶(hù)的使用習慣,除非你十分有把握讓你的用戶(hù)感到驚喜,否則不要輕易改變原有的方式,即使它真的很爛。就像Windows把“關(guān)閉”選項放入了“開(kāi)始”的菜單,按正常人的思維這簡(jiǎn)直是不可理喻了,但多少年來(lái)所有用戶(hù)都把這種無(wú)理當成了習慣,如果MS真的要把“關(guān)閉”移出“開(kāi)始”菜單,需要好好考慮下辦公室的窗戶(hù)了。所以,我們的設計需要在我們用戶(hù)原有的使用習慣上進(jìn)行優(yōu)化,剔除掉一些讓人無(wú)法忍受的,改變一些十分繁瑣的。優(yōu)化的程度和實(shí)現的成本、開(kāi)發(fā)的進(jìn)度、用戶(hù)的特點(diǎn)、新界面的易用性都有關(guān)系。我想,這才是非童話(huà)世界中設計界面的基本前提。
【區分對待你的用戶(hù)】
除了紛繁的對話(huà)框是打擾你用戶(hù)的罪魁禍首,對不同級別用戶(hù)提供相同的交互方式也是讓你的用戶(hù)煩躁的一個(gè)重量級原因。我們需要為新手,中間用戶(hù)和專(zhuān)家提供不同的交互方式。
命令向量和工作集是兩個(gè)重要的概念。命令向量是允許用戶(hù)向程序發(fā)起指令的特殊技術(shù):菜單、工具條、快捷鍵都屬于這個(gè)范疇。仔細想象一下用菜單,和用工具條控件或快捷鍵完成同一個(gè)任務(wù)。菜單很直觀(guān),具有引導性,但操作繁瑣,需要多次點(diǎn)擊和滑動(dòng)鼠標,它屬于教學(xué)向量;工具條控件和快捷鍵操作非常簡(jiǎn)單,只需要點(diǎn)一下鼠標或鍵盤(pán),但需要熟悉或記憶,它屬于直接向量。顯然,教學(xué)向量適合新手,直接向量適合中間用戶(hù)和專(zhuān)家。一個(gè)優(yōu)秀的軟件要同時(shí)提供強大的教學(xué)向量和精確的直接向量,并且很好的區分二者,保證教學(xué)向量不會(huì )干擾到直接向量。在軟件中我們會(huì )使用很多提示的信息,比如在鼠標停留或經(jīng)過(guò)工具欄時(shí),會(huì )有Tooltip、狀態(tài)欄信息等,這些信息在中間用戶(hù)出現遺忘的時(shí)候可以起到很好的提示作用并且不會(huì )打擾到正常使用工具欄,保證了工具欄直接向量的本色。但如果你采取很大的彈出氣泡,提示對話(huà)框等手段進(jìn)行提示的時(shí)候,直接向量就演變成了教學(xué)向量(因為干擾了視覺(jué)甚至需要額外的交互),請一定要保證它只會(huì )在使用初期或用戶(hù)選擇不再顯示前,做為教學(xué)向量出現。否則,你的軟件就喪失了直接向量,也就走上了摒棄中間用戶(hù)的不歸路。
除了設計滿(mǎn)足不同需求的命令向量,還要使界面貼近用戶(hù)的工作集。所謂工作集就是指中間用戶(hù)記住了的命令和功能子集。初始的界面應該為大部分中間用戶(hù)的最小工作合集提供直接向量(比如Word文檔中的打開(kāi)、保存等都是默認就在工具欄上的,他們是幾乎每個(gè)中間用戶(hù)都會(huì )使用的功能),然而隨著(zhù)用戶(hù)的使用,不同的用戶(hù)的工作集就會(huì )出現很大的區別。比如一個(gè)天天用Word寫(xiě)詩(shī)的詩(shī)人(估計沒(méi)前途了...)只是一些基本的縮進(jìn)、字體操作就好,而一個(gè)天天用Word做報表的寫(xiě)手,肯定需要對表格制作非常熟悉。一個(gè)優(yōu)秀的軟件,應該很容易改變它所默認提供的直接向量,以匹配用戶(hù)的工作集。這種匹配可以通過(guò)用戶(hù)定制(工具欄)、自動(dòng)記憶(上次操作)等手段實(shí)現,但無(wú)論如何,需要把握好一點(diǎn),直接向量不是越多越好(教學(xué)向量?全一點(diǎn)挺好),因為他們需要用戶(hù)記憶(記快捷鍵,記工具欄圖標...),太多了就影響了操作的效率(所以把菜單中所有選項都放在工具欄上,是一個(gè)比較失敗的選擇)。直接向量的量,最好是不多不少正好滿(mǎn)足用戶(hù)工作需求。
【正確引導你的用戶(hù)】
至此,你的軟件可以很好的滿(mǎn)足用戶(hù)日常需求了,但這還不足夠好。它還需要很好的引導用戶(hù),幫助他們能夠盡可能的少犯錯誤。要做到這一點(diǎn),首先你不能夠要求用戶(hù)完成超出它們能力的操作,比如在安裝的時(shí)候要求用戶(hù)選擇用什么串口,在第一次運行程序的時(shí)候讓用戶(hù)從一堆紛繁的模版中選擇一個(gè)(書(shū)上提這點(diǎn)應該加一個(gè)前提,就是安裝和安裝完成第一次使用該軟件的人應該都是新手,而不是重新進(jìn)行安裝中間用戶(hù)或是專(zhuān)家,雖沒(méi)有做過(guò)調查,評感覺(jué)有些質(zhì)疑),這種問(wèn)題對于一個(gè)剛剛使用用戶(hù)來(lái)說(shuō)太難了,一種更好的方式是默認一種行為(連問(wèn)都不要問(wèn)),等用戶(hù)熟悉軟件后(升級成為中間用戶(hù)或專(zhuān)家)可以通過(guò)操作來(lái)更改默認的行為,這樣就可以避免他們在一無(wú)所知的時(shí)候犯下重大錯誤。
然后你還需要用豐富的信息和非模態(tài)反饋進(jìn)行提醒,同時(shí)還需要提供最為準確的交互方式。什么叫更為準確的交互方式?一個(gè)例子,當你讓用戶(hù)輸入月份的時(shí)候,使用下拉框比使用輸入框就更為準確。所有的交互設計,都應該是以避免用戶(hù)犯錯為前提,而不是以實(shí)現的簡(jiǎn)單性為前提。等用戶(hù)犯了錯誤再提示,這樣會(huì )打擊你用戶(hù)使用的信心。這一點(diǎn)說(shuō)起來(lái)容易做起來(lái)難,有時(shí)候是意識不到,有時(shí)候是嫌麻煩。但只要條件(老板+心情+工期)允許,請仔細考慮一下你提供的所有交互控件(特別是輸入控件)是否是最為準確的了,很可能你的一點(diǎn)小改進(jìn)能使用戶(hù)獲得成倍的爽感。
【原諒你的用戶(hù)】
人非圣賢孰能無(wú)過(guò),不論你使用何種方式,都可能避免不了用戶(hù)犯錯(這種錯誤不一定是程序的問(wèn)題,而是用戶(hù)使用時(shí)喝得有點(diǎn)高了)。也許你不需要為了用戶(hù)犯的所有錯誤羞愧,但如果你能及時(shí)扮演一下動(dòng)感超人之類(lèi)的偉岸角色,會(huì )使得用戶(hù)對你的軟件更為愛(ài)不釋手。
原諒的方式也有很多種,你可以更正用戶(hù)的錯誤,比如用戶(hù)輸入的內容違反了格式,你可以幫他改進(jìn)成合法格式,并偷偷的告訴他;你也可以加入提醒功能,在用戶(hù)可能是犯了錯誤的地方標識一下,比如Word的提示拼寫(xiě)錯誤功能;當然最常用的還是撤銷(xiāo)和重做功能,一個(gè)有些悖于心智模型卻紅的發(fā)紫的功能(這和LYC不一樣,它紅不是莫名的紅,而是真的有超能力...)。
但做好一個(gè)撤銷(xiāo)重做功能并不是一個(gè)簡(jiǎn)單的事。你要考慮撤銷(xiāo)和重做的深度,要考慮是在對所用操作有效還是一部分操作有效,要考慮是分部分撤銷(xiāo)還是統一撤銷(xiāo)。我見(jiàn)過(guò)最爽的,是VS2005的撤銷(xiāo)功能,不但有無(wú)限的撤銷(xiāo)深度,還以文件為單位劃分了撤銷(xiāo)重做的有效區域。曾今有次狂修改N小時(shí)代碼,結果發(fā)現大部分的修改都是不好的,很多文件都需要回到最開(kāi)始的狀態(tài)。沒(méi)有備份?沒(méi)關(guān)系,一頓Ctrl+Z之后,整個(gè)世界又回到了過(guò)去美好的時(shí)光。你讓我除了輕吻屏幕還能做什么呢?

