业界对于架构师一直存在一些误解,像上面的这种观点不在少数。而在很多具体实践中,也存在这样的情况:一方面对架构设计工作不重视,拿到需求,几乎没有任何设计,一上来就撸代码;另一方面随着需求不断迭代,项目逐渐失控陷入混乱,又开始埋怨当初没有好好做设计。
不过,也能理解为什么会存在这样的误解。毕竟,编程和架构几乎是完全不同的两项工作,并不是你有了多年编程经验就能自动获得架构设计的能力,就能成为架构师。做编程,只要根据给定的功能模块和技术要求,完成开发工作就可以了。而做架构,需要全局思考各种技术、业务、资源要求,根据要求,寻找最合适的架构方案。事实上,如果你没有从架构师的角度思考问题,带领团队,整体完成一个系统的架构设计与开发,那么你永远也不会了解如何做一个架构师。而你不去做一个架构师,又永远没有机会带领一个团队,完成一个系统的架构设计与开发。
这里似乎形成一个死循环,而突破死循环的关键在于两点:
-
你表现出优秀的开发能力,让领导相信,即使你没有架构设计与领导开发的经验,你也能做好架构师这一角色,从而任命你做架构师。
-
你在成为架构师之前,就掌握了足够的做架构的方法和技能。在被任命为架构师之后,不会手足无措把事情搞砸,而是能够有条不紊开展工作,打好你的架构设计第一仗。
更好的理解架构设计,成长为一个架构师,主要的困难在于:
-
你是否在编程这件事上表现出足够的优秀,从而获得做架构的机会。
-
你是否掌握架构设计的一般方法,能够把握好做架构设计的机会。
-
你是否拥有足够的关于系统架构设计的知识储备,能够在软件架构的生命周期以及你自己的职业生涯中,不断迭代进步,使你负责的系统和你自己的职业前景都变得越来越好。
看到这里有的人会问:我该如何成为一个优秀的架构师?一个优秀的架构师应当具备怎样的素养。换句话说,优秀架构师应该拥有哪些能力?
根据我 15 年的架构设计经验,我总结了架构师 8 大核心能力:
-
优秀的编程能力
-
设计文档的能力
-
模块分解的能力
-
大规模复杂系统架构的能力
-
掌握典型技术解决方案的能力
-
系统优化以及保障系统稳定的能力
-
数据处理与应用的能力
-
领导与管理能力