仓库源文

.. Kenneth Lee 版权所有 2021

:Authors: Kenneth Lee :Version: 1.0 :Date: 2021-10-25 :Status: Draft

我们是怎么放弃架构的


上周我们一个项目准备做高层设计,我们定了一个目标:每个核心团队技术Leader写一个 全局的高层设计,然后我们用这些高层设计去Argue我们到底走什么路线。

这不是一个容易的工作,因为大部分人对自己的部分很熟悉,但对其他人的情况并不了解。 为了做这样的全局设计,都要对别人的工作情况进行假设,但这种假设很容易被推翻,可 能别人随口说一嘴,你这里的很多推演就不成立了。

但我们必须做一次这样的工作,因为如果不通过这种手段,我们很容易忽略别人的困难, 只想着自己这一part,我们的工作就很容易出偏。这是唯一的,让我们互相在乎对方困难 ,最终有一个统一的思想,理解整个项目如何成功的手段。从这个逻辑空间的角度,这个 事情必须干。但如果抛开这个逻辑角度,这个事情不干,我们不会干不下去,直到整件事 情失败了,我们没有干这件事也不见得是我们失败的原因。

你看,这类工作就是一种架构设计。架构设计就具有这样的特点:你从某个角度,对着目 标建了一个很抽象的模型,这种模型可以建很多,这个不见得是必须的。但如果你没有这 个模型,你就很容易失败,而失败的原因不是因为没有遵循这个模型,而是“没有模型”。

这个任务布置下去以后,时间到了,只有少数的人完成了。项目经理有时间压力的要求, 他说,“要不我们就先讨论起来,不要等了,我们后面再去让大家补好不好?”,如果你对 照我们一开始的目标,你就会知道,这个操作完全不靠谱,因为我们想达成的目标一个都 达成不了,还不如我们一开始就不要做这个打算呢。

这是一个例子,说明架构是怎么被放弃的。架构,高层设计,所有这些中间过程设计,在 没有看到最后的产品前,它的工作成果都只能发生在脑子里面,而脑子是最容易放弃目标 的,如果我们不严格要求自己,逼自己去面对现实,我们其实很容易放弃这些约束,而这 种放弃无法回头。这就是所谓“轻诺必寡信,多易必多难,是以圣人犹难之,故终无难也。 ”

当然高层逻辑从来不是那么简单,实际中我们确实也会放弃,但这种放弃其实是这样的: 首先我们做一个达成所有目的的约束,不分大小,然后我们进行下一步分析的时候,发现 逻辑无法自恰,我们怎么都绕不过去了,我们就开始放弃要求不高的约束(从而放弃了部 分目标),一路退下去,最终我们还是可以达成部分目标。这也是常态。所以,这个事情 不是那么严格的,但你随便碰到一点困难就开始举枪投降,那这个事情就不用干了。特别 是对于一开始的高层设计统一都突破不了,那你也没剩下什么目标了,这个事情就应该马 上终结,继续浪费这时间干什么?