易用性是不夠的(譯文)

阮一峰發表於2009-01-30

春節期間,我就幹了兩件事。

第一件事,是參加了若干次的親友聚會,食用了大量高熱量高脂肪食品。第二件事,就是在痛苦地翻譯More Joel on software。

痛苦來自於兩方面。首先,我的翻譯沒有按照合同約定的日期完成,心理壓力很大。其次,翻譯的難度也不小,電腦前坐4個小時,只譯出了2000字,怎麼能不痛苦呢?

我覺得,罪魁禍首就是Joel喜歡用長句,30個單詞以上的句子遍地都是。他喜歡把三四種意思,合在一句話裡說。我猜想,他滔滔不絕的自我感覺一定很好,但是留給我簡直就是心靈創傷,用中文還原他一口氣綿延不絕的語氣,真是太難了。(有興趣的朋友,可以看一看副書名的翻譯,體驗一下。)我的良心建議是,以後你寫書的時候,請一定多用短句。語言學家研究過,7個單詞以下的句子,讀者理解速度最快,單句最長一般不應超過12個單詞。

下面的文章是原書中的第15篇。

===================

易用性是不夠的

作者:Joel Spolsky

譯者:阮一峰

原文網址:http://www.joelonsoftware.com/articles/NotJustUsability.html

發表日期 2004年9月6日,星期一

好多好多年以來,許多自封的(self-fashioned)權威----比如鄙人----一直在不斷地嘮叨軟體的易用性(usability),鼓吹讓軟體變得易用是多麼多麼重要。Jakob Nielsen[1]有一個數學公式,如果你願意出122美元,他就讓你看一眼。你可以用這個公式,算出網站易用性的具體數值。(如果網站易用性的期望值大於122美元,那麼我猜你賺到了。)

我在這方面寫過一本書《程式設計師的使用者介面設計指南》(User Interface Design for Programmers, Apress, 2001),價格要便宜許多。我在書中告訴了你一些原則,關於如何設計出具備可用性的軟體。我沒用到數學,不過你的收穫肯定將超過書價。

在那本書的第31頁,我舉了一個例子,物件是當時地球上最流行的應用軟體Napster。它的主視窗採用按鈕,在5個不同的介面之間切換。介面設計有一個原則叫做"功能的可見性[2]"(affordance), 根據這個原則,就不應該使用按鈕,而真的應該使用選項頁(tab)。我以前主張的觀點就是這樣。

易用性是不夠的(譯文)

但是即便如此,Napster依然是當時地球上最流行的應用軟體。

在手稿的早期版本中,我實際上還寫過這樣的話:"這表明軟體的可用性並不是決定性因素。"在一本宣傳可用性的書中,出現這種話,其實是挺彆扭的。所以,後來當書籍印刷時,排字工人跟我說,這一段太長必須壓縮,我不由感到如釋重負,就刪除了這句話。

但是,必須承認,這件事反映出真理殘酷的一面,至少對使用者介面設計專家來說,這是殘酷的。如果一個應用程式具備真的非常重要的功能,而且使用者真的非常需要這個功能,那麼即使這個程式難用得令人感到可悲,它仍然會大受歡迎。反過來說,有一個應用程式,被做成是世界上最容易使用的東西,但是如果它對任何人都毫無用處,那麼它照樣會完蛋。使用者介面設計專家總是屬於防守方,不得不與一些很不實際的投資回報率公式對抗。那些公式告訴客戶,花75000美元進行可用性改造,到底能取得多大的回報。之所以會發生這種事,完全是因為在許多人心目中,可用性屬於可有可無的"可選項"(optional)。在許多情況下,這種看法確實說出了事實。現實中,這樣的事情比比皆是。一個使用者介面設計師,就無法幫助CNN網站多賺到一分錢。它的介面再難用,也依然會有人去訪問。我願意擔風險,在這裡斷言,世界上所有以內容為主的網站,沒有一個會單單因為可用性的改善,而多賺到哪怕一美元的收入。因為,以內容為主的網站(請注意我的言下之意,那些不以內容為主的網站依然屬於應用程式的範疇)不管再怎麼樣難用,都已經可以用了,真是太該死了。

