为什么90%的“码农”做不了“架构师”?
副标题[/!--empirenews.page--]
选择有时候比努力重要,真正厉害的人不仅仅是埋头苦干,而是会利用好的思维方式、好的方法,看穿事物的本质,顺势而为,找到事情的最优解,并懂得举一反三。 图片来自 Pexels 架构师是程序员的目标之一,但大多数程序员无法成为架构师。真正厉害的架构师具备什么样的思维方式,到底强在哪?今天,韩帅为你揭秘。 世界上所有的道理都是相通的,而有一些相似到令人吃惊,模型思考者和架构师就是如此。 《模型思考者》是密西根大学教授斯科特·佩奇的一本书,这本书的目的是教大家如何理解和应对这个复杂的世界。 目前这本书的中文版还没正式出版,得到万维钢精英日课中有 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 上报 原则:各种管理原则、财务原则 从不同的角度来丰富架构的定义: 架构的原则是简单,但不能有遗漏。 架构的目的是解决问题。问题的尺度上,可以大到国家战略问题、经济问题、民生问题,也可以小到一只钢笔如何均匀地吐墨;时间上,可以是当下的问题,也可以是预期以后会发生的问题。 架构不是一成不变的,它只适合于特定的场景。过去的架构不一定适合现在,当下的架构不一定能预测未来。 什么是架构师? 架构师是一个角色,定义角色其实是定义职责,架构师的职责是:识别并定义问题,创建、选择或调整架构,从而找到最优的方案,解决问题。 这其实也是架构师做事的一般套路:定义问题→确定架构→提出方案→落地拿结果。 这四步中,越是前面的步骤,越是重要,越是抽象,也越是困难,越能体现架构师的功力。 什么是问题 问题的定义很宽泛,生存或是毁灭?这是一个问题。晚上去吃烧烤不?也是一个问题。 架构师常说,我的架构解决了什么问题,这里的问题不是一般性的问题,而是特指马克思哲学中的矛盾(矛盾的定义也很宽泛,注意这里是马克思哲学中的矛盾)。 问题就是事物的矛盾。哪里有没有解决的矛盾,哪里就有问题。 ——毛泽东 任何事物都是作为矛盾统一体而存在的,矛盾是事物发展的源泉和动力。 ——马克思 架构师要定义和解决的问题,就是特定领域中的矛盾,解决了矛盾,就得到了发展,取得了收益。 既然架构师眼中的问题就是马克思哲学中的矛盾,我们就可以从马克思哲学中学习定义问题的系统方法,比如矛盾分主要矛盾、次要矛盾。 主要矛盾指在事物发展过程中处于支配地位,对事物发展起决定作用的矛盾;次要矛盾指处于从属地位、对事物发展不起决定作用的矛盾;主次矛盾相互依赖、相互影响,并在一定条件下相互转化。 当我们面对复杂的问题时要不断反思,这是不是主要问题?是不是当下最主要的问题? 如何区分问题、手段、挑战 我们述职或晋升时常常要说问题、手段、挑战,但这些概念总是混淆在一起,很难区分一件事情是问题还是手段。 其实问题、手段、挑战都是一回事,都是矛盾,只是层次不同,比如: 每一个问题可以向下不断展开不断细化,下一级的问题是上一级问题的具体解决手段,当你把“提升性能”当做你 Owner 的问题时,提升帧率、提高页面秒开率、优化启动耗时就成为了你的具体解决手段。 而手段的下一级问题,就是你将面临的挑战,比如你要优化网络耗时,你要面临的挑战就有弱网环境、一些国家区域的带宽问题等等。 同理,当你把“提升用户体验”当做你 Owner 的问题,“提升性能”就变成了你的具体手段,帧率、秒开率、启动耗时就成为了挑战。 如何定义问题 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 分的人数都有巨大提升。 最后根据推导结果,确定具体落地方案。放弃提高方差的方法,比如给成绩好的同学特别的照顾,把成绩不好的同学座位调到后排。多采取提升均值的方法,比如培养班级的学习氛围,成立学习小组等等。 什么是模型思考者? 参考架构师,用模型思考者的做事方式来给它下定义: 面对问题,能看穿客观事物的本质,选取或构建合适的模型,推导出问题的最优解。 就像架构和模型的定义类似,只是突出的重点不同一样,架构师和模型思考者的定义也很类似,重点也不同。 架构师的重点是定义问题、解决问题、推动事物发展;模型思考者的重点是看穿事物的本质,遵循规律,找到最优解。 接下来介绍几个惊艳的模型: 认知模型(认知金字塔) 这个模型揭示的是认知的本质,给出了一条提升认知的最佳实践。 (编辑:武汉站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |