春节期间,我就干了两件事。
第一件事,是参加了若干次的亲友聚会,食用了大量高热量高脂肪食品。第二件事,就是在痛苦地翻译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] "架上软件"指的是不被使用的软件,就好像一直放在货架上一样。
(完)
相关推荐
美国著名程序员Joel Spolsky关于软件管理和技术公司管理精辟论述,读来受益匪浅,特别是其中给大学计算机系学生的建议。
Further Thoughts on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and Managers, and to Those Who, Whether by Good Fortune or Ill Luck, Work ...
《More Joel on Software》是Joel Spolsky的著作,由Apress出版社于2008年出版。这本书深入探讨了软件开发、设计与管理领域的多样性和相关问题,旨在为软件开发者、设计师、经理以及与他们合作的人士提供有价值的...
《Joel on Software》是由Joel Spolsky撰写的一本著名IT著作,主要涵盖了软件开发、团队管理、软件工程以及互联网行业的多个重要方面。这本书以其深入浅出的讲解和实战经验分享,深受程序员、项目经理和技术领导者们...
1. **软件质量**:Joel强调软件质量的重要性,主张开发人员应该关注细节,以确保产品的健壮性和易用性。他提出了“10倍程序员”理论,指出优秀的程序员可以比普通程序员更高效地编写出高质量的代码。 2. **软件工程...
《软件随想录 - More Joel on Software》是乔尔·斯波斯基(Joel Spolsky)的一本经典著作,他是一位知名的软件开发者、企业家和博客作者。这本书汇集了他在软件开发、团队管理、产品设计等多个领域的深入思考和经验...
Joel On Software 大家都知道这个东西哈。挺不错的
根据提供的文件信息,我们可以推断出这是一本关于软件开发、设计与管理的书籍,作者是Joel Spolsky。本书包含了对各种与软件开发者、设计师及管理者相关的议题的深入探讨,同时也为那些与这些专业人士合作的人提供了...
根据提供的文件内容,可以看出这是一篇关于Joel Spolsky和他的网站Joel on Software的文章,但文本中包含了大量的乱码和非中文字符,这可能是由于编码错误或原文本的特殊处理造成的。尽管如此,我们仍然可以从有限的...
### Joel_Spolsky对计算机学生的七大建议 #### 第一大建议:毕业前练好写作技巧 Joel Spolsky强调,对于计算机专业的学生而言,掌握优秀的写作技能是至关重要的。他通过举例说明了这一观点: - **Linus Torvalds*...
Joel Spolsky是一位在软件开发领域有着丰富经验的老兵,他的思想不仅对软件开发者有启发性,对于设计人员、管理人员乃至与之合作的所有人也同样具有重要意义。 #### 二、作者Joel Spolsky介绍 Joel Spolsky是业界...
根据提供的文件信息,我们可以推断出这是一本关于软件写作的书籍,名为《The Best Software Writing I》,由Joel Spolsky编辑选择并作序。虽然我们没有完整的书籍内容,但可以通过标题、描述以及部分版权页的信息来...
<script type="text/javascript" src="path/to/swfobject.js"></script> ``` 2. **准备Flash内容** 创建一个HTML元素(通常是`<div>`),作为Flash内容将要插入的位置。同时,设置一个ID以便于后续引用。 ```html...
概率方法是数学领域的一个分支,主要研究随机现象的规律性,它在统计学、经济学、生物学、计算机科学等众多学科中都有广泛的应用。而概率方法的英文版书籍,往往能提供更加严谨的数学表述和更深层次的理论探讨。 在...
软件大牛再出新书。相信第一本joel说软件 你也看了 想必收获不少 这本也不能错过