易用性是不够的(译文)

作者: 阮一峰

日期: 2009年1月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] "架上软件"指的是不被使用的软件,就好像一直放在货架上一样。

(完)

QCon

腾讯课堂

留言(16条)

一直在不断地唠叨软件的可用性(usability)
-----
做软件的听到“可用性”就想起HA- High Availability
看了一下wiki
wiki翻译成易用性

新年快乐!呵呵

明天上工 再次给阮兄拜年!


No, it doesn't work 100% of the time. It works 95% of the time, and it reduces the problems you'll have twenty-fold. Like everything else in sociology, it's a fuzzy heuristic

Fuzzy Heuristic:模糊的启发式规则

阮兄对这段话的意译很准确,但是我觉得“大致上的改进”和Fuzzy Heurisitic没有对应关系,不妨去掉。

我的良心建议是,以后你写书的时候,请一定多用短句。语言学家研究过,7个单词以下的句子,读者理解速度最快,单句最长一般不应超过12个单词。
-----------------------

哈哈,也推荐他看《风格的要素》。

引用a的发言:

做软件的听到“可用性”就想起HA- High Availability
看了一下wiki
wiki翻译成易用性

谢谢指出。翻译之前,我看到“可用性”和“易用性”都有人用,我没有细想,就用了前者。

现在决定根据你的意见,全部改成“易用性”。

引用Dulei的发言:

Fuzzy Heuristic:模糊的启发式规则

阮兄对这段话的意译很准确,但是我觉得“大致上的改进”和Fuzzy Heurisitic没有对应关系,不妨去掉。

Heuristic:

1) wordnet的解释是:a commonsense rule (or set of rules) intended to increase the probability of solving some problem 。

2)wikipedia上的解释是:In computer science, a heuristic algorithm or simply a heuristic is an algorithm that gives up finding the optimal solution for an improvement in run time.

我实在想不出好的译法,就把它译成“大致上的改进”。

呵呵,他写长句是为了“炫耀”一下他的文笔好,逻辑好的呢~~

牛年好~~

有好的英文写作书推荐么?比如如何简单准确地把意思传达给读者(避免符合句和多音节单词等)...

主要是为了满足business and report writing。比如一个IT solution proposal,如何用朴实准确地语言让business迅速的明白理解,又不会太过冗余。

翻译真是个苦差事

最近也在翻东西,很糟

很受用。我大学学的社会学,虽然人类学、心理学方面学的不深,但是每次在产品设计的时候我总要结合这些相关的要素。但是市场和工程师们貌似觉得无关痛痒。所以,我在想怎么让其他团队的人也能对这种社会化界面设计有所理解和领悟,以便于项目的推进。

翻译的前提是译者必须懂得原著大部分的思想,憧憬着有一天能翻译国外最新的博弈论著作(要是以后真的走学术道路的话)。
看到阮兄最近在翻译Joel Spolsky的文章,不禁让我想起来去年在奇幻基金会的开放式课程计划(OOPS)中申领了一门MIT的课程翻译成中文,算又是一个共同点吧呵呵。

好文章,希望能读到更多。
虽然我没看过原文,但译文读起来很流畅,翻译的非常好。

翻译的不错,很生动!

如果都翻译了,不就好了

我要发表看法

«-必填

«-必填,不公开

«-我信任你,不会填写广告链接