跳转至

48 架构活动中的思维模式(下):实用主义和反思思维

你好,我是郭东白。

上节课我们讲了架构师在架构活动中所需要的思维模式,并强调这些思维模式是阶段性的,要随着架构活动生命周期的变化而调整。

与此同时,我们还强调了思维和思维是架构活动实施前所需要的。那么进入架构活动后呢?也就是在执行阶段和复盘阶段,我们应该采用什么样的思维方式呢?这就是我们接下来要探讨的问题。

执行阶段:实用主义思维

一旦进入执行阶段,我们就要在最大程度上保障用户价值的交付了。那么在这个阶段我们要具备什么样的思维方式呢?

答案是实用主义思维(Pragmatism)。如果具体到软件架构的上下文里,实用主义思维指的就是以实际增值作为检验架构设计唯一标准的思维方式。

实用主义思维是近代美国最重要的哲学思想,可以说,它影响了整个美国发展和壮大的过程。时至今日,依然是美国社会主流的思维方式。

不过实用主义思维并不是美国人独有的。它是一种比较朴素的思想,在中国的历史长河中,也有很多思想家非常崇尚实用。即使是最具理想主义的庄子,在他的部分文章中也体现出了实用主义思想,“屠龙之技”就是最直接的例子。除此之外,还有距离我们比较近的例子,譬如邓小平理论中的“黑猫白猫,能抓到耗子的就是好猫” 。

如果说你是一个信奉实用主义的架构师,那肯定会认为应该以实际的价值和最终的商业成败去理解模型和架构设计。换句话说,商业的成功就意味着架构设计的正确。

实用主义与上节课提到的实证主义不同。实用主义认为理论是实践的工具,一切理论都由它所带来的实际增量价值来评判。没有产生价值和实际影响的理论就是虚无的,没有任何意义。反之,能带来持续价值的理论就是真理。可以发现,与实证主义相比,实用主义思维在一定程度上是轻理论、重实践的。

相比之下,实证主义的核心是先从理论(规律)出发,实践是对理论的检验。一般来说,架构师的成长主要靠从架构活动中总结和沉淀的规律,同时不断修正这些规律,最终形成能够指导实践的理论。

因此我们上节课强调,从职能定义上来说,就要求架构师必须坚持实证主义。甚至要相信由于现实环境的复杂性,结果的失败不一定代表规律的失败。不能一上来就放弃对规律的信心,而是要进一步分析规律失败的根因,然后做出相应的修正。所以我在第一节课就表达了,我会把实证思维当作贯穿架构师职业生涯的思维方式。

但是你可能会问了,为什么到了架构活动的实施阶段,我更建议你采用实用主义的思维方式呢?而且,我们不是说架构师要关注整体的结构性嘛,那改成实用主义思维的时候,还要不要关注模型和规律呢?

这些都是好问题。架构规划在实施之前,相当于一个还不存在的想象,没有任何实际的载体。在架构活动初期,为了完善这个想象,我们不断强调全方位思维和批判思维。而一旦到了执行期,要做的工作就是将想象转化为现实,那么我们的目标就是在最大程度上实现它

一个被实现了的想象,才是一个能生存下来的、能够被见证和检验的理论。而这个检验的过程,就是对架构理论的一次实践和验证。如下图所示:

如图所示,架构理论和架构规划属于理论部分,而项目交付,以及由此带来的实际结果和最终的价值创造则属于实践部分。

在完成交付之前,架构规划仅仅存在于理论世界之中,没办法创造真实的价值,也没办法接受检验。因此,我们要以实用主义的思维最大化实现过程,尽力保障交付。只有这样,一个存在于理论世界的架构规划才能在现实世界中生存下来。

也就是说,不惜一切代价保障实践结果、交付用户价值,其实是实证主义验证过程的一个必要条件。原因很简单,如果你的规划停留在图纸上,那么对规划的验证,甚至是部分验证,也就无从谈起。

