多多益善的原则

最近在看《Interaction Design -- Beyond Human-Computer Interaction》一书的时候看到里面一处说起了人们“多多益善”的心理。一些有趣的行为,自己也经常那样去干,仔细去想就能发现那样的行为其实很傻,只是却被当做“理所当然”的行为而从来没有去想过罢了。

例如在杭州大热天里蒸了一天,终于回到室内,赶紧打开空调,如果你理想的温度是 22 度,你是会直接开到 22 度还是先开到更低的温度呢?如果是我,我会选择后者,事实上,我以前就是那么干的。人们仿佛觉得这样会让温度降低得更快一点,事实上稍微思考一下空调的工作方式就会知道这样其实并没有什么效果。当然,从另一方面来说,心理作用也是不可忽视的。 :)

另一个例子,就是经常有人在安装了 Linux 之后问我,为什么 Linux 下在桌面上右键菜单没有“刷新”选项。我问他们要那个选项干嘛。他们说习惯了。 :) 就算是习惯吧,那这个习惯缘何而起呢?应当是系统无响应或者变得很慢。系统死掉的时候人们总是拼命地移动鼠标,或者是狂点刷新,感觉好像是系统睡着了,这样就能赶快把它叫醒一样。其实这样也只能加重系统的负担罢了。

但是有这样的想法也是人之常情了,不能去责怪用户。为什么用户会用拳头拍打电视机后盖?无非是电视机画面不清晰了。要避免发生这样的误解,我们需要给用户提供“易于理解的、直观的交互方式”,并及时“响应用户的输入、给出有用的反馈”。

这样的问题在 Ajax 大行其道的今天也随处可见。以往点击一个连接可以看到浏览器“正在加载”的反馈,通常还有一个漂亮的滚动条。可是现在 Ajax 请求把一切隐藏起来,从浏览器看不到它的动作。如果某个关键动作有可能会需要进行一个比较耗时的连接的话,在页面上显示一些反馈信息就显得相当重要了,否则用户会觉得不知所措或者一阵狂点了。

Comments (9)

Jack September 15, 2007
呵呵,不同意你对AJAX的见解。类似google maps还有nextlib的prefetch的确可以kill latency. 你可以看看这个 Making Magic Happen: Predicting User Behavior in AJAX applications
Jack September 15, 2007
link是 http://nextlib.lifegoo.com/user/jack/article/2182
pluskid September 15, 2007
to Jack:
一些方面可以做到,但是另外的方面呢?就 Nextlib 来说,比如,在 Popup cite 的时候没有一个进度提示来告诉用户正在获取文章信息就是一个很需要我们改进的地方,而且这种地方是无法实用 prefetch 的,因为事先不可能知道用户要取什么。事实上很多时候我都不确信我是否点击成功了,我会打开 Firebug 来查看 Ajax Request 是否发送出去了,可是我想大多数用户却是没有办法的。
Jack September 16, 2007

> opup cite 的时候没有一个进度提示来告诉用户正在获取文章信息 这是什么意思?

另外,类似wizard的东西我觉得不应该用XHR, 因为它的模式是同步的,而不是异步的,这时候ajax没有任何优势,除了界面可能"好看"一些。我说个例子吧,最开始的JavaEye ( http://javaeye.com )网站登录用了XHR, 当登录不成功的时候,login那个按钮总是disable的,这时候用户不得不重新刷新,再点击那个popup,再登录,这不是受罪么。呵呵,所以说交互设计为了什么?为了可用性。什么是可用性,就是减少操作,减少选项

pluskid September 17, 2007

> 这是什么意思? 就是说,如果网速很慢的时候,点了"Save"一点反应都没有。

你说得不错,Ajax 现在似乎正在被滥用,其实什么时候该用什么时候不该用也是需要仔细衡量的。

Jack September 17, 2007
明白你的意思了,就是Tip对吧
pluskid September 18, 2007
对,其实这个进度条的进度我们是无法知道的,但是一个回应表示“我们正在处理”是必要的。
eshock September 29, 2007
为什么呢?空调是怎么工作的?
如果空调的功率可以变化的话,它把环境温度与需求温度作差然后决定输出功率,温差大不就快些吗?
pluskid September 29, 2007
to eshock:
通常空调应该是这样工作的:升温、降温、待机三个状态,如果温度过高就降温,反之升温,直到达到指定温度就待机,过一会发现温度又变化了则取消待机再回到工作状态。简单一点就像家里的电饭煲或者饮水机一样吧。