技术架构师在软件系统开发中扮演着重要的角色,决定了用什么技术、如何架构设计系统、技术攻关、方案选型等
如同建造高楼大厦,需要安全可靠的图纸和精准无误的规划设计,都离不开架构师的规划建设能力。
为保证系统稳定可靠,要成为技术架构师需要更要从各个方面练就自己,先来看看架构师职责,以及要具备哪些能力。
架构师核心职责有哪些
负责软件系统整体架构设计、技术和组件选型、模块间通信管理、数据模型设计等。
围绕系统的架构、扩展性、稳定性、技术攻关、安全性等方面进行开展工作,确保系统整体完善水平。
通过与业务的深入学习,促使业务和技术的结合,合理架构并设计出符合产品所需要的最优方案。
具备的核心能力
无论是负责系统的整体架构师,还是在细分领域做架构师,比如后端架构师、前端架构师、客户端架构师,他们的基础核心能力是相通的。
01 理论基础
很多做技术的,无论现在所处的阶段,初级还是中高级、架构师都需要基本扎实的基础,这个犹如地基,地基不稳,很多时候高楼大厦也是很难拔地而起的。
成为技术架构师前,通常需要大量的基础编程积累,在基础编程工作时候要熟知计算机的基础知识。
这些核心基础包括数据结构、网络传输原理、系统运行原理、控件生命周期、内存管理、IO读写等等。
如果觉得比较抽象,不妨先从相关图书了解,比如数据结构与算法、操作系统、网络传输、编译原理、图形渲染、算法、linux操作、软件工程等。
消化掉这些基础科目后能满足最基础知识储备,后续可以针对具体领域进行深入学习。
02 编程能力
要成为技术架构师,首先要有扎实的编程能力,虽不可能掌握所有的开发语言来进行编程,但任何一门优秀的开发语言都是相似的。
编程能力,换句话来说就是使用开发语言解决业务问题的能力。
在系统构成的整体上,至少要熟练应用一门语言来进行深入编程,可以是后端、前端、移动端、数据、AI领域等。
我说的是要深入一门语言的编程,并熟知该语言的设计和编译原理。
从语言的设计源码层面理解,可以是JAVA、GO、Kotlin、OC、Swift、Rust、JavaScript、Flutter、Dart等。
理解面向对象、函数式、声明式等不同的编程范式,能够根据实际问题选择最适合的编程范式。
编程时具备算法和数据结构的使用,代码是否可读、可维护、可测试、参与开源项目代码贡献、关注编程思维的提升。
具备宽泛和深入的编程能力,广度上理解各种语言解决的问题和适合的业务场景,深度上掌握编程实施、结构设计和算法应用。
03 架构设计能力
架构师的职责中,设计高效、可扩展、易于维护的系统架构是至关重要的。
具备好的架构设计能力是需要编程和常用设计原则、设计模式、业务规则、引擎算法等相结合的。
需要知道对应的SOLID是什么?
23种设计模式有哪些,他们的使用场景有哪些?
模块之间的解耦怎么做、模块化怎么搭建、组件化又是什么?
在整体设计上,如何做分层设计、业务层、数据层、适配层,模块设计上如何划分通用模块、业务组件、数据组件、模块间如何通信、数据库上如何做主从,如何处理并发、如何处理大规模数据访问。
前端领域架构师要考虑同样问题分层设计、模块化划分、同时考虑前端页面的可插拔功能建设,组件化,动态配置、内存、性能优化、自修复自升级等。
想成为架构师,可以对比看看是否这些架构设计能力目前的掌握了解程度。
当然这里面的每一项能力都需要日积月累,刻意练习,不可忽视细节,但也不能陷入细节之中
架构设计能力关注整个系统全局的建设视野,同时关注核心重要的细节。
04 业务理解能力
软件架构设计都离不开对业务的深入理解和预见能力,否则设计出的软件产品可能是一塌糊涂。
做好业务的学习和理解,可以多深入一线体验业务和产品,结合实际业务流程来对产品进行方案架构设计。
提高业务理解能力,要主动和业务产品人员一起多交流和反馈,确保技术和业务之间的信息畅通,结合业务提前考虑对应的技术方案预研工作。
在充分理解业务的基础上,从中抽象梳理出对应的技术架构方案。
在落地架构设计时,从业务实际情况做出规划、折中技术架构方案,不过度设计。
这些能力都需要对业务发展的充分理解和认识。