去年和组里同学聊起设计工程化时的一点感想。


    Q: 涉及到设计工程化的部分,想听听你对设计工程化的理解?

    空谷:问题有点大😂 我可以说下我最近的两个感受吧,在看了一些技术的书籍资料以后的。
    空谷:就是技术的一些书里面有个词,叫关注点分离(SOC)。
    空谷:简单来说就是我在做一件事情的时候,只关注这件事情本身,而其他事情就交由其他的东西来完成
    空谷:比如举个例子,我们设计页面的时候,大部分的时候是关注业务逻辑是怎么样的,然后我们根据业务逻辑去摆组件上去。这个时候我们其实不太想关注组件具体样式是什么样,只要先确定我们放的组件/设计的交互模式,是否符合业务逻辑
    空谷:而等到业务逻辑确定之后呢,我们可能再想着怎么去优化样式或者优化组件的字体、间距啥的,这个时候业务逻辑其实不太重要了,我们关注的是相应的视觉效果
    空谷:所以 SOC 的价值一方面是在于可以让人保持专注,另外一方面则是节省工作量,同时提升对工作的控制感
    空谷:比如全部都采用了 Sketch 的 Symbol的设计稿,要改颜色只要改一次,就全部都改了,这个就是很节省工作量,并提升控制感的表现
    空谷:我觉得任何一个领域,只要在做工程化的,都会去做 SOC,把很多以前耦合的各个环节给拆开来,从而实现更细粒度的控制能力
    空谷:我看的技术书里面管这个叫做分层,在设计上其实目前的分层粒度特别粗,所以很容易牵一发动全身,最终变得不可维护。

    Q: 是的,这是一个很好的分析思路,设计其实也需要去分层的,拆解的粒度越细,就越容易控制。

    空谷:然后第二个点我觉得是叫做 知识的固化
    空谷:就是在前端工程化里面会很讲究把领域知识固化到框架/工具中,而不仅仅局限在文档里
    空谷:因为写代码这件事情,十个人会有十种写法,所以现在前端领域会有 lint 工具,帮你检查出代码中不符合规范的东西,有些还提供一键修复
    空谷:如果只是把规范写在文档里的话,估计 10 个人里面 9 个不会去看,剩下的那个人还在拼命维护,这样就用不起来。
    空谷:然后这样还有一个好处,就是一旦知识被固化在相应的框架、工具里以后,很容易让人在使用过程中学会相应的领域知识。
    空谷:比如举个例子,figma 的 AutoLayout 其实是基于前端 flexbox布局规范进行实现的。如果 figma 用的多的设计师,就很容易理解前端 flexbox 到底是怎么一回事
    空谷:比如需要特定的层级嵌套、组件在图层中顺序会影响元素位置等等。这些其实就是开发中相应的知识,然后在 figma 中换了一种形式表达了出来
    空谷:这个方面 sketch 有 assistant 了,但是还缺一键修复的能力,所以效果会差很多。这方面 figma 的 Figma lint,可以说好一些。
    空谷:但是无论是 sketch 还是 figma,我觉得在知识固化层面还是差的很多,比如各种设计规范的约束,没法体现在工具中,只能通过 checklist 的形式让设计师手动去检查,这个价值就没有那么大了。

    Q: 这个点我觉很有启发,约束性规则的固化和落地,可能是一个比较重要的环节?

    空谷:嗯 而且这个部分主要是得有人来开发。但是以往来说前端工程师又不懂设计师的规则约束。所以这个就没人做,其实就是灰色地带。
    空谷:第三个点,就是工程化里的自动化,可以把人从低性价比的重复劳动中解放出来,去做更多有高价值的事情。
    空谷:这个点应该比较显而易见,也算是共识了。我之前想做的自动生成 Symbol 其实也是希望如此。
    空谷:我前段时间有看到一篇论文研究自动布局的。他们利用自己做出来的算法做了个实验。那个算法可以实现自动化的对象对齐。
    空谷:就类似这样
    image.png
    空谷:然后他们实验下来发现,用了这个的设计师,会做更多的布局探索,因为去实现一个「符合规范」的布局成本降低了。然后他们就可以花更多时间和精力去研究「怎么样的布局方式」是好的。
    空谷:这其实帮助了设计师,让他们花更多精力去做价值更大的事情,让价值相对不那么大的事交给机器去做。
    空谷:目前想到的差不多是这些,感觉其他的比如一致性啥的好像也是老生常谈的就不说了[笑哭]

    Q :我还有一个问题,就是从服务业务的角度来看,目前其实已经有组件和规范了,那继续工程化这件事情的出发点和动机是什么?

    空谷:我觉得是打铁还需自身硬吧。 打个比方,服务业务就像去前线打仗,我们目前所拥有的工具链就是武器。没有组件和规范之前那是赤手空拳,现在有了组件和规范是小米加步枪,而工程化之后,就换成了飞机大炮,打击面更广,效果更好,又更加省力。
    空谷:所以工程化其实在做的是自我优化,比如我们可能要用 100%的精力完成的事情,工程化之后只需要 10%甚至5%。那我们剩下多出来的精力要么可以继续磨枪,换高精尖设备,或者就可以更加深入地去了解业务,探索设计可以去附加的额外价值,比如探索业务的专属设计策略等等。
    空谷:前端工程化其实也是一回事,做的其实是整个开发效率的提升,原本可能以前他们要用 3 天做的东西,现在可能 1 天或者半天就能做好,而且质量说不定更高。
    空谷:有句话我觉得还挺对的,通过降低创新的成本,更好地去拉动创新。 Airbnb 的首席设计师 也差不多说过相似的话,就是这个道理。