郭东白的架构课47

你好,我是郭东白。

这是我们思考力模块的第一节课。在模块导读里,我提到了架构师这个职能有自己特有的思维定势。那么在接下来的两节课里,我就来展开讲讲架构师所需要的思维定势是什么。

这节课我们先从架构师的职业特点讲起,谈谈从公司的角度看,需要架构师具备什么样的思维定势。

思维定势与思维模型

我们在这个模块中会频繁提到思维定势和思维模型这两个概念。思维定势指的是当我们面临一个问题或一组选择时,所采取的固定的前提假设和思考路径。而思维模型指的是某种特定的思考过程,它是一种具体的思考方法。从这个定义就可以看出来,思维模型是思维定势的一个重要组成部分。

学习到现在,你应该很清楚我们这门课不是架构实操课,而是理论课。虽然我们也例举了很多实际工作中的案例,但目的是为了解释课程中所建议的思维模型和做事原则。而这些建议的总和,就是一套贯穿架构师整个职业生涯的思维定势。所以我才会在这节课,将这套思维定势完整地抽象出来。

关于思维模型,相信你肯定看过不少相关书籍。而我想强调的是,思维模型有很多,学习多了反而会无所适从。就像你可以找到任何一个伟大哲学家所创造的思维模型,但与此同时,也必然能发现一个反对该思维模型的哲学家。

不过我认为,对于一个软件架构师而言,如果能采用一些思维模型,那么你的思考力至少要比不采用时更加深刻。这是架构师生存的客观环境的要求,不以个人意志为转变的。如果掌握了这些思维模型,也就掌握了架构师的道。

但是正如老子所说,“道可道,非常道”。有思维定势要胜过没有思维定势。但是我们这节课中所抽象出来的思维定势,只是一个还没有经过时间打磨的起点,未来必然会有更完满的思维定势。

那么什么是架构师必须要采用的思维定势呢?我们在模块导读中已经提到过了,架构师必须选择以持续创造增值为目的的思维定势。我们就先从这里讲起。

过程正义的价值思维

如果从价值创造这个视角出发来总结我们整个课程的内容,你会发现:从模块一的生存法则开始,到模块二对架构活动的规划和干预,再到模块三的架构师的能力维度,我们一直在总结架构师必须要创造的价值,以及创造这些价值的方法。

在这些具体的方法背后,如果说有一个思维模型贯穿的话,即架构师的每一个决策信条和最终行动,都要最大化自己为企业创造的长期价值。我将其称为价值思维,在我看来,这是架构师思维模式的起点,也是这个职能存在的重要前提。

不过对于架构师这个职能而言,这个思维定势有一个约束条件,即我们在模块一的总结里提到的过程正义。也就是说,在最大化的过程中,可选的行动项不是毫无限制的,而只是所有可能操作的全集中满足公平正义条件的一个子集。

为什么过程正义是一个必选而不是可选项呢?因为架构师这个职能需要通过他人来间接地创造价值。如果你作为中间人都不能维持过程正义,就别指望资源持有者和决策者能保证过程正义了。

架构师的这种价值创造是一个承诺,类似我们设计模式里的Promise。Promise也有履约失败的时候,对于一个架构师的合作方而言,他其实无法分辨Promise的RuntimeException和Unsubstantiated Promise,也就是承诺履约过程中的意外和虚假承诺。因此,那些没有能力或者故意违背了这个价值思维的架构师,对“架构师”这个职能的声誉上的伤害是极大的。

在一个信息不对称的柠檬市场,用人方无法为一个不可证伪的宣称(Claim)付费,只能拒绝为承诺付现,从而避免更大幅的损失。这种拒绝,一方面体现为对架构师兑现周期的缩短和可调度资源的减少,另一方面体现为对这个职能的投入的缩减。

对抗的办法只有一个,就是通过这个模块的学习,让自己成为一个能够真正创造价值的架构师。同时也主动帮助其他真正在创造价值的架构师,让他们能够获得更多的机会,这样才能用良币驱逐劣币。

那么这种价值思维,代表我们应该以什么样的思维方式来做决策呢?我总结一下我们在之前三个模块里传递的主要观点:

  1. 架构师要面向组织、技术环境和商业环境的未来做最优设计。架构师应该是一个价值投资主义者,要尽可能地把软件架构设计和架构活动的重点,引导到未来ROI最大的方向上去。
  2. 架构师要有全局的理解和面向全局最优的决策原则,因此要对抗来自细分领域的短期行为和局部最优的决策。
  3. 架构师要通过提升软件系统的结构性,为公司创造更好的外部适应性,因此要对抗细分领域中因相对独立的研发决策而导致的熵增过程。