如果架构规划完成得不够完美,但至少保留了部分的验证能力,也是有价值的。这也就是为什么我们在模块二里非常强调交付最小价值单元(MVPU)。

这种理念也跟我们法则五的最大化企业生存的理念相契合,活下来永远是第一优先级。架构也是如此。当架构思想在现实世界中生存下来,你才能得到反馈。我们可以在整个职业生涯中都相信实证思维,但是在这个阶段,更要用实用主义思维去指导行为,在最大程度上实现实证主义的理想。这两种思维模型并不冲突,仅仅在使用的场景和范围上有差异。

当然,并不是所有架构活动刚到实施阶段就需要生离死别的取舍。多数时候,我们完全可以坚持实证主义,首先关注建模,对规律进行抽象和利用,只在极端取舍的时刻才以实用主义思维方式来保障生存。

有了实用主义思维的保驾护航,就能在最大程度上完成我们的架构活动。那么接下来的问题是,到了复盘阶段,我们还要坚持使用实用主义思维吗?

答案是否定的,我们又需要换一种思维方式了。

复盘阶段:反思和分析思维

在交付结束之后,最重要的节点就是复盘了。关于具体的复盘动作,我们在模块二里有详细的描述,这里就不再重复了。

一提到复盘,你可能会马上联想到反思思维。是的,我们在课程里反复提到了反思这个词。不过这个词有些被用烂了,我先来试图解释一下反思思维(Reflective Thinking)。

首先,反思是批判思维的一个具体应用。反思是一个理性的思考过程,是基于逻辑思维的、理性的、怀疑的、公正的思维方式。

其次,反思过程的主要作用对象是你自己。反思首先是个自我批判的过程。我们前面提到的批判思维虽然也包含反思,但它的作用对象更多是一个客观的对象,也就是对架构规划进行批判。而反思,一般来说更关注的是自己,因此这是一个怀疑自己或团队的过程。

最后,反思的内容主要是自己的思考方式。在复盘过程思考的对象,就是你在架构活动中的思考过程本身。说得更直白一点,你在为过去的思考逻辑找Bug:我到底因为何种思考方式的缺陷导致漏算了?

反思还有其含义,但我认为以上三点是最主要的心法。如果能在日常中把这个心法应用好,思考力肯定能提升到一个全新的层次上。

不过可能你在学习复盘这节课时已经感受到了,在复盘的过程中,这个“我” 不仅指架构师,还指参与架构活动的整个集体,是从决策者到赞助者再到执行的每一个人。而你作为架构师,只是在帮助整个公司完成复盘的反思。

那么有了反思的思维方式,是不是复盘就完美了?当然不是,反思只解决了一个问题,即所有参与者的思考态度的问题。在研究架构活动的得失时,不把自己的失误排除在外。但这并不能保障我们可以找到所有的根因。

与上节课提到的架构规划不同,一个项目的失败,与导致这个项目失败的因素是“或”的关系。任意一个强依赖失败了,整个项目就失败了。那么如何寻找所有的相关因素呢?

复盘在英文里有一种说法叫“Post Mortem”,直译过来就是“尸体解剖”。在这个过程中,我们需要的其实就是剖析的思维方式,也就是分析思维(Analytic Thinking)。

分析思维和上节课提到的全方位思维正好是相对的。很显然,全方位思维在复盘过程是帮不上什么忙的。我们已经知道架构活动出现问题了,现在的目标是寻找根因,找到一个或多个导致整体失败的因素。而不能认为失败就是集体的失败,有责任大家一起抗。

那么在分析思维模式下,什么样的思考过程才能最大化复盘的价值呢?

第一,分解问题。分析思维本身就是把一个整体拆解成更小的、更容易理解的部分。在这个过程中,我们需要从多个维度上做拆解,把父问题拆解成更细粒度的子问题。

