仓库源文

.. Kenneth Lee 版权所有 2017-2020

:Authors: Kenneth Lee :Version: 1.0

什么是“守”


本篇为下一篇做准备,精化一下“守”这个概念。

在前面的讨论中,我们多次使用“守”的概念,比如“守弱”,“守中节”,“守稳XX接口”。有 人问到,到底“守”是什么意思?我自己很自然使用这个概念,是因为我的武术老师常常用 这个概念。如果让我现在总结一下,我对“守”的定义是:在战术实施中,如果对特定战略 逻辑采取优先执行的决策模型,那么,我们称这种决策模型叫“守”,或者说是对该特定战 略逻辑的“守”。

“守”是战略思考的关键输出。

你出门去北京,计算好了路径,交通工具,把这个方案确定下来,你执行遇到障碍的时候 ,都首先考虑这个方案,这就是对这个方案的“守”。

战略思考不可能深入细节,否则无法响应变化,工作量也受不了,所以战略思考的关键是 决定到战术阶段“守”什么。而战术阶段你没有足够的时间去考虑所有的情况了,你也需要 有“优先考虑的逻辑”,所以你也需要“守”。

有人把“守”和“坚持”看作是同一个概念,这取决于你如何定义“坚持”,“守”不是保持不动 的,“守”是让自己和设计的策略有一个强力的吸引力,但不表示在战术执行过程中遇到具 体问题不可以临时甚至永久偏离守的目标。“死坚持”类似激流中的木桩,在压力面前完全 不动,“守”类似木桩上用弹簧系着一条小船,因应变化而动,但总以木桩为方向。

架构设计本质也是战略思考,也是决定到实施和实现的时候守什么,否则面对新的情况和 变化,就可能走向错误的方向,从而导致整个设计的失败。

守了错误的对象你就不可能实现你的目标,要去北京你守“一定要坐车”,你一辈子都到不 了北京。写一个程序,你不守“实现用户需求”,而守“把Makefile写好”,这也一定写不出 这个程序。

这也是为什么要守弱,守弱是守无人关注的东西,解决整个问题中最没人关注的问题。人 人都知道的问题,这个团队中一定有人去管,这是不需要你(构架师)去关注的,守最弱 一环才会带动整个团队和设计前进。

做一个软件,国家谁是总理关你鸟事,守国家谁是总理就是浪费时间;谁负责实现memcpy ,这也关你鸟事,如果他们实现某个功能的时候用到memcpy,自然要嚷得震天响的。不做 就跑不起来的东西,也关战略和架构鸟事,一跑就会知道,自然会处理的。最怕那种跑也 能跑,但做好了以后和别人对比没有竞争力的,这属于温水煮青蛙,死了都不知道怎么死 的。这才是战略设计者和架构师要考虑的问题的关键。架构师定义的“守”是不是正确,看 的是这个。

所以架构师的对“守”的定义不能明显感觉是“正确”的,如果明显感觉是“正确”的,说明选 错方了。这就是为什么上士闻道,勤而行之,下士闻道,大笑之,不笑不足以为道。这是 道(最佳模型)的特征之一。

有些时候,守可以有多个考虑对象,但有守比不守强。比如泼妇打架,守“抓头发”也行, 守“抓脸皮”也行,都会很有战斗力。但如果没有目标上去就乱打,结果就是被人抓头发或 者被人抓破脸。

但也有些时候,强行守没有必要守的东西,会是不守比守强。比如泼妇遇到流氓,守打左 边那个还是右边那个,都是自取其辱。先看清楚情况或者等老公过来才是正道。守和不守 是一体两面,不守是守“不守”的另一种表述。

作为架构师,我们尽量要让自己守的要素简单,因为在满足战略目标的情况下,越简单的 战略要素,意味着更多战术筹码。比如形意拳强调“守中节,打中节”,战斗中千变万化, 很多问题要考虑,等你想得清楚,都被人奏扁了。而守中节,就是用前臂响应对方的前臂 (大概这个意思,反正这里不是教你打架),用中节防守,力量足,贴身,最容易防守, 拦对方的中节,基本上也拦住进攻的全部路径了,这样就可以执行。否则老想着对方是白 鹤亮翅,你就应该来个怀中捞月,或者追着人家的手掌乱跑,那你就不用打了。

换成架构师,你设计一套复杂的方案,A和B在协议层关联,B和C在业务层关联,B和C的关 联中又有个信息在A层中体现,然后现在告诉你,A的供应商提价,你的设计就挂了。

所以,守之道,就是架构师之道。