为什么大部分人做不了架构师?这2点是关键

article/2025/9/8 19:17:56


阿里妹导读:选择有时候比努力重要,真正厉害的人不仅仅是埋头苦干,而是会利用好的思维方式、好的方法,看穿事物的本质,顺势而为,找到事情的最优解,并懂得举一反三。架构师是程序员的目标之一,但大多数程序员无法成为架构师。真正厉害的架构师具备什么样的思维方式,到底强在哪?今天,韩帅为你揭秘。


韩帅的其他文章:《架构整洁之道,看这一篇就够了!》

世界上所有的道理都是相通的,而有一些相似到令人吃惊,模型思考者和架构师就是如此。《模型思考者》是密西根大学教授 斯科特·佩奇 的一本书,这本书的目的是教大家如何理解和应对这个复杂的世界。目前这本书的中文版还没正式出版,得到 万维钢精英日课中有15节课程讲解。


这一篇文章是篇读书笔记,内容来自荣华老师的文章,还有万维钢精英日课中对《模型思考者》的讲解,结合一些自己的理解和思考。学习了这些后,我的学习和成长都有了框架有了方向,如果你觉得很有收获,可以阅读原著,欢迎留言区交流。荣华老师的原文还未正式发布,这里在荣华老师同意下,节选了部分内容,识别下方二维码或点击文末“阅读原文”,即可阅读,供大家参考、学习。

一、什么是架构?

ISO/IEC 42010:20072 中对架构的定义如下:

The fundamental organization of a system, embodied in its components, their relationships to each other and the enviroment, and the principles governing its design and evolution.
ISO/IEC 42010

这里定义了架构的三要素:

  • 职责明确的模块或者组件

  • 组件间明确的关联关系

  • 约束和指导原则

越是简单抽象的定义,越是美,越是通用。小到一个玩具,大到一个国家的运作都可以隐含着这样的内容。

举两个简单的例子,我们来一起看他们的三要素分别是什么。

软件架构

  • 模块:模型、域

  • 关系:一对一、一对多(模型);依赖(域)

  • 原则:单一职责、开闭原则、里氏替换原则等等

组织架构

  • 模块:部门

  • 关系:管理 or 上报

  • 原则:各种管理原则、财务原则

从不同的角度来丰富架构的定义:

  • 架构的原则是简单,但不能有遗漏;

  • 架构的目的是解决问题。问题的尺度上,可以大到国家战略问题、经济问题、民生问题,也可以小到一只钢笔如何均匀地吐墨;时间上,可以是当下的问题,也可以是预期以后会发生的问题;

  • 架构不是一成不变的,它只适合于特定的场景。过去的架构不一定适合现在,当下的架构不一定能预测未来。


二、什么是架构师?

架构师是一个角色,定义角色其实是定义职责,架构师的职责是:识别并定义问题,创建、选择或调整架构,从而找到最优的方案,解决问题。

这其实也是架构师做事的一般套路:定义问题->确定架构->提出方案->落地拿结果。这四步中,越是前面的步骤,越是重要,越是抽象,也越是困难,越能体现架构师的功力。

1.什么是问题?

问题的定义很宽泛,生存或是毁灭?这是一个问题。晚上去吃烧烤不?也是一个问题。架构师常说,我的架构解决了什么问题,这里的问题不是一般性的问题,而是特指马克思哲学中的矛盾(矛盾的定义也很宽泛,注意这里是马克思哲学中的矛盾)。

问题就是事物的矛盾。哪里有没有解决的矛盾,哪里就有问题。

——毛泽东

任何事物都是作为矛盾统一体而存在的,矛盾是事物发展的源泉和动力。

——马克思

架构师要定义和解决的问题,就是特定领域中的矛盾,解决了矛盾,就得到了发展,取得了收益。

关于问题本质的更多解读,请阅读附录部分荣华老师的原文:如何自顶向下构建架构(进阶之路)。

既然架构师眼中的问题就是马克思哲学中的矛盾,我们就可以从马克思哲学中学习定义问题的系统方法,比如矛盾分主要矛盾、次要矛盾。主要矛盾指:在事物发展过程中处于支配地位,对事物发展起决定作用的矛盾;次要矛盾指:处于从属地位、对事物发展不起决定作用的矛盾;主次矛盾相互依赖、相互影响,并在一定条件下相互转化。

