当前位置: 首页 > 科技观察

为什么90%的“coder”都做不了“architects”?

时间:2023-03-15 16:42:44 科技观察

选择有时比努力更重要。真正厉害的人,不只是努力工作,而是用好的思维方式和好的方法,看透事物的本质,顺势而为,找到事物的最优解。并且知道如何从一个实例推断出其他情况。ImageviaPexels架构师是程序员的目标之一,但大多数程序员都未能成为架构师。一个真正厉害的架构师到底有什么样的思维方式,他的强项在哪里?今天,韩帅就为大家揭秘。世界上所有的道理都是一样的,有些道理惊人的相似,比如模型思想家和建筑师。《模型思考者》是密歇根大学教授斯科特佩奇的一本书。本书的目的是教大家如何认识和应对这个复杂的世界。目前本书中文版尚未正式出版,万维钢铁精英日常课共15讲。本文为读书笔记,内容来源于荣华老师的文章,以及万维钢铁精英日常课上《模型思考者》的讲解,结合自己的一些理解和思考。学完这些,我的学习和成长就有了框架和方向。如果觉得很有收获,可以阅读原著。欢迎留言区交流。什么是建筑?ISO/IEC42010:20072中对体系结构的定义如下:系统的基本组织,体现在其组件、它们之间的关系和环境,以及管理其设计和演变的原则。ISO/IEC42010定义这里架构的三个要素:具有明确职责的模块或组件。明确组件之间的关系约束和指南。定义越简单、越抽象,它就越美观、越通用。这些内容可以隐含在小到玩具,大到国家运作的任何事物中。举两个简单的例子,看看它们的三要素是什么。软件架构:模块:模型,领域关系:一对一,一对多(模型);依赖(域)原则:单一职责、开闭原则、里氏替换原则等组织结构:模块:部门关系:管理或报告原则:各种管理原则和财务原则从不同角度丰富架构定义:原则架构简单,但不能有遗漏。建筑的目的是解决问题。问题的规模可以大到国家战略问题、经济问题、民生问题,也可以小到如何用笔吐出均匀的墨水;就时间而言,它可以是眼前的问题,也可以是预计将来会发生的问题。架构不是一成不变的,它只适用于特定的场景。过去的架构未必适合现在,现在的架构未必能预知未来。什么是建筑师?架构师是一个角色。定义角色实际上就是定义职责。架构师的职责是:识别和定义问题,创建、选择或调整架构,从而找到最优方案并解决问题。这其实是架构师做事的一般方式:定义问题→确定架构→提出方案→得到结果。这四个步骤中,前面的步骤越多越重要,越抽象,难度越大,越能体现架构师的功力。什么是问题问题的定义很广泛,是或不是?那是个问题。晚上想吃烧烤吗?这也是一个问题。架构师常说,我的架构解决了什么问题?这里的问题不是一般性的问题,而是马克思哲学中的一个具体矛盾(矛盾的定义也很广泛,注意这是马克思哲学中的矛盾)。问题是事物的矛盾。哪里有矛盾不解决,哪里就有问题。——毛泽东一切事物都是矛盾的统一体,矛盾是事物发展的源泉和动力。——马克思主义建筑师要界定和解决的问题是特定领域的矛盾。矛盾解决了,发展就实现了,利益就获得了。既然建筑师眼中的问题就是马克思哲学中的矛盾,那么我们就可以从马克思哲学中学到一种系统的界定问题的方法,比如把矛盾分为主要矛盾和次要矛盾。主要矛盾是指在事物发展中处于支配地位、对事物发展起决定作用的矛盾;次要矛盾是指处于从属地位,对事物发展不起决定作用的矛盾;在一定条件下相互转化。当我们面对复杂的问题时,我们必须不断地反思。这是主要问题吗?是目前最重要的问题吗?如何区分问题、手段和挑战?我们在报道或宣传的时候,经常会谈到问题、手段、挑战,但这些概念总是混淆在一起,很难分清一件事是问题还是手段。其实问题、手段、挑战都是一样的东西,都是矛盾的,只是在不同的层次上,比如:每个问题都可以不断向下扩展和细化,下一层的问题就是具体的解决方案上一层的问题。当你把“提升性能”当成你的Owner的问题时,提高帧率、秒级提升页面打开率、优化启动时间就成了你的具体解决方案。该方法的下一级问题是您将面临的挑战。例如,如果你想优化网络时间,你将面临的挑战包括网络环境较弱、部分国家和地区的带宽问题等等。同理,当你把“提升用户体验”当成你Owner的问题时,“提升性能”就成了你的具体手段,帧率、秒开率、启动时间就成了挑战。如何定义问题我们面临的重大问题,无法用我们创造它们时的思维水平来解决。——爱因斯坦荣华老师将爱因斯坦的思维定义为上升思维:我们不能仅仅局限于问题本身,也需要看到问题背后的问题,才会更容易找到更多的解决方案。亨利福特说,如果我问顾客他们想要什么,他们告诉我他们需要一匹更快的马。从亨利·福特的话中,我们可以提炼出一个最直接的问题:客户需要一匹更快的马。基于这个问题本身寻找解决方案可能永远不会得出令人满意的答案:寻找更好的品种和更科学的训练马匹的方法。思考问题背后的问题,为什么客户需要一匹更快的马?也许客户想要一种更快的日常交通方式。升到一个级别后,我们马上找到了更好的解决方案:造车。看完这段话,相信你不仅了解什么是架构师,也了解架构师的工作套路和思维方式。什么是模型?《模型思考者》中模型的定义如下:模型是对现实世界的抽象,明确定义了各种元素以及元素之间的关系,可以用于逻辑推导。对比架构和模型三要素的定义,相同点是都有元素(组件)和元素(组件)之间的关系。不同的是,架构强调约束和指导原则来指导我们如何做事;该模型强调逻辑推导的能力,以指导我们在现有法律下寻找答案或寻求最佳解决方案。举个用模型解决问题的例子:如果你是一名高中班主任,想增加班级考试成绩大于90的人数,你应该怎么办?首先,找到合适的模型。有两个关键要素:考试成绩和相应的学生人数。这两个要素之间的关系是一个正态分布函数,所以应该使用正态分布模型。然后用模型做推导,找到问题的最优解。正态分布函数有两个关键变量:均值和方差。只要确定了这两个变量,正态分布就唯一确定了。要增加班级中测试分数大于90的人数,我们有两个选择,增加均值或增加方差。即使忽略增加方差的负面影响(成绩差的学生更多),增加方差的正面影响也远小于增加均值的正面影响,尤其是当均值接近90分时,即使均值增加1分,90分以上的人有很大的提升。最后根据推导结果,确定具体的实施方案。放弃增加方差的方法,比如对成绩好的学生给予特殊照顾,把成绩差的学生调到后排。多采取提高平均分的方法,如培养班级的学习氛围,成立学习小组等。什么是模型思考者?参考架构师,用模型思考者做事的方式来定义:面对问题,他们能够看透客观事物的本质,选择或构建合适的模型,推导出问题的最优解。正如架构和模型的定义相似但侧重点不同一样,架构师和模型思考者的定义相似但侧重点不同。架构师的重点是定义问题,解决问题,推动事物的发展;模式思考者的重点是看透事物的本质,遵循规律,寻找最优解。接下来,我将介绍几个令人惊叹的模型:认知模型(CognitivePyramid)该模型揭示了认知的本质,并给出了提高认知的最佳实践。模型解释:金字塔的底部是数据。数据代表各种事件和现象。数据本身没有组织、结构或意义。数据只能告诉你发生了什么,而不能告诉你为什么会发生。数据之上的一层是信息。信息是结构化数据。信息对分析和解释很有用。信息的下一个层次是知识。知识组织信息并告诉我们事件之间的逻辑联系。知道云会导致下雨,因为下雨天气会变凉。成语、典故、思维套路都是知识。模型可以说是一种高深的知识,可以解释一些事情,做出预测。认知金字塔的顶层是智慧。智慧是认识和选择相关知识的能力。你可能掌握了很多模型,但是具体到这个问题用哪个模型,你敢不敢用这个模型就是见仁见智了。来源:获取付费课程《精英日课》作者:万维钢铁模型应用:信息焦虑:信息时代,很多人都有信息焦虑。他们害怕自己会被时代淘汰,因为他们每天阅读的信息不够多。新的资料,来不及想总结,结果随着资料遗忘,什么都没有了。其实跟资料比起来,并没有那么多型号。我们应该花更多的时间总结模型,明确模型的使用范围(智慧)。数据分析:开发一个功能后,添加一些埋点,运行SQL获取数据,做报表获取信息。对报告的分析是知识。反思一下自己,有多少埋点还没有运行数据,有多少数据还没有结构化为信息?有多少信息没有被分析?说到桥水基金的赚钱方法:不断收集市场数据,用计算机处理数据抽象模型,根据模型自动做出投资决策。计算机的这种行为不就是思维模式吗?索洛模型(经济增长模型)是获得诺贝尔经济学奖的模型,揭示了经济增长的本质。模型解释(摘自GetEliteDaily):O代表经济产出,A代表技术进步,L代表劳动力,s代表储蓄率,d代表折旧率。O与L线性相关:索洛认为劳动力有两个功能:他们不仅要到工厂打工,还要拿到工资,拿到工资后会存钱,存下来的钱可以用于投资。经济产出与劳动力的工作量之间存在平方根关系,与劳动力的投资也存在平方根关系,因此与劳动力本身成正比。O与A平方:你的技术更先进,你的产出比别人的产出更有价值。A代表你的技术附加值。为什么经济产出与A2成正比?因为A有两个作用。一种是A可以直接增加产出,另一种是因为A增加了产出,相对于同样的折旧,投资也会增加。如果你能将你的技术附加值翻一番,你的总产出就会翻两番。来源:GetPaidCourse《精英日课》作者:万维钢铁模型应用:单纯的投资行为会被折旧平均化,这是一个边际效应递减的过程,是不可持续的。劳动力对经济增长的影响是线性的,而技术进步的影响是方形的。面对我国的人口问题,追求技术进步是唯一的出路,而技术进步才是增长的真正基础。其他模型里面还有很多很多模型《模型思考者》,每个模型都有详细的解释,以及模型的适用场景。例如:适用于营销和病毒传播领域的“传播模型”,研究稳态和“命运”的“马尔可夫模型”。有兴趣的可以去看看原著。总而言之,架构师和模型思考者是两种非常相似的做事方式。对于正在研究的系统:当我们可以修改系统的时候,我们可以用架构师的思维来定义问题,解决问题,一步步推动系统的完善。当我们无法影响系统的运行机制时,我们必须用模型思考者的思维,洞察其本质,顺势而为,寻找最优解。参考文章:荣华老师多篇文章点击“阅读原文”在线阅读万维钢铁精英日常教程,《模型思考者》系列