李老师在开课之出就讲到,如何成为一名架构师。对于这个问题,常见的回答有两个方向,一是通过应聘架构师职位来成为架构师,二是通过公司内部晋升被任命为架构师,但无论哪种都是有门槛的,而且没有做过架构的话,怎么应聘架构师呢?但当不成架构师,又怎么做架构呢?这似乎就成了个悖论。但正确的思路应该是,架构师只是一个头衔,但并非只有架构师才能做架构,无论当前的头衔是什么,只要在做架构的事情,在为系统的设计而负责,其实就已经在履行架构师的职责,在积累着架构师的经验。所以在平时就要注意多积累、多培养架构师相关的知识和技能,多去做相关的工作,提升硬实力和软实力,这样当面对应聘或晋升机会的时候才能得心应手,顺利拿到架构师的头衔。
结合当前大厂JD普遍对架构师的要求,李智慧老师的总结出了以下架构师的主要职责:
编写架构设计文档
开发编程框架
重构软件代码
设计系统架构
进行技术选型,解决技术应用中的问题
优化系统性能
模块分解与微服务架构重构
保障系统安全与高可用
大数据应用
技术创新
沟通管理
与之相对应,架构师的主要能力包括:
编程能力
基础技术掌握能力
常用技术产品的理解与应用能力
性能优化与分析故障的能力
常用架构模式和框架的理解与应用能力
建模以及设计文档的方法和能力
业务理解与功能模块及非功能模块拆解能力
快速学习能力
沟通与领导能力
架构应当如何学习呢?其实很多架构师会告诉你,架构是没法学的,架构师也无法通过培训产生。能学的是架构的知识,例如技术选型、各种产品和框架的使用,设计方法论和架构模式,但架构的思维、解决问题的思路和经验,乃至架构师本身的工作方式,这些是没法通过学习得到的,只能是在不断的实践中去培养,而由于每个人的悟性不同,所能达到的水平自然也不同。
那么,到底什么是架构?李老师给出了这样一张图:
架构的过程就是面向不同的参与者、以不同的视角和关注点,通过架构文档来描述系统的各个组成部分及其之间的关系。
那么架构文档又应当包含哪些内容呢?针对不同的参与者,应当输出什么样的架构文档呢?针对这个问题,李老师介绍了4+1视图和UML。