在这里,重点在于控制分解的维度和粒度。作为架构师,要把注意力放在最终能创造的价值上。首先要找到能够带来最大价值的维度,然后在这个维度上持续分解和下钻,发现更细粒度的关键点。最后,将那个通过最小改变就能带来最大增值的点,作为解决问题的关键点。

我们之前介绍的复盘过程中的“5Whys”,就是分解和下钻的具体方法。

第二,发现重点。影响架构活动的因素太多了,多数时候,通过一次复盘得到的结论的有效性是存疑的。因而最重要的是找到2-3个高价值的改进点,而不是找到几百个不一定有啥效果的跟进项目。这是个深度思考和发现的过程,不是把任务简单地分配给不同领域执行者的过程。

第三,追溯本质。在复盘时,要在探索问题本质的过程中不断深入,发现抽象的、跨领域的、在更长周期中有效的不变量。在这些不变量上做提升,从而带来更具普遍性的价值。

在这个过程中,架构师的职责是在逻辑上挑战一个复盘者思考的同时,对不变量的价值做出判断,直到找出高价值的不变量为止。同样,我们在之前介绍的复盘环节中,对如何通过寻找不变量来推进思考的过程有详细描述,这里就不重复了。

整个过程可以由下图来表示:

你可以把这种思维方式与全方位思维方式对比一下,其中的差异还是很大的。

这里有个很有趣的现象。当你养成深度的分析思维的习惯之后,会帮助你提升自己的全方位思维能力。因为做全方位思维时,其实就是把每个执行领域或者每个维度上的细节思考,委托给其他人去完成了。但是很显然,这个委托过程是不完美的,最终也会遇到失败。

那么在细节上的深度复盘,不仅会帮助你识别委托者的漏洞和验收逻辑的漏洞,同时也会帮助你提升全方位思考的能力。

架构活动中的思考方式

架构活动的生命周期有很明显的特征,需要不同的思考方式。如下图所示:

在目标确认、可行性探索和架构规划的过程中,我们需要在最大程度上使用全方位思维。这个使用的峰值发生在目标确认的环节上。

在可行性探索阶段和复盘阶段,我们都要使用批判思维。所以代表批判思维的使用程度的曲线有两个峰值。第一个是较大的峰值,处在可行性探索的过程中。你需要通过批判思维来保证风险和预案的评估是否足够客观,而不是沦为形式。第二个峰值是在总结复盘的过程,你需要通过批判思维来提升参与者的思考质量。

规划确认的后期、项目启动、阶段交付和全面上线的过程中,则主要采用实用主义思维。而到了复盘阶段,则主要采用反思和分析思维方式。

这张图也表示了每种思维模式在每个节点上可以创造的价值。这些思维模式不是零或一的状态,而是在每个节点上都占有一定的比重。

举个例子,在节点二的目标确认环节,最重要的思维模式是全方位思维。但是这个节点上有一个步骤是判断和锁定核心执行团队。这个时候,坚持实用主义思维就至关重要了。你要以最大化实践成功的概率为唯一的评判标准,首先选择“能拿耗子的好猫”。

小结

我们这两节课讲了四种思维模式。如果你感兴趣,可以看看相关的哲学书籍和课程。这方面的文献也有很多,我们提到的每一种思维方式都有人花毕生的精力去研究。

不过,我其实没有把每种思维都系统性地研究过,甚至不能说真正理解了任何一种模式。在学习思维方式上,我更认同实用主义的学习方式。任何一个思维方式都需要大量的机会去验证, 我们的生命有限,没办法学到滚瓜烂熟之后在多个平行宇宙中做A/B实验。

所以我采用的办法是在最早的时间点去实践,好用就延续。如果试了不能解决实际问题,就去研究是不是我学得不到家,到处找找文章和书籍看一下, 回头再去重试, 或者是换一个学说和方法论试一下。

对我个人而言,这种先尝试再学习的过程更容易一些, 因为很多哲学书籍看起来太烧脑了, 学习成本非常高。

所以, 如果你喜欢我们这两节课里面提到的任何一种思维方式,我建议你不要等,今天就在工作中尝试一下吧。