当我们面对复杂的问题时要不断反思,这是不是主要问题?是不是当下最主要的问题?

2.如何区分问题、手段、挑战

我们述职或晋升时常常要说问题、手段、挑战,但这些概念总是混淆在一起,很难区分一件事情是问题还是手段。其实问题、手段、挑战都是一回事,都是矛盾,只是层次不同。比如:

每一个问题可以向下不断展开不断细化,下一级的问题是上一级问题的具体解决手段,当你把“提升性能”当做你Owner的问题时,提升帧率、提高页面秒开率、优化启动耗时就成为了你的具体解决手段;而手段的下一级问题,就是你将面临的挑战,比如你要优化网络耗时,你要面临的挑战就有弱网环境、一些国家区域的带宽问题等等。同理,当你把“提升用户体验”当做你Owner的问题,“提升性能”就变成了你的具体手段,帧率、秒开率、启动耗时就成为了挑战。

3.如何定义问题

The significant problems we face cannot be solved at the same level of thinking we were at when we created them.——爱因斯坦

荣华老师把爱因斯坦这种思想定义为升层思考:我们不能只局限于问题本身,还需要看到问题背后的问题,然后才能更容易找到更多的解决方案。

亨利福特说,如果我问客户需要什么,他们会告诉我,他们需要一匹更快的马。从亨利福特的这句话,我们可以提炼出一个最直接的问题:客户需要一匹更快的马。立足这个问题本身去找解决方案,可能永远交不出满意的答卷:寻找更好的品种,更科学的训马方式。

思考问题背后的问题,为什么客户需要一匹更快的马?可能客户想要更快的日常交通方式,上升了一个层次后,我们立刻找到了更好的解决方案:造车。

阅读了本段内容,相信你不仅仅理解了什么是架构师,也理解了架构师的做事套路和思考方式。

三、什么是模型?

《模型思考者》中对模型的定义是这样的:

模型是对真实世界的抽象,明确定义了各种元素、以及元素之间的关系,可以用来做逻辑推导。

对比架构三要素和模型的定义,相同点是都有元素(组件),以及元素(组件)间的关系。不同的是,架构强调约束和指导原则,用来指导我们如何做事;模型强调逻辑推导能力,指导我们在现有规律下寻找答案或寻求最优解。

举个使用模型解决问题的例子:如果你是一位高中班主任,想要提高班级中考试成绩大于90分的人数,你应该怎么做?

首先要找到正确的模型。关键元素有两个:考试成绩、相应的学生人数,这两个元素之间的关系是正态分布函数,所以应该使用的是正态分布模型。

然后使用模型做推导,找到问题的最优解。正态分布函数有两个关键变量:均值、方差,只要这两个变量确定了,正态分布就唯一确定了。想要提高班级中考试成绩大于90分的人数,我们有两个选择,提高均值,或者提高方差。即使忽略提高方差带来的负面影响(成绩差的同学也更多了),提高方差带来的正面影响也远远逊色于提高均值,特别是当均值接近90分时,均值哪怕提高1分,大于90分的人数都有巨大提升。

最后根据推导结果,确定具体落地方案。放弃提高方差的方法,比如给成绩好的同学特别的照顾,把成绩不好的同学座位调到后排。多采取提升均值的方法,比如培养班级的学习氛围,成立学习小组等等。

四、什么是模型思考者?

参考架构师,用模型思考者的做事方式来给它下定义:面对问题,能看穿客观事物的本质,选取或构建合适的模型,推导出问题的最优解。

就像架构和模型的定义类似,只是突出的重点不同一样,架构师和模型思考者的定义也很类似,重点也不同。架构师的重点是定义问题、解决问题、推动事物发展;模型思考者的重点是看穿事物的本质,遵循规律,找到最优解。

接下来介绍几个惊艳的模型:

1.认知模型(认知金字塔):这个模型揭示的是认知的本质,给出了一条提升认知的最佳实践。

模型解释:

