仓库源文

.. Kenneth Lee 版权所有 2017-2020

:Authors: Kenneth Lee :Version: 1.0

大道曰守,当时曰行


本文有三个目的:

  1. 作为这个专栏的一个引导:软件架构设计 - 知乎专栏

  2. 作为这个专栏的一个引导:《道德经》直译 - 知乎专栏

  3. 作为下一篇要写的Blog的一个引导

很多人看道德经有困难,讨论架构设计有困难,都源于对于战略和战术的问题没有认识。 战略是指导一个长远目标达成的所设定的计划和原则,战术是眼前立即要执行的方法和步 骤。如果从一个事后复盘的角度来看这个问题,战略所走过的路线,是所有战术路线的总 和。

但我们对信息的控制是有限的,比如你可以用1000字写下这条路线上一小段的战术,你就 没有办法同样用1000字写下整个战略路线的所有行为。

何况,你根本没有所有的信息。共享单车能不能盈利?没有人去做过,上帝都不见得知道 能不能。

所以,我们描述战略和战术的时候,用词可能一样,但表达的意思是不同的。

《道德经》中经常用“大”,“上”这样的词语表达这个概念。所以上仁不仁,上德不德,大 制不割。制定法律在你杀人的时候要你赔命,大的法律制定战略是希望你不要杀人,不是 希望你赔命。没有战略达不成目标,没有战术生存不下去。所以,大曰逝,逝曰远,远曰 反。谈道德经的时候,很多人动不动就希望拿着道德经说的东西往身上套,连基本问题都 解决不了,然后要不就变成玄之又玄的神来拜,要不就来个“都是些老古董在胡说八道”, 反正损之而益还是益之而损,其实没有什么区别。

同样,谈架构设计的时候,很多人谈“这里不是没有这个函数可以调吗?”,“那个函数不是 static的吗?”,“我这样不是也能跑吗?”,你这是要写这个程序,持续维护这个程序呢? 还是直接就用这个程序啊?

我们面对这样的人的时候,实在没有办法,最后就只能说“Show me the code”,但某些没 脑子的工程师还觉得这句话很酷。他们没有搞明白的是,到了给你说这句话的时候,已经 表示无法用“设计语言”来沟通了,这对沟通的双方都是伤害,如果Coding的成本低到我们 不需要设计,我们何苦要做设计?何苦要做架构?

所以,战略曰守,战术曰行。

让你走到医院去,不是让你中间尿急了不要上厕所。

让你在A,B两层中间加一层抽象C,不是说A,B,C不能有一个公共的库x。

战略不讨论无关紧要的操作细节,构架设计不讨论编码的时候必然会那样写的编码技巧。