不去管它了。

我今天真正要講的東西,不是抱怨可用性如何不被重視......事實上,在其他條件相同的情況下,可用性設計就是決定性的。有許多例子證明,惡劣的可用性設計會導致小型飛機的空難,造成人員傷亡;還導致饑荒和瘟疫,以及別的災難。但是,這不是我今天要講的東西。

我今天真正要講的東西,是關於軟體設計的下一個層次的問題,也就是當你做好使用者介面以後,你會遇到的問題----設計社會化介面(social interface)。

我想,這裡需要我來解釋一下。

上個世紀80年代,"可用性"這個概念被"發明"出來了。當時的軟體全部都是人與機器之間的互動。目前,還有許多軟體是這個樣子的。但是,網際網路的興起,帶給我們一種新的軟體,它可以實現人與人之間的互動。

論壇,社會化網路,分類廣告網站,......嗯,還有電子郵件。所有這些軟體都屬於人與人之間的中介,而不是人與機器之間的中介。

當你在編寫充當人與人中介的軟體時,做好可用性設計以後,下一步你就必須做好社會化介面的設計。而且,社會化介面比可用性設計更重要。如果社會化介面一塌糊塗,那麼就算你有世界上最好的使用者介面,你的軟體也活不了。

最好的講解社會化介面的方法,就是看一些成功的例子和失敗的例子。

幾個例項

首先,請看一個失敗的社會化介面。每個星期,都有我從未聽說過的人給我發電子郵件,邀請我加入他們所在的社會化網路。既然我不認識那個傢伙,我就感到有點不悅,直接把郵件刪除了。後來,我從別人那裡知道了這是怎麼回事。某個社會化網路軟體公司,提供一種工具,能夠自動獲取你的電子郵件地址本,然後向其中的每一個人傳送邀請加入的郵件。這個工具是第一步,第二步是有些電子郵件客戶端軟體每收到一封信,都會自動將發信人的地址儲存下來,第三步是如果你正好訂閱過"Joel談軟體"的郵件列表,你就收到過用我的郵件地址發給你的一封確認郵件,問你是不是真的想加入,這時你的Email軟體就自動把我的地址記入你的地址本。這三者加在一起,一切就這樣發生了。所有我根本不認識的人,一開啟那個社會化網路的工具軟體,它就會沒頭沒腦地向我發出一封郵件,要我確認我是這些人的朋友。謝謝你訂閱我的郵件列表,但是不要有幻想,我不會把比爾·蓋茨介紹給你認識的。我當前的政策是,不加入任何社會化網路。因為,它們給我的感覺,就是與人類關係網的真實運作方式完全格格不入。

現在,再來看一個成功的社會化介面。許多人在面對面交流時,比較膽怯和拘謹,但是如果不見面用文字交流,就比較放得開。青少年尤其如此。手機上的短訊息,使得他們更容易將對方約出來。所以,短訊息軟體在社會化方面做得如此成功,以至於極大地改善了幾百萬人的愛情生活(或者說,至少改善了他們的社交生活)。即使短訊息的使用者介面糟糕得可怕,但是它依然在孩子們中瘋狂地流行。這件事的可笑之處在於,每一臺手機上都有一個比短訊息好得多的使用者介面,專門供人與人之間的交流,這個精巧的介面叫做打電話。你撥一個號碼,然後你說的每一個字,對方都能夠聽到,他說的每一個字,你也能聽到。就是這麼簡單,可是在某些人群中,打電話就是不如操作麻煩的短訊息流行。你不停地按鍵盤,簡直把大拇指都按斷了,只為了發出一句話"天啊,你真漂亮"。為什麼你寧願按斷大拇指,都不願直接打電話說?原因是這一長串的按鍵能讓你得到一次約會,如果是直接打電話,你永遠不會有勇氣從喉嚨裡說出"天啊,你真漂亮"。