金字塔的最底层是数据。数据代表各种事件和现象。数据本身没有组织和结构,也没有意义。数据只能告诉你发生了什么,并不能让你理解为什么会发生。

数据的上一层是信息。信息是结构化的数据。信息是很有用的,可以用来做分析和解读。

信息再往上一层是知识。知识能把信息组织起来,告诉我们事件之间的逻辑联系。有云导致下雨,因为下雨所以天气变得凉快,这都是知识。成语典故和思维套路都是知识。模型,则可以说是一种高级知识,能解释一些事情,还能做预测。

认知金字塔的最上一层,是智慧。智慧是识别和选择相关知识的能力。你可能掌握很多模型,但是具体到这个问题到底该用哪个模型,敢不敢用这个模型,就是智慧。

来源:得到付费课程《精英日课》 作者:万维钢
模型的应用:
  • 信息焦虑:处在信息时代,很多人都有信息焦虑,生怕自己每天阅读的信息不够多而被时代抛下,每天疲于输入新的信息,没时间思考总结,结果随着信息的遗忘,什么也没留下。其实相比于信息,模型并没有那么多,我们应该花更多的时间总结模型,明确模型的使用范围(智慧)。

  • 数据分析:开发完一个功能,加一些埋点,跑sql能拿到数据,做报表能拿到信息,针对报表所做的分析属于知识。反思一下自己,有多少埋点还没跑数据,有多少数据还没结构化为信息?多少信息还没做分析?多少分析还没做下一步决策?

  • 指导投资:DALIO 的《原则》一书中提到了桥水基金挣钱方法:不断采集市场数据,使用计算机加工数据抽象模型,根据模型自动做投资决策。计算机的这个行为,不就是模型思考者吗?


2.索洛模型(经济增长模型)

这是个拿了诺贝尔经济学奖的模型,揭示的是经济增长的本质。

模型解释(摘抄自得到精英日课):

O代表经济产出,A代表技术进步,L代表劳动力,s代表储蓄率,d代表折旧率。

O与L成线性关系:索洛考虑劳动力有两个作用:他们不仅仅是去工厂上班工作,他们还要拿工资,拿了工资会存钱,存的这个钱可以用来投资。经济产出跟劳动力工作是平方根关系,跟劳动力的投资也是平方根关系,所以跟劳动力本身就成了正比关系。

O与A成平方关系:你的技术更先进,你的产出就比别人的产出更值钱 —— A 代表了你的技术附加值。为什么经济产出和 A² 成正比?因为 A 有两个效应。一个是 A 能直接增加产出,一个是因为 A 增加了产出,会导致相对于同样的折旧,投资也会增加。如果你能把技术附加值变成两倍,你的总产出就会变成四倍。

来源:得到付费课程《精英日课》 作者:万维钢
模型的应用:
  • 单纯的投资行为,会被折旧追平,是边际效应递减的过程,不可持续

  • 劳动力对经济增长的影响是线性的,但是技术进步的影响是平方的,面对我国人口问题,追求技术进步是唯一出路,技术进步是真正的增长之本。


3.其他的模型:

《模型思考者》中有许多许多模型,每个模型有详细的解释,以及模型的适用场景,比如:适用于市场营销、病毒传播领域的“传播模型”,研究稳态与“宿命”的“马尔可夫模型”,大家感兴趣可以阅读原著。

五、总结

架构师和模型思考者是非常相似的两套做事方法,对于所研究的系统,当我们可以对系统做修改时,可以用架构师思维,定义问题、解决问题,推动系统一步步完善;当我们无法影响系统运行机制时,要用模型思考者思维,洞见其本质,顺势而为,找到最优解。

参考文章:

荣华老师的多篇文章<识别下方二维码或文末“阅读原文”即可在线阅读>

万维钢精英日课,《模型思考者》系列课程

阿里资深技术专家如何说架构?


如何自底向上推导应用逻辑架构?如何自顶向下构建架构?识别下方二维码或点击“阅读原文”看阿里资深技术专家张荣华怎么说。


你可能还喜欢
点击下方图片即可阅读

支付宝技术双11答卷:没有不可能


给 AI 讲故事,如何教它脑补画面?



关注「阿里技术」
把握前沿技术脉搏
戳这里,听阿里资深技术专家说架构。

