在我看来,架构师应该是两个领域的问题的专家。一个是问题领域,一个是计算机领域。而且这两个领域都必须要有很强的基本功。在计算机领域,他必须熟悉很多的体系结构;在问题领域,他必须了解要解决的问题,能够很快地辨识这些问题,并且可以把这些问题转换成计算机领域的描述方式。这两个领域缺一不可,而且了解还必须要深入。
除此之外,架构师必须要具备逻辑思维能力,也就是分析问题和解决问题的能力。其他类型的技术人员只需要了解一个相对比较小范围的知识。比如一个程序员,只需要按照架构师给出的解决方案,把你的任务完成就可以了。而架构师要从整体上分析问题、解决问题。他可能对实际的程序不一定非常了解,但是他知道怎么样把一个具体的业务问题变成技术问题,他必须在这方面高人一等。
架构师除了要了解技术领域知识和业务领域知识之外,还可以多了解一些其他领域的知识,这对培养逻辑思维能力很有帮助。像我以前就对很多事情都很感兴趣,比如一些物理方面的知识,这也有意无意地训练了我的逻辑思维能力。当然,这与个人的兴趣有关。同时,架构师应该具备关联不同知识领域的敏感性。人类在做一件事情的时候,有时候会受到启发关联到其他的事情,这对手上的工作也是有帮助的。
架构师的分类
现在业界的架构师一般分为系统软件架构师与应用软件架构师两种,二者之间的差距还是很大的。系统软件关注的范围更狭窄一些,更关注计算机领域。而应用软件架构师主要关注的是业务方面。有些公司会把自己内部的架构师分为数据架构师、业务架构师、平台架构师等等,我对这种分法不是很赞同。
一个架构师实际上应该是一个领袖。产品或项目在架构上是由他一个人来决定的。团队里面有各种分工,大家考虑问题的出发点可能差别很大。如果没有一个架构师来统领全局,大家的意见就很难统一。这对架构师的要求就非常高了, 他必须具备各个方面的专业知识,这样才能带领团队前进。如果把他的职能打散了,实际上是不合理的。而且这些人也不应该叫架构师了,不妨称之为各个技术领域的分析员。我们看一些伟大的建筑,实际上这些建筑的架构师只有一个人。可能会有很多助手来帮他做很多东西。但是一些统领全局的想法还是要由架构师一个人来决定。
架构师经常要与孤独为伴
架构师遇到的最困难的事情,就是必须要做别人没做过的事情,要比别人领先一步去了解一些知识和技术,事先有一个清晰的认识,这样才能帮助团队其他人。这点是比较难的。经常自己在探索的时候,困难重重,也得不到别人的帮助,只能靠自己孤军奋战。
技术架构总是在不断演变的,对于真正的架构师来说,解决问题的思想、思维方式最为重要。有了这样的思想和思考框架,再借助一定的工具,就能把自己的思想转化成解决问题的具体方案。思想,是架构师一生相伴的好朋友。
如果让我说具体哪些人是非常好的架构师,可能一时说不上来,但是有一句话我可以保证:每一个成功的产品背后一定有一个伟大的架构师。
与架构师相关的误解
目前业界对架构和设计的认识上应该是存在一些误解的。架构,要分析业务领域的问题,把其中的一些计划、理念、概念转换成计算机领域的表达方式,这跟设计还不完全是一回事。设计,就是有了一个目标之后,做具体的事情,把这些计划、理念变成程序。而架构是从无到有的,架构师要能“无中生有”地建立一个模型。设计更像是一种施工人员。
随着我们国内IT水平的不断提高,相信大家对于“架构师”这个名称的定位会越来越清晰。 现在好像谁都是架构师,谁都可以做架构师。比尔· 盖茨在退休之前称自己为“首席架构师”,后来国内很多人也自封为“首席架构师”了,他们可能觉得这个名字很好听。但是这个职位并不像他们想象的那样,要能真正深入到领域里面去,而不是挂一个好听的名头。现在有些企业为了赶时间做项目,对于架构还并不是很重视。实际上架构师的职责是非常重要的。只有架构做好了,产品的生命力才能延续很长时间,否则将来一定会遇到很多问题。
架构师应该不断学习
除了逻辑思维能力之外,学习能力对于架构师也很重要。比如让从未接触过ERP 产品的架构师去做ERP产品的架构,可能一开始不知道是怎么回事,但是有学习能力,再了解一些基础的东西,他很快就能赶上来。
想成为架构师,没有捷径。只有通过自己的努力,在每天的工作中不断总结,不断学习。