这些都是大的原则,我们之前在课程中提到的行动点和机会点,都可以归类到这三个大的原则中去。你也可以在实践中试试看。

架构师的成长,从模型开始

那么,通过什么样的思维方式才能保障自己能够持续创造价值呢?答案是靠实证思维。 

实证主义(Positivism)是由法国哲学家孔德(Comte)提出的,他的学说被后来的Popper等人所修正,演变成后实证主义思维。这种思维方式认为人和现实之间可以通过实验观察和验证过的规律形成一层抽象,也就是说,人可以推演规律,从而对现实形成认知。

模型是实证思维的一个重要组成部分,意思是对现实的近似和抽象。一个好的模型,可以帮助我们更透彻地理解影响现实的不同因素,发现并确认其中的本质规律。而从这些规律推导出的结论,则对实践起指导作用。

到这里,实证思维和模型的关系就明晰了:实证思维是一种通过对现实的建模和借助模型的思考,从而形成有价值的实践决策的思维方式。

一个架构师必须是实证主义者。为什么这么说呢?因为他要从内心相信架构活动是有一些规律可循的。如果软件世界没有任何规律,那么架构师也就没啥用处。因为架构师就是靠研究和总结过去的经验来为未来创造价值的。所以我们架构师必须相信架构活动是受一些基本规律所约束的。

有了这些不变的规律,我们才能在此基础之上做出前瞻性的架构设计。而通过简化的模型寻找规律的思维方式,就是架构师所需要的实证思维。

举个例子,我们模块一就是对一些基础规律的总结。因为这些规律对于架构活动来说具有普遍适用性,所以学习它们会帮助到你未来的架构活动。那么这些法则是怎么来的呢?其实就来自关于模型的假设:

  1. 架构活动是可以被建模的,这个过程会形成一组抽象的模型。
  2. 从抽象的模型中可以推导出一些规律来指引我们的决策和行为。
  3. 这些在规律指导之下的决策和行为,当应用到真实世界的时候,比缺乏规律指导的成功概率更高。

模型可以有很多种,甚至对于同一个实体,不同的理论和场景下会有不同的模型。比如说关于人的模型,经济学就是把人建模成一个最大个人收益的理性个体;而中医,就是把人建模成一个阴阳五行的平衡整体;风控背后的犯罪分子模型,就是以最大化收益为目标,但却缺乏任何道德和法律约束的人;而搜索推荐背后的模型,就是以最小化时间成本为约束、最大化信息收益的人。

模型思维的最核心理念是思考必须从模型开始。这个模型可以不完美,但不能不存在。举个例子,我们课程中提到的域模型也是模型思维的一种。它把上面这种具体的单个实体的模型,组合成多个实体之间互相依赖互相影响的相互作用的模型,从而把真实世界简化成可以用一组信息来抽象的实体。

再举个例子,我们在尊重人性这个法则里提到了,架构活动就是人的活动,我们必须要对人的行为进行建模,所以我就引用了马斯洛的模型。注意,这个模型不同于域模型。

  • 前者是对架构活动参与者的预期行为进行建模的过程,
  • 后者是对架构活动中具体的设计场景进行建模的过程。

也可以说,前者是对写代码的人的行为的抽象,后者是对代码的抽象。也就是说,模型贯穿架构师思考的方方面面。除了软件架构设计外,也包含对整个企业的建模。

你如果认真阅读了模块一中评论区的内容,你会发现有些同学在质疑马斯洛为啥是完美的理论。其实实证思维的关键,就是通过一个模型来开启思维活动,初始模型的完美性其实没那么重要。我们在法则一中强调架构要符合人性,用的是70多年前发明的模型,也就是马斯洛的动机跃迁模型来预测人性,然后得出了非常重要且有效的结论。

在我看来,马斯洛的模型是对人类行为的一种建模而已,不是说不可替代。它是我们推导的一个起点,之后还可以迭代优化。正是因为我们选择了一个可以明确表述的模型, 所以我们就有了一个优化的起点。如果发现了更优越的模型,也可以引用它,用你的模型推导出更具指导价值的内容来。

一个很有趣的现象就是这个理论的对称性,我们这两节课描述的架构师的思维定势也是一组模型,也属于可以被实证主义理论所验证的对象。

我们这里强调的核心是,一个架构师的思考无论如何都不应该离开模型。但这不等于模型是一成不变的,我们可以升级或者更换模型。但是,从模型中推导出结论这种思维方式,作为思维定势的一部分,必须要遵守。