http://chatgpt.dhexx.cn/article/TxJuXP6y.shtml

相关文章

豆瓣最高评分8.1!万维钢:读懂这本书,你会比身边人更深的理解这个时代

▲ 数据汪特别推荐 点击上图进入玩酷屋 小木用真金白银来给大家送礼物啦&#xff0c;特别感谢这些年一直以来大家对我们的支持&#xff0c;才让我们越做越好。&#xff08;点我参与送礼活动&#xff09; 这几年全球各大科技巨头纷纷进入人工智能领域&#xff0c;催生了一大批技…

万维钢解读,从数学上解释为什么绝大多数投资者都会输给市场?最可能值,远远小于平均值...

万维钢解读&#xff0c;从数学上解释为什么绝大多数投资者都会输给市场&#xff1f;最可能值&#xff0c;远远小于平均值。 咱们来思考一个数学问题。这个数学问题有助于我们理解一个看似有点反常识的道理&#xff0c;那就是为什么绝大多数投资者都会输给市场? 如果你去考察华…

你有你的计划,世界另有计划这本书 万维钢

你有你的计划而世界另有计划 首先推荐万维钢著作&#xff0c;免费领取&#xff1a;《《高手》万维钢 电子书》。 今天有个好消息&#xff0c;我的新书《你有你的计划&#xff0c;世界另有计划》马上就要开始独家首发了。今天就把这本书的序言更新到这里&#xff0c;题目叫《欢…

买知识,也别冲动消费

前方有坑&#xff0c;告诉你一声 付费 知识变得值钱了。 其实知识本来就值钱。咨询专家给普通人的印象就是西装革履、坐头等舱、住五星酒店。他们卖的是什么&#xff1f;知识。 可是网上浩如烟海的文章&#xff0c;不都可以免费读吗&#xff1f;多年来&#xff0c;我们已习惯了…

又订阅了万维刚的精英日课

订阅他的栏目是因为以前看过他写的《 万万没想到》这本书&#xff0c;他看的书相当多&#xff0c;有大量的英文书&#xff0c;所以他的栏目肯定能够让人每天进步一点点。 把他几天课的主要笔记整理一下&#xff1a; 马斯洛的需求层次理论 通常都说是五层&#xff1a;&#xff1…

精确休息法——《万维钢.精英日课3》笔记

如果发现自己午睡后效果不好&#xff0c;那就需要对休息进行精确控制&#xff1a; 1&#xff0c;先喝杯咖啡&#xff0c;咖啡因含量200mg 2&#xff0c;手机设定25分钟定时 3&#xff0c;开始睡&#xff1b; 4&#xff0c;25分钟一到马上起来。 原理&#xff1a; 1&#x…

B树与B+树的区别!!

B树结构如图&#xff1a; B数的结构如图 根据图可以知道&#xff1a; 1.在B树中叶子节点和非叶子节点上都存储了数据&#xff0c;而B树只是在叶子节点上面存储了数据&#xff0c;并且叶子节点之间是使用双向链表连接起来的&#xff0c;适合范围查询。 2.B树和B树都是在二叉树…

B树、B+树

B树与B树的区别在于&#xff1a; 1&#xff09;在B树中&#xff0c;具有n个关键字的节点只含有n棵子树&#xff0c;即每个关键字对应一颗子树&#xff1b;而在B树中&#xff0c;具有n个关键字的节点有n1棵子树 2&#xff09;B树&#xff1a;每个节点&#xff08;非根节点&…

红黑树、b+树、b树、mysql索引详细剖析

文章目录 树基础知识回顾红黑树b树、b树为什么不能使用二叉树来存储数据库索引B/B树的索引数量 索引什么是聚簇&#xff08;集&#xff09;索引&#xff1f;mysql聚簇和非聚簇索引的区别b树和哈希索引二级索引二级索引存储主键值而不是存储行指针的优点与缺点 树基础知识回顾 …

B树

B树的定义 flyfish 2015-7-15 B-树即为B树。因为B树的原英文名称为B-tree&#xff0c;因为翻译的不统一所以B树和B-树都是B-tree。 B树定义 引用自严蔚敏《数据结构》&#xff08;C语言版&#xff09; B树是一种平衡的多路查找树 定义&#xff1a;一棵m 阶的B树&#xff0…

