回到笔记
思考设计

柔软的工程学

好的软件不只正确、快速、可扩展。它还应该理解人的迟疑,允许犯错,并在复杂世界里留出一点呼吸。

我们经常用很硬的词谈论软件:约束、校验、权限、失败、熔断。它们当然重要,但人使用软件时,并不会把自己想成一个等待被验证的输入。

人会迟疑,会忘记,会在深夜一点误触那个按钮。于是我开始在意另一种工程能力:让系统强壮,也让使用它的人感到安全。

正确之外,还有感受

一个表单可以在提交失败时准确地返回 400,但如果它抹掉了用户刚刚写完的两千字,那么从人的角度看,它就是彻底失败了。

[!TIP] 一个简单判断

当错误不可避免时,先保护人的劳动,再解释系统发生了什么。

这意味着自动保存、可撤销、保留上下文;也意味着错误信息里不该只有错误代码。我们要告诉人:哪里出了问题、他是否需要担心、接下来能做什么。

把余地做进系统

柔软不是没有边界。恰好相反,它需要更精确的边界设计。

  • 危险操作要慢一点,让人有机会反悔。
  • 高频操作要快一点,别让界面挡在意图前面。
  • 不确定的结果要诚实,不用一个漂亮的百分比假装笃定。
  • 空白状态不是“没有数据”,而是下一步行动的邀请。

真正成熟的产品,不会要求人永远清醒、准确、高效。它承认我们偶尔混乱,然后仍然稳稳接住。

最后

代码里的每一个分支,最后都会成为某个人经历的一小段时间。我们写的不是抽象流程,而是别人一天里的几秒钟。

如果工程最终是为人服务的,那么“舒服”就不只是视觉设计的工作。它应该从数据模型、失败策略和权限边界开始,一直延伸到按钮上的那几个字。