仓库源文

.. Kenneth Lee 版权所有 2019

:Authors: Kenneth Lee :Version: 1.0

致虚极,守静笃


本文想讨论的问题其实是架构设计的问题,但大部分逻辑都是道德经的概念,所以会放在 道德经专栏中。

想起也写这个,因为最近在帮一个编译器的设计团队做架构建模,有一些过程经验让我对 道德经某段逻辑有了更清楚的认识,想着就要写下来,作为未来建更好逻辑的基础。

这个编译器方案涉及的东西非常多,他们编译一个程序,这个程序本身会作为另一个程序 的编译程序,这个编译程序的编译结果会发到Target平台上,和Target平台上的一个 runtime结合,再转到真正运行的单元上,再加上调试和profile的要求,就涉及了一大堆 的团队。我介入的时候,他们每个团队都做了一部分工作,但互相不太知道对方的东西的 细节,而且因为还在修改当中,所以,也不知道什么可以修改,什么不可以修改。因为不 可能每次修改都召集所有人来开会。

我对付这种场面的方法是一贯的:我基本策略就是先访谈和看已有的文档。先建立一堆分 裂的概念和逻辑(这和我看道德经的方法其实是一样的,也是先分离的看,然后找到可以 穿过所有点的自恰逻辑链,平滑化,然后再独立细化,最终逼近目标),然后我也不管对 不对,就开始直接写用户手册,把逻辑全部串起来再说。

然后我就开始拿着这个用户手册的初稿去找一个个团队确认,我描述的部分和他的理解是 否一致,然后让团队和团队之间的逻辑冲突,然后把他们拉在一起让他们对齐。你会发现 ,经常这样以后,他们的自由度会大大提高。因为原来对他们来说,自己模块以外一片黑 暗,模糊不清,所以要过度限制自己的设计才能保证未来的生存能力。但我从用户接口强 推下来,手中已经有了最大的利益筹码,我代表客户要求这个最大的利益,满足了整个团 队都会受益,这样剩下的就是你自己的限制了。这样可以榨干每个模块的能力,逼近他们 的极限,每个模块扩展到极限的时候,在满足客户这个问题上,他们就少了很多顾忌,反 而是互相留出了很多自由度来。

我这种方法屡试不爽的,但有难有易。这个策略的主要的敌人是团队守强,因为我的知识 是有限的,你非要告诉我某个方案是不可能实施的,我又不能取代你去做这个方案,最多 换人,换人也不见得行(因为这有可能是硬限制)。而且做过大型软件工程的都知道,整 个团队换人,哪有那么容易?所以,一旦遇到实施团队守强,把不是自己障碍的东西当做 自己的障碍,它就变成一个硬体了,我的设计就需要建立在大量无效的限制上,整个方案 就被多余的东西限制了。多余的限制会导致整个方案就建立在比别人差的基础上,就会失 败。

但这次我做得很顺利,大部分配合的团队表现得非常专业,一个多星期我们就摸到了限制 的边界,不知道的部分大部分人都会立即反馈“不知道”,这样我们很容易要不引入更多的 团队来讨论,要不把“不知”区标记出来。比如程序怎么加载到目标系统上,这有很多的变 体,没有直接确认,但我们很容易就建议一个黑盒封装掉这个部分,而继续保持编译器本 身的逻辑自恰。

这次和我配合的几个团队给我的感觉,就好像一丛柔弱的小草,我只要一阵风吹过去,他 们马上就可以呈现出最自然的姿态,本身有多少限制反映多少限制,不是自己的限制就会 直接传递给下一个团队,每个团队的“度”一下都组合在一起,成为一个“自然”的样子。我 们平时无法得到最优解,是因为“名”都是硬的,一个结果,A需要0.7,B需要0.4,C需要 0.3,组合结果最优是1.4就可以了,但如果用“名”来表达,“名”通常是没有“度”的,很容 易走入“好-坏”,“行-不行”这种粗糙的结果上,所以,很可能我们的结果是认为A需要1, B需要0,C需要1,最终的结果是需要2,这种方案就有洞(这些都是比喻,表示有个小数的 时候,我们测量或者定义不到而已。而且我们通过很硬的名来沟通,常常还不是个四舍五 入的关系)。如果我们不要开始就死守每个模块各自的名,而从一个组合的逻辑上考虑问 题,我们很容易在细节上把留下的空洞都压平。

这是致虚极,守静笃的好处。它求的不是个人,它求的是集体的状态。正如我们以前解释 过失道而后德,失德而后仁的概念。本来整个团队,你做好你的模块,我做好我的模块, 没有谁特别牛。这就是“无名”的“道”的状态。很多人觉得无名自己就会淘汰,但其实认真 想想,这种时候,其实你不用解释什么,你在系统中,你的作用就已经有了,你不需要去 占用别人的功劳,也不用担心对别人露怯的。所以,是你的限制你不怕暴露你的限制,是 别人导致你的限制,把它落给别人,整个团队就呈现最高效了。反之,你要占掉别人那一 块,露出你的“德”,“仁”,“义”,“礼”,其实就是在整个高效的系统中间插gap,这个性 能就高不起来。所以老子的策略是无为,不言,绝学……让整个团队的心不乱,不需要贵难 得之货,干好自己这一part,这个团队就会有最大的战斗力。我过去都没有非常强烈的感 受,这次是终于有了一次非常直观的体会了。

所以,现在我对这段话有更深的认识了:

.. 致虚极,守静笃,万物并作,吾以观复。 夫物芸芸,各归其根。归根曰静,静曰复命。 复命曰常,知常曰明。 不知常,妄作,凶。 知常容,容乃公,公乃王,王乃天,天乃道,道乃久。没身不殆。

原来一直觉得前两句指的是个人(圣人),总觉得描述得有点指向不明。但如果认为它指 向的是团队。这就很好理解了,不是个人要虚极。而是引导团队去虚极。所以才有万物并 作,因为团队的每个个体都在守稳自己的位置,而不是想去抢别人的功劳,来制造名。多 余的名没有了,就叫“静”,所有多余的成本没有了,名就是最小的状态,剩下就是“本来 的样子”,干A模块的写好A模块,干B模块的写好B模块。所以才叫“复命”,“回到本来的命 ”。这样就是“常”,“常”就是“平常”,“平常”就是“没有什么了不起”,不德,不仁,不义 ,不礼,每一分每一毫的力量都被用于对外输出了。后面的,就不用解释了。

.. vim: tw=78 fo+=mM