事实上,你会发现,我并没有说马斯洛模型是我们唯一的选项。马斯洛模型的优点是,它是一个有完整描述的、可以指导决策的、相对而言容易使用的、关于人类行为的模型。

模型最重要的特征在于它可以被证伪、被比较和被评估,这种评估甚至可以被量化。正是因为这些特征,模型才是可以被不断迭代和优化的。在同一个场景之下,最终胜出的模型只有一个。这也是为什么我认为架构是科学,而不是艺术。作为架构师,我们所追求的那个终极模型,就是在实践应用中被证实是更健壮(Robust)的模型。

那么怎么才能保障得到一个更健壮的模型呢?这就需要靠实证的过程了。

实证主义

我们刚才已经提到了,架构师必须从内心相信架构活动是有一些规律可循的。除此之外,实证主义的思维还认为这组规律是可以被普遍感知的、可以被明确表述的, 而且这些规律可以在现实的架构活动中应用,甚至被证伪。

我们比较熟知的例子就是物理学定律,比如说爱因斯坦的广义相对论,先是预测到光线在时空中可以被扭曲,随后又被实验所观察到。进化论也是非常好的例子,此外,还有很多基于理论预测先于实验观察的例子。

实证主义有一些特征,我把这些特征和软件架构相关的部分给你解读一下。

第一个特征,一个基于科学理论是可以被独立表述的。架构原则、设计模式和思维定势都属于这一类,重点是这个理论是独立于实践而存在的,能够被单独抽象出来,而且被表述出来。

比如说我们模块一中提到的架构师的生存法则,就是试图抽象出一组规律。这些规律是普遍适用的、可以被独立表述、可以被传播、也是可以被改进的。这些规律形成了一组基础的理论,从而推演出一系列的实践方法,最终的实践结果是可以被验证的。

第二个特征,这些理论是有一定的逻辑结构的,是完备和自洽的。举个例子,在完备性上,我们的架构法则试图覆盖所有影响架构活动的核心因素,但是它们在自洽性上,其实缺乏论证。我也欢迎你指出这些法则中存在的自洽性问题来,一起改进。

第三个特征,这种理论可以被浓缩成一组公理。通过这组公理和严格的逻辑推导,可以推导出其他的行为规律。公理越是简单,越是普适,规律本身的价值也越大。

第四个特征,这些理论是普适的,是可以复现、迁移的,也是可以被比较和验证的。这跟“信则灵”的唯心主义思维有着非常大的区别。实证思维是科学思维,一个理论要公开地表达出来,接受不同时间地点、不同场景、不同使用者的检验,才能够逐步提升。

实证思维对模型有一个评判标准,并指出了模型的优化路径。一个有实证思维的人,会认为自己的模型及从模型总结而来的规律是普适的、可以表达和复制的。如果有更多的人来尝试,会让自己的理论在更短的时间内变得更完善。

其实我自己就是实证主义的坚信者,所以我愿意把我的理念表述出来,接受你的批判和验证。你也可以看到,我们模块一中的架构法则还远远没有达到实证主义所要求的公理化的层次。所以这也是开篇词中写到的,我只是把我这些年总结的一些规律分享给你,期望你能帮助我找出这些法则的不完美之处,我们共同提升。

可以看到,实证主义者服从于自己发现的科学规律,或者更准确地说,是自己尚未被证伪的经验。实证主义者也接受他人的批判和修正,而不是被这些经验所束缚。我们经常会过度沉迷于过去的经验和成功,以至于无法摆脱它的控制,那么坚持实证主义,会帮助你走出这个迷局。

接下来的问题就是,如何才能最大化我们的价值思维和实证思维呢?我们下节课再讲。

小结

这节课的内容总结下来有两句话。

第一,企业需要架构师创造价值,且架构师是通过他人间接地实现增值的,因此架构师创造价值的方式是过程正义的价值思维。

第二,架构师创造价值的手段,是以实证思维的方法不断修正对现实世界的抽象模型。这两个思维定势都是以企业的视角来谈架构师定位的。也就是说,架构师在一个企业的长期存在,要靠自己的持续增值来保障。

这两个思维模型,都是从企业视角推导出来的架构师所必须具备的思维定式。

思考题

我们这节课介绍的价值思维和实证思维,你有过类似的实践吗?有没有什么成功或失败的经验可以分享一下?

欢迎把你的想法分享在留言区,相信经过你的深度思考与输出,学习效果会更好。我们下节课再见!

posted @ 2022-12-29 16:09  易先讯  阅读(51)  评论(0编辑  收藏  举报