思考设计
柔软的工程学
好的软件不只正确、快速、可扩展。它还应该理解人的迟疑,允许犯错,并在复杂世界里留出一点呼吸。
我们经常用很硬的词谈论软件:约束、校验、权限、失败、熔断。它们当然重要,但人使用软件时,并不会把自己想成一个等待被验证的输入。
人会迟疑,会忘记,会在深夜一点误触那个按钮。于是我开始在意另一种工程能力:让系统强壮,也让使用它的人感到安全。
正确之外,还有感受
一个表单可以在提交失败时准确地返回 400,但如果它抹掉了用户刚刚写完的两千字,那么从人的角度看,它就是彻底失败了。
[!TIP] 一个简单判断
当错误不可避免时,先保护人的劳动,再解释系统发生了什么。
这意味着自动保存、可撤销、保留上下文;也意味着错误信息里不该只有错误代码。我们要告诉人:哪里出了问题、他是否需要担心、接下来能做什么。
把余地做进系统
柔软不是没有边界。恰好相反,它需要更精确的边界设计。
- 危险操作要慢一点,让人有机会反悔。
- 高频操作要快一点,别让界面挡在意图前面。
- 不确定的结果要诚实,不用一个漂亮的百分比假装笃定。
- 空白状态不是“没有数据”,而是下一步行动的邀请。
真正成熟的产品,不会要求人永远清醒、准确、高效。它承认我们偶尔混乱,然后仍然稳稳接住。
最后
代码里的每一个分支,最后都会成为某个人经历的一小段时间。我们写的不是抽象流程,而是别人一天里的几秒钟。
如果工程最终是为人服务的,那么“舒服”就不只是视觉设计的工作。它应该从数据模型、失败策略和权限边界开始,一直延伸到按钮上的那几个字。