Design
说实话,我早期的 beta 看起来像 DJ 控台。到处都是旋钮。每条 route、每种模型变体、每个 debug 参数都有开关。那时候这很合理,因为我需要测试几百种组合才能找到可行方案。
但当我开始每天自己用它时,连我都会被这些开关打断。
真正的目标
我做的所有事——model route、延迟设置、打磨选项——只有一个目的:给使用者 最顺手的那个版本。不该让人手动调参,甚至不需要让人知道这些排列组合存在。
当你看到输出时心里想“对,就是我要的那个意思”,这才是目标,也是唯一目标。
意识到这点后,我的设计原则变得很简单:能藏就藏,能封装就别打扰使用者。
构造者和使用者的认知落差
我不断撞上的,是“构造者模式”和“使用者模式”之间的认知差。
构造者本能:给出完整遥控器。所有选项、所有设置,灵活性拉满。
使用者现实:更顺的体验是内容直接出现在 feed 里,不需要先换频道再搜索。
这让我重想了很多东西。你现在看到的版本?我删了非常多。很多我曾经很骄傲的功能,后来都砍掉了。
真正有效的测试
我开始问自己两个问题,但不会立刻问。我会先等几天,让兴奋感过去,然后再看:
- 它讲得通吗?
- 我自己真的会长期用吗?
当答案变化时——而且经常变化——我会毫不犹豫地删除。
关键在于:你沉浸在构建状态时,几乎一切都看起来合理。但“做一个东西”和“用一个东西”是完全不同的视角,很难同时扮演两种人。你不可能上一秒还在 debug,下一秒就真诚地当一个不关心实现细节的使用者。
所以我给自己留了缓冲时间。这也是为什么我们的开发周期比预期长。原型很早就有了,朋友也在测试,但我们一直在打磨、一直在问:它真的有用吗?我自己会长期用吗?
吃自己做的菜
开发期间,我把 Reso 当作自己工作的脚手架来用。只要连我这个作者都觉得哪里别扭,那就是红旗。
我为什么要把我自己都不想用的东西给别人?这就像给出你自己都不相信的建议。别人问你“你真的信这个吗?”,你说不信,那后面说再多都只是噪音。
你做完一个产品后,必须问一句:我真的相信它吗?
如果你相信,你会带着笃定去表达它;如果心里其实别扭,你自己知道。
UI 也是表达
这种在“技术上可行”和“人性上自然”之间的拉扯,在我们做 Skills、Tones 这类功能时反复出现。我们一直在问:我们是在取悦自己,还是使用者真的需要它?
但好的一面是,UI 本身就是一种表达。我非常感激这个世界上的好作品,我也觉得 UI 是开发者表达“自己认为什么是美”的窗口。
UI 没有唯一“正确答案”。只有适不适合、顺不顺手、能不能给使用者安全感。
而这个标准会持续变化。我期待更多灵感、反馈和迭代。因为那个你几乎注意不到的 UI,往往才是被反复思考最多的 UI。
这不是营销,是我们自己踩过的坑。