另一個社會化軟體的成功例子是eBay。當我第一次聽到eBay的時候,我說:"瞎搞!這絕對行不通。你在網上隨便遇到一個人,就把錢送給他,寄希望於那個傢伙良心未泯,會把商品寄給來。這不是太可笑了?"抱有類似看法的還有許多人。我們全都錯了,完全錯了,大錯特錯了。eBay對文化人類學意義上的人類,下了大賭注,並且賭贏了。eBay了不起的地方在於,它的巨大成功,完全是因為它的模式當時被看作根本不可行,沒有其他人來做這件事,只有eBay做了,等到它依仗著網路效應(network effect),鎖定領跑者的優勢(first-mover advantage),其他人再想追趕就晚了。

除了本身的成功和失敗,社會化軟體還有一些副效應。社會化軟體運作的方式,在很大程度上,決定了圍繞它所形成的使用者社群的型別。Usenet使用者有一個叫做"大回復"(big-R)的命令,在回覆時,可以引用別人的發言,並且在引用的每行左邊最前面加上一個簡潔的>。早期的Usenet客戶端,也就是各種新聞閱讀器(newsreader),不能列出同主題所有發言,所以如果你想針對某個人的發言做出有連貫性的回覆,你就不得不用"大回復"命令,引用原始發言。這導致了一種Usenet風格的特殊討論方式,也就是逐行駁斥(line-by-line nitpick)。這種事做起來感覺很爽,但是對他人來說,根本不值得閱讀。(順便說一句,後來在網際網路上出現了一些政治類的網誌,重新使用了這種技巧,那些作者認為這是他們發現的好玩的新做法,並取名為fisking,具體的原因我這裡就不深究了。不過不用擔心,這不是髒話。)你看,即使人類已經爭論了幾千年,但是隻因為一個軟體產品的小功能,就產生了一種全新風格的討論方式。

軟體的小變動,就能導致其所支援的(或不支援的)社會化功能的大變動。Danah Boyd對社會化網路軟體寫過一篇精彩的批評文章《自閉的社會化軟體》(Autistic Social Software,www.danah.org/papers/Supernova2004.html),抨擊當前的一些社會化網路軟體強迫使用者像自閉症患者那樣行為。

請認真審視當前的潮流,人們對於將使用者通過"朋友的朋友"關係互相連線起來的社會化網路,顯示出濃厚的興趣。這樣的網路包括Friendster、Tribe、LinkedIn、Orkut等等。它們做了一些技術嘗試,試圖將人們構建和管理自己的人際關係網的方法模式化。它們假設你能夠評判誰是你的朋友。在某幾個軟體中,它們用既定的程式指導人們結識不認識的人,它們不給你提供其他選擇,只有唯一的途徑,讓你可以結識它們提供給你結識的人。

這種方法肯定有它的優點,因為這樣一來,一切都能夠通過計算得到。但是,一想到要是人們將這類模型同社交生活等同起來,我就感到恐怖。它們太過於簡化了,人們被迫按照程式提供的模式進行交往,好像都得了自閉症一樣,好像一定就得按照預先的設計進行互動一樣。這種方法對於那些需要這類系統的人,肯定有幫助,但是它並非一個普遍適用的模型。而且,用技術來機械化地指導人際交往,到底會有怎樣的後果?我們是否真的需要一種具有自閉症傾向的人際交往呢?

如果一個軟體部署社會化介面時,不考慮文化人類學,那麼這個軟體就會難於使用,令使用者惱火,不會真正地發揮作用。

設計社會化軟體

讓我給你示範一下,如何設計社會化介面。

假定你的使用者正在做某些他們不應該做的事。

