业界对于架构师一直存在一些误解,在很多具体实践中,也存在这样的情况:一方面对架构设计工作不重视,拿到需求,几乎没有任何设计,一上来就写代码;另一方面随着需求不断迭代,项目逐渐失控陷入混乱,又开始埋怨当初没有好好做设计。
不过,也能理解为什么会存在这样的误解。毕竟,编程和架构几乎是完全不同的两项工作,并不是你有了多年编程经验就能自动获得架构设计的能力,就能成为架构师。
称为架构师的难点
成长为一个架构师,主要的困难在于:
- 你是否在编程这件事上表现出足够的优秀,从而获得做架构的机会。
- 你是否掌握架构设计的一般方法,能够把握好做架构设计的机会。
- 你是否拥有足够的关于系统架构设计的知识储备,能够在软件架构的生命周期以及你自己的职业生涯中,不断迭代进步,使你负责的系统和你自己的职业前景都变得越来越好。
因为做架构师需要全局思考各种技术、业务、资源要求,根据要求,寻找最合适的架构方案,而不是只完成开发工作就行的。如果你没有从架构师的角度思考问题,带领团队,整体完成一个系统的架构设计与开发,那么你永远也不会了解如何做一个架构师。而你不去做一个架构师,又永远没有机会带领一个团队,完成一个系统的架构设计与开发。
那么,该如何成为一个优秀的架构师?优秀架构师应该拥有哪些能力呢?具体参考以下 8 大核心能力。
优秀架构师需要具备的能力
1. 优秀的编程能力
编程是架构师最基本的能力要求,你表现出优秀的编程能力,才能获得成为架构师的机会。架构不是画两张架构图就行的,要在编程开发中落地,开发过程中遇到的编程问题,需要架构师亲手去解决。系统维护过程中出现的问题,也需要架构师对代码非常熟悉才能解决。这都需要架构师有非常优秀的编程能力。
2. 设计文档的能力
架构师固然要自己写好的代码,但更重要的是要让整个开发团队都能写出逻辑清晰、易于维护的代码。实现这一点,就是要开发团队在架构约束下进行开发,每个人都知道自己的工作在整个系统架构中的位置和作用,和其他同事的关联依赖关系。这些信息需要架构设计文档来传递,设计文档是架构师最本质的工作。而要想做好架构设计,使团队每个人的开发工作高内聚、低耦合、依赖关系清晰,架构师必须具备良好的模块分解能力。
3. 模块分解的能力
架构师要让团队每个人都发挥出价值并持续进步,这样自己和团队才是可持续发展的,而不仅仅是完成工作而已。这就需要架构师有良好的模块拆解能力,将开发任务拆分成高内聚、低耦合的模块,分配给团队成员。如果说早期单体架构时代模块关系混乱的问题还没那么突出的话,微服务架构则让那些不关注模块依赖关系的架构师吃尽了苦头。
4. 大规模复杂系统架构的能力
绝大多数的架构师都没有设计一个淘宝或者Facebook的机会,但是每个合格的架构师都应该知道,如何设计淘宝这样一个大规模复杂系统的架构。一方面淘宝这样成功系统的架构模式是架构设计时重要的参考经验,另一方面也是检验架构师学习能力的试金石。
5. 掌握典型技术解决方案的能力
负载均衡、分布式缓存、消息队列、NoSQL几乎是很多稍具规模系统的标配,那么作为一个架构师,除了会用这些技术,这些技术的内部原理、优缺点也都必须要掌握,这样才能在选择具体技术产品,解决使用中的问题时游刃有余。
6. 系统优化以及保障系统稳定的能力
架构师不是在开发初期丢出一张架构图就完事了,而是要在系统的整个生命周期内对系统负责,需要持续不断对系统性能进行优化,保证系统稳定高可用的使用体验。
7. 数据处理与应用的能力
早期,系统架构设计主要围绕业务需求展开,但是,随着大数据时代到来,越来越多的系统架构开始围绕数据展开,构建所谓的人工智能系统。因此架构师必须要掌握处理与应用数据的能力。
8. 领导与管理能力
架构师要想让自己的架构设计落地,变成真正运行的系统的架构,需要处理各种内外部关系,需要领导开发团队按照自己的架构设计进行开发。架构师也许不是严格意义上的管理者,但是他必须要有一定的领导和管理能力才行。
标签:架构设计,架构,难点,核心,编程,能力,开发,架构师 From: https://blog.51cto.com/u_15590807/9247601