以用户为中心的设计 |
|||
春节期间,我就干了两件事。 第一件事,是参加了若干次的亲友聚会,食用了大量高热量高脂肪食品。第二件事,就是在痛苦地翻译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),抨击当前的一些社会化网络软件强迫用户像自闭症患者那样行为。
如果一个软件部署社会化界面时,不考虑文化人类学,那么这个软件就会难于使用,令用户恼火,不会真正地发挥作用。 设计社会化软件 让我给你示范一下,如何设计社会化界面。 假定你的用户正在做某些他们不应该做的事。 根据可用性设计的思想,这个时候,你应该告诉用户,哪些事是不对的,以及怎样纠正。专家为这种做法起了个专门的名称,叫做“防御性设计”(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] “架上软件”指的是不被使用的软件,就好像一直放在货架上一样。 (完) |