根據可用性設計的思想,這個時候,你應該告訴使用者,哪些事是不對的,以及怎樣糾正。專家為這種做法起了個專門的名稱,叫做"防禦性設計"(Defensive Design)。

如果你把這種做法照搬到社會化軟體上,那就太天真了。

舉例來說,使用者的不當行為是在一個論壇中,貼出偉哥的廣告。

你的做法是向這些使用者顯示警告資訊:"對不起,本論壇不歡迎偉哥廣告。你的帖子將被拒絕發表。"

猜猜看,那些使用者會怎麼反應?他們會換一種形式,照貼不誤。(或者他們會發動一場冗長而乏味的抗議,跟你辯論審查制度和憲法第一修正案[3]。)

根據社會化介面的工程學(social interface engineering),這時你必須考慮社會學和人類學的因素。在社會中,存在各種各樣的人,包括想佔便宜的人、搞詐騙的人、以及其他為非作歹的人。反映到社會化軟體中,就是總有人會為了自己的利益濫用軟體,而不惜損害他人的利益。如果聽任其發展,這就會導致經濟學家所稱的"公地的悲劇[4]"(the tragedy of the commons)。

使用者介面的設計目標,是幫助使用者能夠成功操作。而社會化介面的設計目標,是幫助人與人之間的社會關係能夠成功運作,即使這意味著必須要冒犯某個特定的使用者。

所以,一個優秀的社會化介面設計師這時候會說:"讓我們不要顯示錯誤資訊,假裝系統接受了使用者張貼的偉哥廣告。這樣使得張貼者感到達到了目的,就轉到其他論壇去貼廣告了。我們要做的,就是不讓他的廣告被任何其他人看到。"

說真的,避開攻擊最好的方法之一,就是讓它看上去好像獲得了成功。這是裝死戰術在軟體中的表現。

當然,這種方法不會100%有效。不過,95%的情況下,它是有效的。所以,它將你遇到的麻煩減少到二十分之一。就像社會學中的其他事情一樣,這方面沒有最優演算法,只能做到大致上的改進(fuzzy heuristic)。在很多情況下,它是有效的,所以就值得嘗試,即使不能保證肯定會成功。俄國黑手黨精心策劃的網路釣魚計劃(phishing scheme),最後會想出破解的方法。但是,住在流動房屋(trailer park)中的某些低智商的、盼望著快速致富的佛羅里達人,看到廣告帖子張貼成功,就會心滿意足地轉到下一個論壇去了。今天我收到的垃圾郵件中,90%簡陋到令人搖頭嘆息,就連Microsoft Outlook內建的那麼低階蹩腳的垃圾郵件過濾器,都能把它們攔截住。你只需要隨便湊幾個很簡單的搜尋關鍵詞,就能成功攔截這些不中用的垃圾郵件。

推廣社會化介面

幾個月前,我意識到,我們Fog Creek軟體公司開發的所有軟體,有一個共同的主題,那就是我們執著地、一心一意地要把軟體的社會化介面做好。比如,FogBugz的設計中有許多特定的功能,和更多較小的細節上的安排,使得有效追蹤軟體中的bug實際上成為可能。不斷地,有客戶告訴我,他們以前的bug追蹤系統,從來沒有被真正使用過,因為它不適合團隊開發的環境。但是,當他們改用FogBugz後,bug追蹤系統就被真正投入了使用,而且很受歡迎,它改變團隊開發中的一些做法。我知道FogBugz有效,是因為每當我們推出一個新版本,舊客戶選擇升級的百分比非常高,這表明FogBugz並不是"架上軟體[5]"(shelfware)。甚至有一些客戶,已經購買了許多張軟體使用許可證,但是還是經常回到我們這裡,購買更多的許可證,因為這個軟體在他們的組織中使用得越來越廣,越來越多的地方需要用到這個軟體。這真得令我感到非常驕傲。團隊內部使用的軟體,通常很難推廣,因為它要求團隊中的每一個人都同時改變使用習慣。如果你學過人類學,你就知道這不太可能做到。由於這個原因,FogBugz在設計時就做了很多安排,即使團隊中只有一個人使用這個軟體,它依然是有用的。同時,FogBugz的設計中還有一些有利於推廣的特性,能夠鼓勵其他使用者使用,直到團隊中每一個人都用上它為止。

