一个杰出的桌面应用程序应该同时兼顾功能的强大和形式的简单。 通过仔细平衡功能的选择和形态的展现,您可以实现强大和简洁。
理想的基于Windows的应用程序既强大又简洁。当然,您希望您的应用程序是强大的,也希望它是简洁的,但您能同时实现这两个目标吗?这两个目标之间存在着一种自然的冲突关系,但这种冲突远非不可调和。 您可以通过仔细平衡特性选择和形态展现来同时实现强大和简单。
怎样使应用“功能强大”?
就软件而言, "强大"到底意味着什么?如果一个应用程序拥有大量的特性,并且拥有广泛的功能,试图满足所有用户的所有需求,那么这个应用程序可能会被认为是强大的。但这样的设计不太可能成功,因为不以解决精准问题为目标的特性集不太可能满足任何人的需求。这不是我们所追求的强大类型。
如果一个应用程序能够正确组合这些特性,那么它就是强大的:
- 可用。应用程序满足目标用户的需求,使他们能够执行他们之前不能执行的任务,并有效地实现他们的目标。
- 高效。应用程序使用户能够以前所未有的效率和规模执行任务。
- 用途广泛。 应用程序使用户能够在各种情况下高效地执行多样化的任务。
- 直接。 应用程序给人的感觉是,它能直接帮助用户实现他们的目标,而不会妨碍用户或要求用户经历不必要的步骤。快捷键、键盘访问和宏等特性提高了直接感。
- 灵活。 应用程序允许用户对其工作进行完整、细粒度的控制。
- 综合。该应用程序与微软视窗集成良好,可以与其他应用程序共享数据。
- 先进。 该应用程序具有非凡的、创新的、最先进的特性,这些特性在竞品的解决方案中是找不到的。
其中一些特性取决于用户的感知,并与用户当前的能力相关。 用户对“强大”的感知会随着时间的推移而改变,所以今天的高级搜索功能可能明天就会变得司空见惯。
所有这些特征都可以结合到我们对强大的定义中:
当应用程序能帮助其目标用户有效地实现其全部潜力时,它就是强大的。
因此,强大的最终衡量标准是应用所能赋予的的生产力,而不是功能的数量。
不同的用户需要通过不同的方式来实现他们的全部潜力。某些用户认为便于使用的内容可能会损害其他用户的通用性、直接性和控制性。设计良好的软件必须适当地平衡这些特性。 例如,为非专业人员设计的桌面发布系统可能会使用向导窗口指导用户完成复杂的任务, 这些向导使目标用户能够执行他们在通常情况下无法执行的任务。 相比之下,面向专业人员的桌面发布系统可能侧重于直接性、效率和完全控制,对于这部分用户,向导可能会产生限制感,令人不快。
除非你能够
深入理解目标用户的目标,设计一个特性集,使他们能够有效地实现这些目标。
怎样使用户体验“简洁”?
我们这样定义“简洁”:
简洁就是减少或消除目标用户已经明确了解的和认为不必要的元素。
在实践中,通过选择正确的产品特征和以正确的方式进行视觉呈现,可以实现简洁性。这能够减少视觉元素以及感觉上的赘余。
同一应用的简洁与否也依不同用户的感知各有不同。 看看不同用户对自动变速器的简洁性的看法:
- 对于典型驾驶员(目标用户)来说,自动变速器无需手动变速和离合器,使得汽车更容易驾驶。 手动变速器和离合器对于驾驶来说可有可无,所以为了简单起见,它们被取消了。
- 对于一个职业赛车手,能直接控制变速器是必不可少的竞争力。自动变速器会对汽车的性能产生负面影响,所以只保留自动变速器的产品,不会被认为更加简洁。
- 对于机师来说,自动变速器比手动变速器更复杂,因此更难维修。 与机师不同,驾驶员幸运地不会意识到这种内部复杂性。
虽然不同的用户对自动变速器的看法不同,但它是成功的,因为它减少了对目标用户知识、技能和努力的需求。 对于一个典型的驾驶员来说,自动变速器是一个很好的特性,因为它好用易用。
简洁 vs. 易用性
正确利用好简洁性,能够产生易用性,但是简洁性和易用性是不同的概念。 当用户能够在适当的时间内,自己成功地完成一项任务而没有遇到困难或产生迷惑时,产品就达到了易用性。 实现易用性的方法有很多,简化(减少不必要的东西)只是其中之一。
所有的用户,无论目的多么复杂,都希望以最少的非必须努力完成他们的工作。 所有用户——即便是高级用户——都主要是为了完成工作而来,而不是为了深入学习计算机或你的应用程序的工作原理和逻辑。
简洁是实现易用性最有效的方法,用户会去使用拥有易用性的产品。 复杂的、难以使用的特性就是不会被用户所用。 相比之下,简单、优雅的设计能很好地实现产品的功能,使用起来是一种乐趣。它们能激发积极的情绪反应。
例如Windows XP的无线网络支持功能。微软本可以添加一个向导流程来帮助用户完成配置。这易用,但并不简洁,因为会增加加一个不必要的功能(向导过程)。 相反,微软设计使无线网络自动配置。 用户其实并不关心配置细节,只要它能安全可靠地"正常工作"即可。在无线网络配置技术中,易用性和简洁性的结合使它能快速普及、广受欢迎。
你只需
从能完成功能的最简设计元素开始你的设计过程。
如果你对目前的设计不满意,那就从去掉所有不必要的元素开始。 你会发现剩下的通常都很棒。
兼顾“简洁”和“强大”
设计原则
要做到简洁,不要依据“或许可以”的方案做设计,要根据“最大可能”的方案做设计。
或许可能
基于“或许可能”的设计决策会导致复杂的用户界面,比如设计注册表单,若假设用户的所有操作都有同样的不确定性,则所有元素都需要同等程度的设计。 正是“任何操作都是可能的”这种假设,导致设计决策中用户目标被忽略了。
最大可能
基于可能性的设计决策能指导产生简化的、基于目标和任务的解决方案,这些方案关注可能出现的任务场景,并且只需要极少的努力就可以构思完成。
简洁性设计原则
为了做到简洁,关注最可能发生的; 减少、隐藏或删除不太可能发生的; 排除不可能出现的。
“用户一定会做什么”比“用户有可能做什么”更值得设计的关注
设计技巧
为了在保持功能强大的同时保证简洁,请选择展现恰当的功能集,将功能定位在合适的位置,并降低使用难度及工作量。 本节给出一些实现这些目标的常用技术。
选择恰当的功能集
“完美,不是无法再多,而是无可减少。” ー安东尼 · 德 · 圣埃克苏佩里
下面的设计技巧能给用户提供他们需要的功能,同时通过实际元素的删减达到简洁性:
- 确定用户需要的功能特性。 通过对目标、场景和任务进行分析,了解用户的需求。 确定一组实现这些需求的功能特性。
- 删除不必要的元素。 删除那些不太可能被使用或者有更好替代方案的元素。
- 消除不必要的冗余。 可能有几种有效的方法来执行一项任务。 为了简单起见,做一个艰难的抉择,为你的目标用户选择最好的一个,而不是提供所有的方法,让用户进行选择。
- 让"运行"自动化。 元素是必要的,但是如果有用户能接受的默认动作或配置,就完全没必要让用户参与交互。 为了简洁起见,使它自动工作,形态上要么完全隐藏,要么减少它在用户前展示曝光的机会。
简化演示
“简化,即消除非必要,从而凸显必要。” ー 汉斯·霍夫曼
使用下面的设计技巧来保持功能强大感,同时通过减少或删除不必要的元素做到简洁:
- 合并应该合并的东西。 把支持同一个任务的基本功能元素放在一起,这样任务就可以在一处完成。 任务的步骤序列应该统一、顺滑。将复杂的任务分解为一组简单、清晰的步骤,这样"一个"位置可能由多个 UI 界面组成,比如功能引导。
- 分割应该分割的东西。不是所有的东西都能在一个位置展现,所以一定要清晰、精心地进行划分。凸显和集中展示支持核心场景的功能集,并隐藏或次要化可选的非主要功能。单独展示独立的任务,并给出其他相关任务的链接。 例如,处理照片的相关任务应该与管理照片集的相关任务明确分开,但它们应该彼此之间容易访问。
- 简化可以简化的东西。将你的设计打印出来,高亮显示用于执行最重要任务的元素。 甚至高亮 UI 文本中传递有用信息的单个单词。 然后审视没有高亮的部分,并考虑将其从设计中移除。 如果去掉它,会产生什么不好的后果吗? 如果没有,就去掉它!
- 一致性、可配置性和通用性通常是理想的特性,但盲目追求它们可能产生不必要的复杂性。 在一致性(比如文本冗余)、概括性(比如在两个时区的信息就足够时,展示了更多的时区信息)和可配置性(比如用户不太可能更改的选项)方面,检查是否有不恰当的过度设计,并删除可以删除的内容。
- 把元素放在正确的位置。在窗口中,元素的位置应遵循其使用逻辑。基本的控制,指示和解释都应该按操作逻辑顺序进行排布。如果需要包含更多选项,通过单击v型箭头或类似机制以展示它们; 如果需要展示更多信息,在鼠标悬停时显示一个信息提示(infotip)。将不太重要的任务、选项和帮助信息放在主流程之外的单独窗口或页面中。这种根据需要显示附加细节的方法称为渐进展示(progressive disclosure)。
- 使用有意义的高级组合。选择和操作相关元素的整个组合通常比单个元素更简单,也更灵活。 高级组合的例子包括文件夹、主题、样式(皮肤?)和用户组。这样的组合通常能直接满足用户的目标或意图操作,而这些目标或意图通过在单个元素上的操作不太能直接达到。 例如,高对比度黑色配色方案背后的意图比黑色窗口背景要明显得多。(运用整套方案比改变单个功能特性能更好并且更方便地解决用户的实际问题,这种方案即是“有意义的高级组合”)
- 选择正确的控件。设计元素由用来表示它们的控件体现,因此选择正确的控件对于有效的表达和展示是至关重要的。 例如,Microsoft Word 使用的字体选择框既显示字体的预览,也显示最近使用的字体。类似的例子,Word 显示潜在拼写和语法错误的方式比对话框方式要简单得多,如本文开头对比图所示。
省力
“简单的事情应该简单完成。复杂的事情也应该可以完成。” ー Alan Kay
以下设计技巧可以帮助用户更轻松地完成任务:
- 使任务易被发现和可见。所有任务,特别是需要频繁操作的任务,都应该在用户界面中很容易被发现。 完成任务所需的步骤应该是可见的,不应该让用户仅靠记忆完成。
- 依据用户的理解能力进行功能设计。对于复杂的软件,用户需要将他们的问题映射到技术层面上才能理解和解决,而简洁的软件则将用户对功能理解的映射设计得非常自然,明白易懂,操作起来也便捷直观。 例如,消除红眼的功能直接就能一键傻瓜式解决实际场景中的红眼问题,而不需要用户根据色调和梯度等等技术细节进行思考决策和操作来达到目的。
- 程序中应该包含所需相关领域信息。用户不用去查找额外信息,通过程序中包含的相关领域信息就应该能顺利使用它。相关领域信息可以是复杂的数据和算法,也可以是简单的告知:哪种类型的输入是有效的。
- 使用用户能够理解的文本。经过斟酌的文本对于达到有效沟通至关重要。 使用用户熟悉的概念和术语。 用通俗易懂的语言充分解释问题,以便用户能够做出明智、明确的决定。
- 使用安全保险且常用的默认值。如果某个设置具有一个在大多数情况下适用于大多数用户的值,并且该设置安全又保险,则将其作为默认值使用。 让用户只在必要时指定值。
- 合理限制。如果有很多方法可以完成一项任务,但只有一些是正确的,那么就限制用户,使其只能选择这些正确的方法。不让用户犯本可以预见和避免的错误。
简洁并不是一味简单化
"一切都应该尽可能简单,但不能总是追求更简单" - 爱因斯坦
我们认为,简洁性对于好的用户体验至关重要ーー但总有可能把一件好事做得太过。 简单的本质是减少或消除不必要的东西,而删除了必需物的则是糟糕的设计。 如果您的"简化"导致用户变得沮丧、困惑、不自信或无法成功地完成任务,那么您删除的内容就太多了。
简洁对设计来说意味着更多的努力
“我把信写得长了,是因为我没精力去把它缩短。” ー布莱斯 · 帕斯卡
保持功能强大且简洁通常需要内在的复杂性。一般来看,设计一个暴露所有技术逻辑和细节的软件要比设计一个能够隐藏这些的软件容易得多ーー后者需要你对目标用户及其目标有非常深刻的理解。移除一个功能和不去添加那些并不实用的炫酷功能一样,都需要自察自省和自我约束的觉悟。要达到简洁,需要做出艰难的设计取舍,而不是让所有东西都可配置。复杂的软件往往源于对用户的误解: 认为用户会看重实际上并不常用、以及他们所无法理解的过于复杂的功能。
强大而又简洁
强大就是让你的用户变得有能力,更有生产力。 简洁就是去除不必要的东西,用正确的方式呈现特性。通过了解您的目标用户并实现功能和表现的适当平衡,您可以设计兼顾这两者的、基于Windows的应用程序。