42

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

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzIzOTU0NTQ0MA%3D%3D&%3Bmid=2247492265&%3Bidx=1&%3Bsn=e60758c11a9e540ffaf201406d4cc2ff
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

amm6Rfe.jpg!web

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

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

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

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

NF36Bvi.png!web

一、什么是架构?

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

6R3iyev.jpg!web

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

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

  • 组件间明确的关联关系

  • 约束和指导原则

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

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

软件架构

UzQBnqJ.jpg!web

  • 模块:模型、域

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

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

组织架构

Qv2quqm.png!web

  • 模块:部门

  • 关系:管理 or 上报

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

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

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

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

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

二、什么是架构师?

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

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

1.什么是问题?

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

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

——毛泽东

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

——马克思

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

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

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

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

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

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

VRjeMrM.jpg!web

每一个问题可以向下不断展开不断细化,下一级的问题是上一级问题的具体解决手段,当你把“提升性能”当做你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.认知模型(认知金字塔): 这个模型揭示的是认知的本质,给出了一条提升认知的最佳实践。

Uji6vu6.jpg!web

模型解释:

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

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

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

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

来源:得到付费课程《精英日课》 作者:万维钢

模型的应用:

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

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

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

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

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

buq6zqA.jpg!web

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

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

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

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

来源:得到付费课程《精英日课》 作者:万维钢

模型的应用:

  • 单纯的投资行为,会被折旧追平,是边际效应递减的过程,不可持续

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

3.其他的模型:

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

五、总结

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

参考文章:

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

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

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

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

NF36Bvi.png!web

你可能还喜欢

点击下方图片即可阅读

eMjeYbQ.jpg!web

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

VVFJZf7.jpg!web

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

7rAJ3qQ.jpg!web

关注 「阿里技术」

把握前沿技术脉搏

Vvq2e2a.gif

戳这里,听阿里资深技术专家说架构。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK