在设计中呈现世界观 - Mathias Verraes


设计选择是携带设计者的世界观的。

虽然,这往往是不明显的,尤其是当设计想法是为了明显的技术改进。

让我们来看看一个虚构的创客实验室所面临的设计挑战:

在这个创客实验室里,社区里的人们可以进来制作各种东西,比如金属制品、机器人、家具、玻璃制品、3D打印、激光切割、照明、电子......实验室提供工具、机器和库存,让创客们可以在创客空间里使用。创客们应该使用手工扫描仪,在他们把设备和材料拿出来使用时扫描其上的条形码。有时,创客们可能需要几天的时间,所以他们不马上把东西放回去是正常的。或者他们可能会制作一些零件,然后储存起来供以后使用或分享。

正如在社区空间中发生的那样,东西会丢失或放错地方。你并不总是知道它是否真的丢失了,或者只是在某个地方被使用了很长一段时间。在任何情况下,这都是一个问题,管理部门决定采取一些措施。

干预
实验室的软件工程师被要求为库存应用程序添加一个新功能:它应该追踪谁是最后一个扫描物品的人。我们的想法是,如果你能查到谁是最后一个接触物品的人,你就可以向他们询问物品的下落。

这个功能很快就被投入生产,有一段时间,事情变得有点好。

但过了一段时间,情况变得更糟:物品很少被扫描,甚至根本不被扫描。

物品更频繁地丢失,并在更晚的时候出现在意想不到的地方。

最终,他们弄清楚了发生了什么:当创客找不到他们要找的物品或工具时,他们会问最后一个扫描它的人。

这导致了一些激烈的讨论,以及对偷窃的指责。

但当然,当东西丢失时,最后扫描它的人不一定是最后接触它的人。
例如,有人把一个工具留在自己的工位上,因为他们很快就会再次需要它。但后来别人想使用这个工位,就把这个工具移到了空间。或者有时一个制作者从工位上抓起工具快速使用,没有扫描它,而忘记把它放回去。

那些认真扫描了所有工具的制作者受到了所有的责备。
他们觉得自己因为努力做好工作而受到了惩罚。毕竟,这是一个业余环境,而不是NASA实验室。最终,他们也不再理会,而丢失物品的问题变得更加严重。

后果
这里发生的情况是,一个技术解决方案被实施来 "帮助 "处理一个社会问题。

社会问题往往需要比技术问题更细微的解决方案。

看似简单直接的干预措施可能会产生意想不到的后果,而这些后果可能会产生更多的后果,如此反复。要预测后果链是不可能的。

其结果是,有时,后果会产生与你预期相反的效果。

接下来会发生什么?

管理层发现跟踪不够,于是对使用物品施加了新的、更严格的规定。
一个人被派去看守库存,创客必须通过他们来获取他们需要的物品。警卫确保制造商在离开前带回材料,即使他们打算在第二天使用它。这些 "改进 "为制造商增加了更多的工作,其中大多数人已经遵守了规定,而且对他们没有明显的额外好处。他们被弄得觉得自己不被信任。渐渐地,文化衰落了,创客也不再来了。

通常在这种情况下,你永远无法真正找到原因。

另一种情况
现在让我们想象一下创客实验室的库存问题可能会出现的另一种情况。

管理层没有急于寻求技术解决方案,而是评估了实验室里人们的行为方式。

这个大系统的哪些方面和品质使创客实验室成为这样的地方?
人们喜欢来这里,而且他们中的大多数人确实在努力把东西放回原处。
有些人这样做是因为这是规则,而且他们想成为好的社区成员。
其他人则从本质上理解,通过把东西放回去,他们增加了以后找到它们的可能性。
他们从寻找物品中获得价值,而他们通过放回物品创造价值。

如果80%的人都做得很好,他们是否应该为其他20%的人受到惩罚?也许我们可以找出办法,让这80%的人增长到可以接受的95%。如果你采取这种观点,问题就会从 "我们怎样才能迫使人们做出好的行为?",变成 "我们可以消除哪些瓶颈,让剩下的人进入这种心态?"。这不仅仅是为了保护已经成功的东西,而是为了扩大它。

因此,管理层决定通过沟通预期,逐步重新设计处理库存的方式。
管理层在如何接纳新创客并欢迎他们来到实验室方面做了一些改进。
他们增加了一些标志,解释一个组织良好的实验室的价值。
他们甚至指派了一个人在东西丢失时帮助寻找,并在人们把东西放回原处时表示感谢。
这很微妙,但它的重点是奖励良好的行为,而不是强制执行。

像实验室这样的社会系统往往需要一种社会方法,而不仅仅是一种技术干预。
你要考虑整个系统,通过寻找和加强积极的行动,而不是做大的全面的改变,你可以逐渐找出更好的方法。

世界观
这些场景的核心是两种相互冲突的世界观。

在第一个例子中,管理层将创客视为没有动力的社区成员,需要强制他们采取正确的行为。
他们寻找规则和执行机制来改变行为。

在第二种情况下,管理层假设创客有内在动机去做好事并成为社区的一部分。
他们寻找方法来实现这种行为,消除任何障碍,并摆脱困境。

在某些情况下,强制实际上是正确的方法。例如,当涉及到安全性时,适当的假设是某些用户恶意地试图滥用系统。它还适用于安全和法规遵从等领域。

但许多情况并不那么明确。
当寻找解决方案时,或者当向我们提供解决方案时(如在功能请求中),我们需要揭示该解决方案背后的世界观:

  • 它是否将所有问题都视为技术问题?
  • 它是否倾向于强制而不是奖励?
  • 它是否假设用户是不愿意的参与者,或者他们有内在动机?

通过明确这些假设,我们可以更彻底地评估不同的解决方案。我们可以讨论哪种世界观最适合当前环境,以及在我们的设计中推广这种世界观可能会产生什么潜在后果,而不是仅根据其可见的方面来讨论潜在解决方案的利弊。

(选择正确的问题来解决是成为优秀软件工程师的捷径)