一、架构师的技能和职责

具备相关的意识形态和专业知识才能算上架构师,作为一名合格的架构师,完备的技术领域知识是必备的技能,但针对应用设计型架构师,所需的技能不仅仅限于了解和掌握技术体系,也需要从业务领域和软技能两个层面进行技能拓展。

  • 技术领域知识

架构设计相关的技术领域知识包括在上文中架构演进理论中提到过的分布式系统、缓存、消息中间件、企业服务总线、搜索引擎和批量数据处理等各种目前业务主流的技术体系,也包括软件架构体系结构中所蕴含的架构风格、架构模式和架构模型思想。

  • 业务领域知识

在应用程序开发过程中,业务架构驱动技术架构现象非常普遍。提升业务领域知识和提升技术领域知识一样,都对架构设计有直接的影响。从这个角度讲,架构师应该具备跨领域的技能。

  • 软技能

无论是传统型软件还是互联网应用,当前的开发模式已不再崇尚靠能力出众的个人来决定系统的产出,而是要靠团队。架构设计同样面临着项目计划同步、第三方服务集成、外部团队协作等团队性活动需求,很多场景下架构师需要与内部团队、外部团队统一协作才能设计出适合业务发展方向的系统架构。从这个角度讲,架构师应该具备跨团队的技能。

如果一名架构师具备以上能力,就可以从事架构设计工作。对于具体的工作内容,任何一名团队成员都应明确其职责并赋予相应的权力,架构师自然也不例外。架构师作为技术负责人,从问题领域出发进行抽象和建模并提供系统解决方案。同时,需要与过程管理人员进行合作,制定计划、分配资源、组建团队。最后,通过自身影响力和协作能力,保证项目按既定计划和成本完成。定义并记录系统的架构、构建和部署系统的策略、确保架构满足系统的质量属性、促进系统级别决定的产出、确保这些决定与干系人的期望一致、对架构方面的各项指标做平衡性的判断并确保达成一致意见等都是架构师的一些职责示例。

二、架构设计到底是一种技术活还是业务活?

在很多技术人员的眼中,架构设计可能就只是一种技术性的工作,很多公司在招聘架构师的时候也过多的关注了候选人的技术能力。事实上,在大型软件系统中,架构设计被认为是从问题领域到解决方案的一种桥梁(见下图),从图中我们可以看到架构设计活动与代表问题域的需求分析活动和代表解决域的软件开发活动都有直接的交集,连接着两个软件开发的核心领域。

如何成为一个优秀的软件架构师 软件架构师必备技能_业务

架构师是架构设计的执行者,架构设计的桥梁作用给架构师带来了挑战,意味着架构师需要同时具备处理两个核心领域的能力,即架构师需要能够从问题领域出发推导出满足业务需求的架构体系,同时又能够从实现方法入手设计出能够满足业务架构需求的技术架构体系,最终实现业务架构和技术架构的统一。

三、沟通与信任

1. 沟通:架构师不是坐在位置上一个人写代码的,而是需要不断跟人沟通的,架构组内部有好的想法随时沟通,大家对问题进行权衡,形成一个很open的团队,因为架构师的设计是需要承载客户价值(需要跟客户沟通),并让设计快速落地实现(跟开发沟通)。而且设计的工作要不断的做tradeoff,衡量各方利弊之后选择最优的解决方案。

2. 信任:架构组和开发,产品,客户之间需要建立一个很好的合作关系,加强相互的信任,特别是要跟客户建立相互信任的关系。

3. 架构与建筑:架构是需要不断演进的,跟建筑一样,很多时候改了任何的东西都是牵一发动全身的,我们需要随时评估改动对设计的影响和应对方案。可以经常把架构和建筑架构关联起来看。

4.以上3点也可以跟身边的同学沟通