软件交互设计的基本矛盾是什么?
- 易用性矛盾:软件需要从用户获得信息以便其运行,但用户不知道如何给出这些信息,之间的矛盾。
- 主导权矛盾:软件开发者试图控制用户的行为,但用户不想被控制,之间的矛盾。
- 一致性矛盾:同一软件不同版本之间的差异、同类功能软件之间的差异,和用户使用习惯之间的矛盾
解决矛盾的手段分析和展望
- 命令行
命令行交互方式,对于易用性问题的解决基本上是把责任尽量多的交给用户,只有少量的功能是带有局部提示的,譬如 Linux 的 adduser 命令一类。所以命令行都会需要用户去学习手册,心智负担非常重。为了减轻这种负担,命令行软件也使用了更多的实时交互功能,譬如按“↑”显示上一条命令,按“TAB”补全命令等等。
但是,命令行在解决主导性矛盾和一致性矛盾方面有非常好的表现。大部分命令行运行的软件,其运行细节完全遵循用户的意愿,打断式的提示交互也往往可以忽略,譬如删除文件时停下来要求用户输入 Y/N 继续。不过,命令行交互软件在主导权上的弱化,也可能是商业原因导致的,因为使用命令行的用户大部分是专业用户,他们更加看重主导权。
linux shell 脚本可以做很多事
而命令的高度一致性甚至可以规范到一门编程语言的范围内,因此大部分命令行交互软件,都可以编写脚本或者宏来构造自动化操作。高度的一致性也让其使用方法的传播变得更加方便,一个命令的写法是固定的,可以很方便的复制粘贴,也很方便记录。从使用效率上来看,是非常好的一种方式。
VSCODE 的命令面板可以执行很多操作
不过,由于软件系统的复杂性,也有一些软件在命令行的设计上,有意的打破一致性原则,以期望提供更多的灵活性,典型的例子就是 shell。当你进入不同的 shell,你的命令行使用方式也会被改变。
- GUI
GUI 解决易用性矛盾的主要手段是给提示。对于大部分了解软件功能背景,以及软件需要提示的信息不多的情况下,GUI 能提供相当好的易用性帮助。
取款机大多数人都能很快学会使用
但是当需要提示的信息太多的时候,同样会对用户的心智造成另外一种负担,这种负担在老年人身上更加明显。这就是依赖短期记忆的探索思考负担,用户要发现一个藏在多次操作后的功能,需要理解软件设计者对于这个软件的抽象想象。特别是如果软件是高度形式化的树状概念设计时,使用者往往需要大量的尝试和记忆,才能理解设计者的抽象规律。
为了避免上述困境,有些软件设计者会把尽量多的提示放到一个屏幕上,这样用户就不需要探索更多的界面。但像素的限制让文字、图标本身可能也成为理解的难题。
word 的保存为啥是一个这图标?现在这个东西还有人见到吗?
为了解决提示信息过载的问题,很多软件也会设计“向导”式交互的方法,把需要提示和收集的信息,分成多个步骤提供给用户。这和命令行的交互式操作是类似的。这个方法很有效,但也有缺点,就是容易鼓励滥用而抢夺主导权,譬如在向导中过多的展示信息而不是搜集信息;或者有意打断和加长用户的操作过程。
加了一个打断卸载的界面
GUI 在主导性矛盾上,本来可以通过一系列的规则,来让用户拥有很好的主导权。这些规则包括:
- 按照需要用户关注程度,安排面板的上下层级关系,更紧急的至于上层。尽量减少层次。
- 自动出现的面板,应该自动消失。用户操作出现的面板,让用户操作其消失。
- 提供明确的信息,表现软件当前的状态,而不是伪造状态信息
但是出于商业目的,有些软件会反其道而行之,这显然会引起用户的反感,但同样也会带来可能的商业化收益。由于 GUI 的一个核心特点是给出提示,所以提示的内容反而容易成为抢夺主导权的手段。这种主导权的抢夺不仅仅体现在广告嵌入界面的问题上,还会出现在功能按钮排布、使用流程等处。
大部分的操作系统厂商,都有对 GUI 程序进行一致性控制的动力。但是鉴于软件的复杂性,导致操作系统的通用 GUI 一致性规则往往也比较复杂,譬如层叠式窗口,可以移动和修改大小,分页面板隐藏等等,这些一致性的特性反而降低了易用性。这方面一些游戏反而由于功能单一,其易用性更好。
游戏 UI 的区域和行为往往都是固定的。不过也有很多“服务型”游戏整的和一般的 APP 一样丑恶。
一致性矛盾是 GUI 设计上最难解决的问题之一,因为你无法特别确实的预测软件的发展,更没有什么手段去规范同类软件的界面,最后还要抵抗住各种“优化”的念头以坚持一贯的风格。
对于一般的软件开发者来说,一致性矛盾的解决,往往比较简单粗暴。现在很多软件在第一次使用的时候,会通过遮蔽式教程来“教育”用户,但是这种信息一来会打断用户的使用,二来也未必记得,所以不适合传递太多信息。
- AI 软件交互界面
从很久之前开始,office 软件就出现了“回形针小助手”,苹果手机 siri 也是持续每个版本在迭代。启发式的 UI,顾问式的 UI 一直都是各种软件试图改善交互方法的手段。在这个方面,大模型自然语言 AI 的出现,为我们提供了一条新路。
Office 2007 之后就没这哥们了
在易用性矛盾上,如果能让自然语言 AI 拥有足够完整的软件功能知识库,加上语音识别和语音播放功能,是能比较好的解决 GUI 信息过载的问题的,更不需要用户去用大脑记忆或者翻阅手册。不过自然语言交互的速度上,还是会比手眼控制的触摸屏、按钮、键盘等途径稍微慢一点,对于大量重复的命令,自然语言命令的编程或者合成,是一个需要额外开发的能力,也就是构造一个个性化的自然语言 AI 知识库。
车载软件天然需要语音交互
在主导性矛盾上,同样会延续 GUI 软件的问题,使用自然语言还是图形并没有本质差别,自然语言广告播报可能更让客户反感。另外一种争夺主导权的方式可能在启发式推荐上。这种主动权从屏幕像素的争夺会变成语音时长的争夺。
一致性矛盾的解决可能是自然语言 AI 最有效的问题,因为自然语言本身就是一种规范,不说人话的软件显然不会有人用。如果自定义自然语言知识库的能力可以更有效的应用到这些软件上,一部分自动化操作需求,也能很好的被满足。
从现在青少年使用 siri 等语音界面的比例来看,很可能将来的软件 UI 会被自然语言顾问占领重要的份额。