什么是特斯勒定律?


特斯勒定律(Tesler's Law)也称为复杂性守恒定律,或或水床理论,是人机交互中的一句格言,指出每个应用程序都有固有的复杂性,无法删除或隐藏。相反,必须在产品开发或用户交互中处理它。

在 20 世纪 80 年代中期为 Xerox PARC 工作时,Larry Tesler 意识到用户与应用程序交互的方式与应用程序本身一样重要。Dan Saffer 的 Designing for Interaction 一书包括对 Larry Tesler 的采访,该采访描述了复杂性守恒定律。

所以我们应该控制复杂性,在可能的情况下移除,并寻找最简单的可行的真理。

但是我们如何处理我们无法避免的复杂性呢?它去哪儿了?谁来承担重担?

不幸的是,在软件的历史上,答案往往是最终用户。我们软件创建者没有能力或预算来打造良好的用户体验;所以用户不得不用他们的智慧和时间来弥补。

如果存在一种我们无法消除也无法隐藏的内在复杂性,我们如何设计一种让用户感觉简单的体验?

概念压缩
答案当然是视情况而定,就像大多数困难的工程和设计问题一样。它取决于用户群的特征、系统的流程、任务上下文的可变性以及可能还有十几个其他因素。

但必须有一些通用的方法,通用的策略。DHH在 RailsConf 上做了一个主题演讲,他在会上介绍了[url=https://m.signalvnoise.com/conceptual-compression-means-beginners-dont-need-to-know-sql-hallelujah/]概念压缩[/url]的想法,这仍然是我听到的对这个问题最好的一般性回答。

用计算机构建东西意味着构建在抽象之上。CPU、1 和 0、汇编程序、C 编译器、数据库驱动程序、内存管理和一百万个其他概念是使我们的应用程序运行所必需的。但随着我们作为一个行业的进步,更少的人需要了解所有这些,感谢上帝。
改进概念压缩算法需要付出艰苦的努力,这些算法可以减轻应用程序程序员大部分时间不必担心的基础,但这是一项非常有益的工作。我们越有效地压缩昨天的概念,进入壁垒就越低。如果我们要让更多人开始制作应用程序,我们需要低门槛。

他是从开发人员的角度谈论概念压缩,但当我看到我们的设计团队创造的出色用户体验时,这种压缩的想法同样适用。

压缩复杂性
当你有一个本质上的复杂性时,你不能完全隐藏它。它不可避免地会泄漏,如果你试图完全消除基本的复杂性,你将迫使用户绕过你的系统。几年后,您会了解到团队已经开始使用电子表格来实际完成他们的工作 ,并在实际工作完成后将结果记录在您的系统中。您原本将成为创新平台的优雅系统现在只是忙碌工作的源泉。

压缩复杂性试图走一条中间道路。减少呈现给用户的复杂性,同时让那些想要或需要涉足复杂性的黑暗泥潭的人可以发现完整的未压缩视图。

目标是让用户瞥见本质的复杂性,了解他们可以选择探索一个充满选择和后果的世界,同时引导他们通过一种简单的体验,如果他们选择忽略大部分复杂性,这种体验仍然有效。

如何压缩
不过,这说起来容易做起来难。它需要对问题空间的深刻理解和对用户的深刻理解。

在没有足够理解的情况下,压缩复杂性可能会感觉类似于隐藏,并且会产生相同的负面结果。关键区别在于隐藏试图假装复杂性不存在,而压缩承认复杂性并试图为用户处理大部分复杂性。

很难将压缩复杂性的想法提炼成几个简单的技巧,但我可以分享我在 Simple Thread 上看到的工作内容:

  • 做深入了解用户和问题空间的基本工作。
  • 使用这种理解来确定关键决策点,以推动在大多数情况下为大多数 用户提供他们所需的简单体验 。
  • 承认几乎不可能有一个简单的解决方案来满足所有用户在所有情况 下的需求 。
  • 相反,以易于访问的方式构建以执行更复杂的操作并摆弄更详细的选项。
  • 在用户简单和构建实用之间寻找优雅的平衡。
  • 请注意,幕后工程或设计的不合理数量可能表明您试图过度简化 对用户至关重要的复杂性。用程序员的术语来说,您可能选择了错误的抽象。

要记住的另一件事是,为用户提供更简单的体验通常需要更复杂的幕后实现。这是一种权衡,就像在设计和工程中一样。