很早就想写一些架构师系列的文章了,因为自己做架构设计也有几年了,有得有失,想以此文来谈谈自己对架构师职责的认识。架构师这个话题很大,从技术选型,到架构选型,从业务建模到系统建模,无一不是在做着决策。
一、好的架构师首先掌握一些基本技能和理论
• 面向对象设计的理论
• 设计模式
• UML理论及其工具一个完整的设计至少要包含五种UML图,业务流程图、用例图、活动图、组件图、类图
• 架构模式。架构设计的时候常常需要参考借鉴一些经典的架构模式,因为这些架构模式就是前人总结的用来解决实际问题的,有非常重要的借鉴意义,可以避免少走很多弯路,尤其是在系统设计的时候,参考一些架构模式常常能事半功倍
• 重构。架构也是需要不断重构的,没有完美的架构,只有不断折中、不断切合实际需求的架构,这是一个不断完善的过程,完善的一个重要手段就是重构
• 代码质量理论。架构师不仅仅是画几个图而已,在开发过程中要关注代码质量,高质量的代码会让架构的实现锦上添花
二、好的架构师应该是好的产品工程师
技术是服务于产品的。架构师应该是好的产品工程师,不懂业务就不能做架构,如果不懂业务,那么设计出来的东西一定是失败的,因为业务流程、业务规则、业务细节等等都是变化点,如果设计之初都不管不顾,甚至不深入挖掘,那么到最后,甚至在快完工之前,一个细小的业务规就是压死骆驼的最后一根稻草了。
三、架构师还应该是一名好的推销员
架构师就应该是一名出色的推销员,当你开始设计的时候,首先你需要向你的领导推销你的设计理念,要向领导描绘出设计蓝图,获得领导的认同很重要,往往一个项目的方向都是领导决定的,领导不认同,项目是没法做下去的。但是这里有一个问题,往往领导都不懂技术,他们可能很精于产品,而对技术不感兴趣,所以架构师要从产品的角度向领导来介绍架构设计,而不能从技术的角度去介绍,这才是你们沟通的基础。
四、架构师还应该是好的培训师
如果开发工程师受限自己知识水平,不理解架构设计的思想,这时,架构师就需要做些技术培训了,通过这些技术培训来让开发工程师明白设计的理念,最终认同设计。我一直在强调沟通和认同,因为这真的很重要,kent beck曾提出,程序员的编程价值观是:沟通、简单和灵活。这是非常重要的概念,为什么我们需要编程价值观,因为价值观决定了行为,有什么样的价值观就有什么样的行为,如果程序员认为程序的可理解性、简单性很重要,那么他的代码风格肯定是易读易懂的,而这些恰恰是软件的品质属性。
五、应该是好的救火队员
项目开发过程中,应该经常审查代码,架构师要确保大家是按照一个方向前进。当开发过程中发现设计考虑不周甚至有问题,要有勇气去重构,开发过程中,如果遇到技术难题,架构师应该充当救火队员的角色,因为这是技术调研和技术选型时,考虑不周导致的,身先士卒的去解决技术难题问题还可以让大家对架构更有信心。