这几年"设计系统"这个词在国内设计圈越来越火了。大大小小的团队都在做自己的设计系统,但说实话,真正把设计系统用好了的团队并不多。
很多团队做设计系统的初衷是"统一视觉风格",这个出发点没问题。但以我自己的经验来看,设计系统真正的价值远不止于此。它应该是团队协作效率的基础设施,而不仅仅是一套UI组件。
先来看看没有设计系统的时候团队是什么状态:设计师各自用自己习惯的组件画图,一个页面里同一种按钮可能有三四种不同的样式;开发拿到设计稿后靠肉眼去量间距、对颜色;新成员加入后需要花几周时间去熟悉产品里的各种交互模式。
这些问题看起来很琐碎,但它们实实在在影响着团队效率和产品一致性。设计系统要解决的,就是这些"琐碎但重要"的问题。
举一个很小的例子:删除操作到底应该用二次确认弹窗,还是用可撤销的通知?这个决策本身没有对错,但重要的是它应该在产品里保持一致。用户在A页面习惯了删除后可以撤销,到了B页面突然变成二次确认弹窗,这种不一致会削弱用户的信任感。
设计系统的核心价值之一,就是把这些交互决策固化下来。不只是"按钮长什么样",还包括"什么情况下用什么组件、什么交互方式"。
以我自己的经验,要做好设计系统,需要考虑以下几点:
第一,从现有的问题出发,而不是从理想出发。不要一上来就想做一个"完美"的设计系统。先看看团队目前在协作中遇到了哪些具体的问题——是组件样式太混乱?是交互模式不统一?还是设计与开发之间的交接效率太低?从最痛的地方开始做。
第二,设计系统是活的,不是死的。很多团队花几个月时间做了一套完整的设计规范,然后把它当成"圣旨"锁在柜子里。但产品和业务在不断变化,设计系统也需要持续迭代。把它当成一个需要持续维护的产品来对待,而不是一个一次性的项目。
第三,开发实现要和设计规范同步。设计系统最大的挑战不是设计阶段,而是落地阶段。设计规范画得再好,开发实现跟不上也是白搭。所以设计系统的建设一定要设计和开发共同参与,并且把组件库的代码维护纳入日常开发流程。
我见过不少设计系统文档,主要内容就是各种组件的视觉规范——颜色、字体、间距、按钮样式等等。这些当然重要,但只占了设计系统工作量的差不多一半。
另一半同样重要甚至更重要的内容是交互规则。什么情况下用弹窗、什么情况下用气泡确认、加载状态用什么方式呈现、表单验证的反馈怎么做、空状态怎么处理——这些交互层面的决策才是设计系统的核心价值所在。
一个好的设计规范文档,至少应该有一半的篇幅是关于交互规则的说明。光有UI组件的设计系统,最多只能保证"看起来一致",保证不了"用起来一致"。
经常有团队问这个问题。我的建议是:不要在产品只有两三个页面的时候做设计系统,也不要在产品已经做得很大的时候才开始做。
比较合适的时间点,是产品模块开始增多、团队开始感觉到协作效率下降的时候。这时候做设计系统的投入产出比是最高的——已经有了足够的实际案例来总结规律,也还没有到积重难返的地步。