02.架构师的5点底层能力
02.架构师的5点底层能力
一名出色的架构师,需要大量的时间和项目经验喂出来。
从程序员到架构师,知道这5点一定能帮到你。
全局观
一个有全局观的人,在开始一项工作之前,会对这项工作有全面的了解,知道风险和挑战在哪里,做好心理准备。
如果我们去一个陌生的城市旅游,首先需要的是一张“地图”。这张地图让我们对城市有一个全面的认识。
无论在哪个行业,我们都需要这种全局的视野。例如,产品经理需要对产品有全局视野,运营人员和市场人员需要对运营和市场有全局视野,程序员需要对技术有全局视野。
比如我们要开发一个新系统,我们需要理解以下这些全局问题:
- 系统的定位是什么?它能创造哪些核心价值?
- 开发这个系统的背景是什么?为什么以前不做,现在要做?
- 这个系统在整个组织架构中处于什么位置?
- 与这个系统关联的其他系统现在是什么状况?
- 产品经理和技术负责人怎么看这个系统?
- 这个系统的需求是确定的,还是有很大的灰度空间?
- 这个系统所用的技术是旧的还是新的?
- 对于类似的系统,其他公司是怎么做的?
不同层次的人关注的范围不一样。例如,国家总理关注国家级别的问题,公司CEO关注公司和行业的问题,业务线负责人关注他们负责的业务,技术负责人关注技术问题,产品负责人关注产品问题,程序员关注代码问题。如果我们可以扩大自己关注的范围,这对我们的工作会有很大帮助。这就是全局观。
历史观
历史观是从时间的角度看问题。
任何一种技术都是为了解决特定问题而产生的,这个特定问题有其历史背景。之前的技术在解决这个问题时不够好,或者有副作用,所以才发明了新的技术。
当我们看待一个技术时,需要把它放在历史背景下,看它处于什么位置。这不仅适用于技术,对于任何学科来说,都需要有历史观。
在设计系统的长期演进方案时,需要结合历史观来考虑方案:
- 分析过去的项目,看看哪些设计是成功的,哪些是失败的,从中学习。经验教训。
- 考虑现有系统的问题,如技术债务、不合理的设计,避免在新方案中重复犯错。
- 回顾历史上的业务需求变化,理解业务发展规律,做出更具前瞻性的设计。
抽象思维
抽象是有层次的,从最底层到最上层,我们需要在不同的工作阶段,从不同的抽象层次中思考。
很多程序员习惯于"自底向上"的思考方式。在讨论需求时,他们首先会考虑如何实现这个需求,而不是考虑这个需求本身是否合理,或者这个需求与其他需求有何关联。
这种过早考虑"实现细节"的方式,会让我们只看到局部,最后陷入繁杂的细节中,无法把握重点。
如果要建一个新的系统,我们需要从"抽象"到"具体",考虑以下事项:
- 每个需求的合理性。
- 系统的领域模型。
- 是在旧系统上改良还是新建一个系统。
- 系统应该如何分期实施。
- 系统应该如何拆分为子系统。
- 每个子系统又应该拆分为多少个模块。
- 系统的表设计、API接口设计、Job的设计,以及系统间的消息传输如何实现。
这是一个自顶向下,逐级细化的过程。
每进入一个新的层次,就可能需要回到上一层次进行修改。
深度思考
技术每年都在更新换代,我们不可能对所有领域都非常精通,但至少需要在一个领域有深入的见解。
通过深入理解某个技术领域,养成深度思考的习惯。当面对新的技术时,这种深度思考能力可以帮助我们更好地理解新技术。同时,也能帮助我们更清楚地认识到技术风险,在项目开始之前就能发现潜在的问题。
如何判断一个人在某个领域有深度?
深入理解原理、系统性沉淀最佳实践、丰富的实战经验、持续输出、具备领域影响力,以Java技术领域为例:
- 深入理解Java的核心概念。
- 深入理解JVM的内部工作机制。
- 掌握Java性能调优。
- 基于SOLID原则、DRY原则、KISS原则、设计模式等最佳实践,写出高质量的Java代码。
- 硬核的项目经验。
- 高质量的知识分享,获得同行的认可和影响力。
落地能力
落地能力取决于很多因素。
首先,架构方案必须是可行的,不能只是停留在理论上。
作为架构师,需要监控从设计到实施的全过程,发现并及时解决问题,以确保理论和实践的一致。
其次,架构师作为项目负责人,需要管理项目中的所有潜在问题。大多时候这些问题与人相关,而不是技术。例如,不充分的沟通,组织的混乱等。我们需要意识到这些问题的存在,并找到解决的方法。
怎样提升落地能力?
- 深入理解业务目标和需求,确保架构设计能够满足业务需求,同时也具备前瞻性。
- 多参与项目,了解项目中的细节,关键问题需躬身入局,积累实践经验。
- 积极与项目管理者、开发人员和其他利益相关者的沟通协作,确保大家对设计方案形成共识,并有效执行。
- 建立反馈机制,从项目实施和运营中获得反馈,不断学习、调整和优化架构方案。
写在最后
优秀的架构师需要具备全局观、历史观、抽象思维、深度思考和落地能力。
全局观帮助架构师全面理解工作。
历史观让架构师从时间角度看问题。
抽象思维能让架构师从不同的抽象层次思考问题。
深度思考则让架构师在某个领域有深入的见解。
落地能力要求架构师能将理论转化为实践,解决实际问题。