在如何正確部署社會化介面這個問題上,我自己的網站上使用的論壇軟體做得更完善,我很快就會把它併入FogBugz,作為一個功能上的賣點。我的論壇軟體做了各種安排,包括特定的功能、各種細節、設計上的安排等等,加起來一共有幾十項,它們加在一起,使得我的論壇成為一個可以進行非常高水平的趣味對話的場所,在我去過的論壇中,它具有最好的訊雜比(signal-to-noise ratio)。在下一章中,我會詳細來談它。

這幾個月來,我越來越認同,良好的社會化介面設計會為我們創造更多的價值,我變得更加專注於實現這個想法。我們聘請了好幾個像Clay Shirky這樣的專家(他是這個領域的先驅),在不幸的"Joel談軟體"的論壇使用者身上進行了大膽的實驗(許多變動都很細微,實際上不會被察覺,比如在你回覆的時候,我們不向你顯示你的留言所針對的原始帖子,目的是防止出現長篇累牘的引用,影響到整個頁面的可讀性),我們還不惜耗費大量資源,採用許多高階演算法,減少論壇上的垃圾帖子。

一個新領域

社會化介面設計是一個全新的領域,還處於嬰兒期。據我所知,這方面的書籍一本也沒有出版過,只有少數幾個人做過一些相關的研究,還沒有系統的理論來指導如何設計社會化介面。回想起來,在可用性設計誕生的早期,軟體公司招募人體工程學(ergonomics)專家和心理(human factor)專家,幫助設計具備可用性的產品。人體工程學專家對辦公桌的正確高度所知甚多,但是這些人不知道如何正確設計檔案系統的圖形介面,所以一個全新的領域就這樣誕生了。漸漸地,使用者介面設計開始形成了自己的體系,確定了一些基本的概念,比如介面的協調性(consistency)、功能的可見性(affordability)、反饋性(feedback)等等。它們成為了使用者介面設計學的基石。

展望下一個十年,我期待軟體公司會僱傭受過人類學家(anthropologist)和人種學家(ethnographer)訓練的人,請他們參與社會化介面的設計。他們採用的方法,不是興建可用性實驗室,而是走向室外,開展田野調查,寫出人種調查報告(ethnography)。但願我們會找到社會化介面設計的一些原則。那一定非常迷人......就像上個世紀80年代,使用者介面設計剛剛興起時那樣有趣......所以,敬請期待(stay tuned)。

註釋:

[1] Jakob Nielsen(1957-),丹麥人,著名的網站可用性諮詢專家。

[2] Affordance指的是在設計時,必須明顯體現出設計物件的使用方法。

[3] 美國《憲法》的第一修正案保證公民享有言論自由和出版自由。

[4] "公地的悲劇"是1968年美國生態學家Garrett Hardin(1915-2003)首先提出的。他指出,在公共草地可以無償放牧,所以牧羊人一定會過度放牧,儘可能多地佔用公地的資源,因為如果他不這樣做,其他人也會這樣做,最終就會導致公地的荒蕪。在經濟學上,這特指公共資源會因為過度使用而枯竭。過度砍伐的森林、過度捕撈的漁業資源及汙染嚴重的河流和空氣,都是"公地的悲劇"的典型例子。之所以叫悲劇,是因為每個當事人都知道資源將由於過度使用而枯竭,但每個人對阻止事態的繼續惡化都感到無能為力。而且都抱著"及時撈一把"的心態加劇事態的惡化。

[5] "架上軟體"指的是不被使用的軟體,就好像一直放在貨架上一樣。

(完)

相關文章