【书籍信息】
软件观念革命--交互式设计精髓【About Face 2.0 -- The Essentials of Interaction Design】 詹健锋,张知非【Alan Cooper, Robert Reimann】 电子工业出版社:2005
【读书感触】
一本让我激动、羞愧、深思的书。就像上课坐的太靠前被XX教授喷了一头吐沫星子——醍醐灌顶。本书作者之一,VB之父Cooper,用一种傲慢、幽默、无可辩驳的腔调,把交互式设计的精髓剖析的清晰透彻。静心而看,或拍案叫绝,因为写的东西正是我所需要的;或倍感羞愧,因为书中描述的种种令人发指的错误我都曾犯下过;或暗自庆幸,因为很多大公司的软件都和我们犯下了一样的错误。
也许上面的描述有些夸张了。毕竟,此书是我看的第一本关于UI设计的书。大姑娘头一回出嫁,总会觉得什么东西都很新奇。原来,我们做UI,一看(别人的软件)二憋(闭门造车)三拼凑(有什么用什么),看完这本书,感觉咱也从兵升级成为半个秀才了,不仅是动手做做,有时候也能扯上个之乎者也了。这本书不仅让我们知道某种解决方案好不好,也让我们更明白碰到类似的问题应该怎么思考。所谓授人以鱼不如授人以渔,一本从理论到实践的书籍能让你鱼和渔兼得。
本书主要讲述的是桌面应用程序的UI设计,对Web开发和嵌入式开发只是少量提及。与一般设计类的书不同,书中的措辞非常的坚定。很多问题都不是用“比较好”、“可能有问题”这样的词,而是采用了“优秀”、“糟糕”这样带有强烈感情色彩的词。虽然人家是VB之父,UI设计专家,但我们还是要带着更多自己的思考去看,毕竟具体问题具体用户有所不同,解决的方式也需要有所改变。前有有中国特色的社会主义,我们也不妨来一个有本程序特色的UI设计,^_^。
这本书,我不算完全仔细的阅读了。很多感觉暂时不需要掌握的或不能理解的细节都一晃而过。我会挑着把感触最深的内容写下,希望能与大家共勉。如有意见,不要吝啬你的板砖。
【目标导向设计】
本书最核心的观点就是用户导向设计。什么是目标导向设计呢?直白点说,指在程序设计过程中,应该以满足用户使用目标为开发的驱动力,最终提供的界面应该很好的满足用户的目标。那,什么是用户的目标呢?一个比方,如果有一个人觉得天热了想添置件过夏天的衣服。他的目标可能就是买一件舒服、凉爽、最好还能吸引PPMM眼球的上衣。为了达到这个目标他可以采取的手段可以很多,如果他有足够的Money,他可以驾车去买件耐克的新款(不好意思,我就这点出息了。。。);如果他比较懒,他可以上网买让人送到家里;如果他混得比较拽,就可以大喊一声“我要买衣服”,不一会就会有一大堆小弟小妹肩扛手拎的拿过来了。但无论利用什么手段,最终都是为了他的买衣服目标。具体实现中所有必须去做的事情,都可以看成是任务。比如他决定上网去买,那么逛网站、看图片、在线支付可能就是他必须去完成的任务。
回到程序设计中,用户对软件的要求,只是为了满足他的某种目标目标。比如一个摇滚爱好者,他可能希望能随时随刻看到Linkin Park的最新消息。那么为了达到他的目标,程序员可能需要建立数据库,放出爬虫,然后把内容显示到他的面前。作为一个用户,他不会关心程序员为了达到这个任务用了多少很牛的技术,费了多少功夫,他只要看轻松看到消息就好。而对于程序员来说,我们常犯的错误,就是我们把我们所需完成的任务强行让用户参与或了解,以显示我们的艰辛与劳苦。比如我们可能会这样要求:请您选择你希望将数据存放在数据库中还是文件中;或者向他报告我们的功绩:我们从10000000个页面中提取了你需要的3个页面,你看我们是不是很NB。诸如此类的交互,我想很多人和我一样都写过的。
所有这些程序和UI设计中的问题,都需要放在目标导向设计的框架中去衡量。我们给用户提供的交互接口,只需要提供满足他最终目标,而不需要提供任何关于中间任务的交互。那些东西对于用户是一种考验,对于软件这是一个滞销的信号。
【实现模型和心智模型】
也许上面的目标导向设计有些抽象,书中的另一种解析方式也许可以让我们得到更多的理解。即从不同人的视点来看:同样一个问题,比如文件备份,从程序员的视角来看,所有问题展现的都是其实现模型。我们对这个问题的理解,就是该如何设置线程定期从磁盘中复制文件,如果跨网通信需要如何配置等等诸如此类问题的堆积。而从用户的角度上看,他能想到的只不过每次操作错误的时候,打开backup文件夹就可以得到老的版本。他理解不了也不愿意去理解其中复杂的奥妙。这就是用户的心智模型。
换句话说,用户能理解能想到的东西就是心智模型,具体实现的细节属于实现模型。设计UI的关键在于,提供所有的交互都应该满足用户的心智模型,而不要暴露用户理解不了的实现模型。比如对于一个电脑新手来说,问他希望多长时间备份一次是合适的,但问他需要用那种协议进行网络传输就是不合适的了。
一项功能,是满足实现模型还是心智模型是我们确定提供一个UI接口前所必须思考的问题。
【新手、专家和中间用户】
可能你很快就发现了问题所在。那就是用户和用户之间的心智模型能够统一吗?回到上回书,再那那个例子说事。对与一个电脑高手来说,提供网络传输方式或者是加密相关的内容是他们希望的,那不但能满足他对传输速度和安全的要求,还能为他提供一个在心仪MM面前展示的机会。山有高低人有美丑,用户也分个菜鸟大虾。对于我们的软件来说,我们是更应该收买菜鸟们的心还是笼络大虾们的情呢?
回答这个问题之前,需要将用户排个名安个座次,划分成所谓的新手、专家和中间用户。顾名思义,新手应该是刚和某种软件亲密接触的人,专家就是常年厮混与该软件在一起的人,其他的,规整规整都都是中间用户了。但其实,所谓的是新手、专家和中间用户是从对软件功能的使用和熟悉程度上来说的。也许很多人用Word就是打点字设个页面打打印,其他什么都不用,那么哪怕20年过去了他们也不能算是高手的。
具体而言,哪一种类型的用户会更多呢?其实,从我们每个人自己的经历出发,能很容易理解这个问题。当我们第一次处理某件事情,我们往往是个新手,什么也不懂什么都需要问都需要教。但如果我们每天都需要做这件事,我们不会天天去问些相同的问题,重复做一些很基础的步骤。就比如第一次算3+4的时候,我们掰着手指头,一个一个数出来,那连续第二次第三次第N次呢?你还会每次都掰着手指头点吗?我想,如果一个心智正常的人是不愿意的,他会觉得羞耻,而很快摆脱那些只属于新手的活动。这时候,他们就成了中间用户——永远的中间用户。是的,事实证明,绝大多数人都属于并长期属于中间用户。很少有人来在新手级别不升级,也很少有人愿意费尽心机做一些费尽心思的事情去成为专家。大部分人用某些固定简便快速的方式,完成着类似的任务,他们安于现状,并自得其乐。当然,也有极少数心智颇高的人,他们不怕花时间和力气,坚持不懈努力打拼,想成为一名专家。他们不在乎成为专家的路有多么艰险,武侠小说中不常写,某大侠为了一本武功秘籍翻山越岭跋山涉水受尽种种欺辱最终称为一代宗师的事吗?那么他们吃这么点苦又算的了什么呢?
了解了这些,也就相当于了解了不同用户的心智模型。对于一个优秀的软件而言,我们应该充分帮助每一个新手,给他们提供大量的指导和提示,让他们迅速上手,对我们的软件一见钟情。但,一旦他们升级成为了中间用户,我们就应该悄悄的撤销那些曾经帮助过他们但以后会让他们感到耻辱的内容。让他们以后训斥新人的时候更理直气壮一些,就像他们是天生就会用这个软件一样。当然你最好留些手段,当他们遗忘了某些功能的使用方法,想能趁着月黑风高再当回新手的时候,还能很轻易的找到那些帮助过他们的内容,并可以再一次抹去痕迹...当大部分人在软件中寻找到了他们所需的功能的时候,他们会希望能够足够便捷的使用,不要在答复那些繁琐的对话框,不再需要在成堆的菜单中寻寻觅觅,只需要轻敲几下键盘晃动几下鼠标就能搞定。请记住,满足他们,不论他们的要求有多么的BT,你都要满足他们。让他们定制,让他们按他们的需求改变软件的原貌,因为他们是永远的中间用户,是你的财神爷摇钱树大奶牛...当然,有了财神爷也不要忘了少数的专家们,也许他们有些穷酸,但他们都是金口玉言。每一个新手使用软件之前,都可能去询问他们的意见,如果他们说了No,那就意味着你有少了一个未来的财神爷。但他们追求的只是强大的功能和对软件方方面面的控制力,他们不在乎这个功能是否很哪找到,是否很难配置成功,正是因为难,他们才感到骄傲,如果没那么两道坎,他们会鄙视你的软件,另寻高就的。
总而言之言而总之,做软件应该充分考虑每一类用户的感受。让新人感到家一般的温暖,让中间用户感到不费吹灰之力的便捷,还要让高手们感到无与伦比的成就感。这,也许就是UI设计的终极目标了吧。