思考题

三个思考题,你如果有心得,那么答案应该都比较长, 我建议你就选其中一个做深度的回答。

第一题,关于批判思维,有这样一个悖论。一个持有批判思维的架构师在一个信仰驱动或者等级森严的企业文化中很难生存。教众们都认为他是个自以为是的个人主义杠精。 但事实上,正是因为这种文化中缺乏理性思维,他才能最大程度地创造价值。反倒是人人都是理性主义者的学院型企业,他的批判思维也就没那么大的用途了。你是怎么看待这个悖论的呢?你有见过类似的案例吗?

第二题,我们整个课程都是基于理性思维的,这跟我个人的思维模式有关。我不太相信靠信仰而提升成功概率的理念,甚至是拒绝相信的。不过在人类历史上,信仰的价值的确非常大,尤其是在战争中。这也是我个人没有思考清楚的地方。

那么,在你的职业经历或学习中,有见到过由信仰驱动而带来成功的架构案例吗?如果有的话,请你多描述一下背景。

第三题,任何思维模式都需要一个能够被接受的交流环境,否则就会像被关在疯人院里的智者。你有过类似的经历吗?后来你又是如何从“疯人院”里逃出来的呢?

欢迎把你的思考和想法分享在留言区,咱们下节课再见!

精选留言(10)
  • 罗均 👍(5) 💬(3)

    感觉学生比较适合回答第二题😊 学生受到的教育是“理性地信仰才是真正的信仰,缺乏理性的信仰,那便是迷信。” 学生自己的职业生涯没什么值得提的,不过可以提一件事,仅可作为趣谈。学生记得去年10月份有一个周末下午,突然看到国务院官网上有一起留言希望国家重视上年纪的软件技术人才就业问题……当时“35岁是个坎”的中年危机话题突然特别火热。学生也有点感受到危机,深觉自己愚笨,更不知道自己的职业生涯该何去何从……于是连续默念“南無文殊師利菩薩摩訶薩”以及“文殊心咒”,以祈求代表智慧的文殊菩萨予以开示。 等到第二天的早上,学生在朋友圈中看到老师的课程,学生好奇点进去听了老师的免费试听课后,毫不犹豫地注册一个【极客时间】账号并购买老师的课程直至今日,一直收获匪浅!

    2022-06-28

  • 大道至简 👍(4) 💬(1)

    第一个问题其实比较好理解,看似悖论其实非也。 1,在信仰驱动的企业,大家缺乏思考,只是一个单纯的执行者,如果架构师有批判精神并且能很好地存活下来,说明纠正了很多老板做的错误决策,帮忙企业从商业上面获得了成功,否则很难存活下来。 2,理性的学院型企业,大部分人都有批判精神,会更深度地思考,他的批判精神发挥的价值就少了,因为其他人也在创造思维价值,所以没那么大的用途。

    2022-11-04

  • kq yang 👍(3) 💬(2)

    信仰的价值可以从叔本华的作为意志表象的世界得到答案。这个世界是通过发明出来的概念搭建起来的世界。比如古埃及主张世界是神在统治,法老是神的化身。世界存在种族、国家等,爱国,为国献身光荣等。用台湾某教授的说法。这个世界就是用谎言编织的世界。如果我们存在一些观念,我们就可能被触动,比如听自己的国家国歌,大概都知道情感和含义。听他国的国歌,往往只能懂个铲铲;旧时代欧洲的过来人听贝多芬命运交响曲能听出灵魂自尊,但是对于改革开放后的人,也只能听过莫名其妙。人因认知而异己,以至于历史上反复认为大清洗是必须的。 说的话成为新的世界,真的假的,它都是日常,都是核弹

    2022-06-28

  • kq yang 👍(1) 💬(3)

    实证主义的理解我有点不一样,个人觉得它侧重强调经验的完备自洽。反思也就是反过来思考是有价值的。查理·芒格说只有反过来,总是反过来才能想明白,比如我们不知道对一个人好是不是必要。那我们可以试一下把他恶心到会有什么反应。 借用深度学习和强化学习的语言。实用主义是充分利用数据分布。反思则是计算模型相对数据分布的梯度,用以探索模型改进方向。 但是说起来,反省几乎从来不是在事后进行的。对于强大到像马斯克和查理·芒格这样的人, 以及像我这样一辈子活在好奇和探索中的人而言。反省这事的大头属于事前的见识和算力所替代。 就像查理·芒格说的,如果需要后悔和反省,我希望使用别人的经验。

    2022-06-28

  • JianXu 👍(3) 💬(0)

    关于问题二: 今天出去办事,看到政府大厅里一些中共早期党员的介绍,张太雷,李大钊,邓恩铭,陈延年,何叔衡,彭湃… 我认为这就是信仰的力量。看郭老师之前的文章,其中写到去留一家企业的时候要以增长自己的能力为着眼点,也提到架构师要以实现业务价值为本。我窃以为要看发心,发心在我不如发心为人。之前也看纪录片《功勋》,忽然觉得自己十分藐小。本欲度世人,反被世人度。实现自我价值的方式是帮助别人实现价值。我觉得信仰是需要的,它帮助人找到自己,我为什么来。

    2022-07-27

  • 阳光下的孩子 👍(2) 💬(0)

    其实我想说,本质上而言践行理性思维本身也是一种信仰。人类的局限性和伟大也恰恰在于他们所坚信的东西,信仰无关乎理性,理性却可以是信仰的一种选择。“信为道源功德母”,八万四千法门,深信一门深入修行皆可成功。

    2022-07-09

  • ACK 👍(1) 💬(0)

    第一题,在都是理性思维的企业中,杠精般的感性思维给决策带来更多可能性的机会。 理性思维对当前环境做出最优的决策,但很多的决策都是有环境资源和理解深度的限制,可能是一种局部最优化的结果。 但非理性的跳跃思维可能会跳出局部最优的决策,去到另外一个决策最优环境。提高最终的决策质量。 和模拟退火算法有相似之处。

    2023-03-10

  • spark 👍(1) 💬(0)

    郭老师,take away~~~这篇信息熵有点大~~~ 实用主义,用三个段子理解。a.问题定义,通过问题定义简化问题,确定输入、基函数、输出,化繁为简、直达本质。b.博古&李德领导革命时,按照《战争论》要求精确操作步骤,实际上要求资源和能力太高。毛主席用《孙子兵法》的道和《战争论》的具体操作步骤,实用解决了问题。c.恩师给我说,"你能成功",被旁边一个朋友听到了,我沉默假装没听到,旁边朋友努力了10年~~~ 反思和分析思维,"我推断"是反思。"我认为"和"我喜欢"一般都是"坑"。分析思维需要结构化,Comparision(对比)、Logic(逻辑)、Acknowledge(认知)、Project(规划)~~~

    2022-06-28

  • Geek_rose 👍(0) 💬(0)

    我认为,实证主义和实用主义出发点和侧重点不一样。 1、都是以自己出发,认为自己最重要,另外一个只是自己的附属品,角度不同 2、两个互不冲突,实证主义是整体指导原则,永远不应该放弃实证主义和模型,我们在所有阶段始终在完善模型,但每个阶段侧重点不同。初期侧重想,通过思想实验完善模型;执行期侧重做,以实用主义为指导,通过和现实碰撞去做成,并完善模型;而且实证主义的目标之一的价值创造,执行期坚持实用主义,也是为了最大化价值创造,目标不冲突

    2024-08-14

  • 徐李 👍(0) 💬(0)

    每一种思维模式,可能都有更适合它的应用场景,不会有一种普世的思维模式贯穿所有场景。 所以提要的信仰模式,通过发起大众更认可某个观点,激发大家的积极性,在一些特定场景更有实用主义意义。

    2022-07-04