B树详解

B树 B树&#xff0c;一般都被叫做B-树。 定义 B树中的每个节点的元素和子树数量是有限的&#xff0c;除了根节点外&#xff0c;所有节点最多拥有M-1个元素&#xff0c;所有非叶子非根节点最多拥有M个子树,即为M阶树。根节点至少拥有两个子树&#xff0c;除了根节点之后的非叶…

MySQL索引底层实现原理(B树和B+树)

文章目录 一、B-树索引1. 理论部分2. B树黄色的data表示key索引所在的这一行的数据&#xff0c;data存储的是数据本身内容&#xff0c;还是数据在磁盘上的地址&#xff1f;关于操作系统从磁盘读取索引文件到内存中的几个问题B树的缺点 三、B树B树特点MySQL最终为什么要采用B树存…

B树概念和插入实现

目录 前言 一.B树概念 1.1 概念和性质 1.2 分裂 二.插入的实现 三.性能分析 四.B树的删除 五.B树的优化B树和B*树 5.1 B树 5.2 B*树 六.B树的应用 6.1 MyISAM中的索引 6.2 Innodb引擎 前言 之前我们学了有很多数据结构&#xff0c;比如顺序表&#xff0c;链表&#xff0c;…

MySQL索引(B树、B+树)

目录 简介索引结构&#xff08;树&#xff09;为什么用树&#xff0c;而不用哈希表BTree索引BTree索引聚簇索引与非聚簇索引 索引分类性能分析索引创建场景 简介 MySQL官方对索引的定义为&#xff1a;索引&#xff08;Index&#xff09;是帮助MySQL高效获取数据的数据结构。可…

MySQL B+树相对于B树的区别及优势:

部分参考&#xff1a;B树和B树的区别 MySQL为什么使用树结构&#xff1f; 文件很大&#xff0c;不可能全部存储在内存中&#xff0c;故要存储到磁盘上索引的结构组织要尽量减少查找过程中磁盘I/O的存取次数&#xff08;为什么使用B-/Tree&#xff0c;还跟磁盘存取原理有关&am…

B树索引

B-Tree索引是最常见的索引结构&#xff0c;如oracle和mongodb的索引都是B-Tree&#xff0c;而mysql的索引类型是BTree 一、B树索引的结构 B-树索引是基于二叉树结构的。B-树索引结构有3个基本组成部分&#xff1a;根节点、分支节点和叶子节点。其中根节点位于索引结构的最顶端…

什么是B树

1.什么是B树 B树又称为多路平衡查找树&#xff0c;B树中所有结点的孩子节点数的最大值称为B树的阶&#xff0c;通常用m表示。 2.B树的特性 一颗m阶B树或为空树&#xff0c;或为满足如下特性的m叉树&#xff1a; 1&#xff09;树中每个结点至多有M棵子树&#xff08;即至多含有…

图解B树构建过程

1.B树结构同时满足以下特性 每个节点最多包含n个孩子&#xff0c;即n叉树&#xff1b;除了根节点和叶子节点外&#xff0c;每个节点至少有ceil(n/2)个孩子&#xff08;ceil是向上取整&#xff09;&#xff1b;若根节点不是叶子节点&#xff0c;则至少有两个孩子&#xff1b;所…

了解B树的删除

文章目录 1. 删除操作第一种情况第二种情况第三种情况 2. C示例3. 删除复杂度参考文档 在本教程中&#xff0c;您将学习如何从B树中删除键。此外&#xff0c;您还可以找到C语言的示例。     删除B树上的元素包括三个主要事件&#xff1a;搜索要删除的键所在的节点、删除键和…

B树的插入、删除操作

一、简介 B树是什么&#xff1f; 1970年&#xff0c;R.Bayer和E.mccreight提出了一种适用于外查找的树&#xff0c;它是一种平衡的多叉树&#xff0c;称为B树&#xff08;或B-树、B_树&#xff09;。 一棵m阶B树(balanced tree of order m)是一棵平衡的m路搜索树。它或者是空树…