• Java架构师职责和技能



    想学习架构师构建流程请跳转:Java架构师系统架构设计
    在这里插入图片描述

    1 架构师简介

    在这里插入图片描述

    系统架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。

    一般来说啊我们在说架构师的时候,通常会取他的一个狭义理解,也就是指负责系统架构设计的人。
    架构师嘛是我们的一个目标,但是这里大家注意的是从广义角度来讲,架构师并不一定指的是某一个人,也可以是指团队或者是组织。也就是说由一个团队来负责整个系统的架构设计。

    在这样的场景里面,架构师呢就演变成了一个岗位。标志着这些团队里面的这些人的一个职责,他们要来负责这个系统的架构设计。

    2 架构师职责

    在这里插入图片描述

    2.1 架构师是技术领导架构设计做决策

    架构师一般进行折中平衡做出决策,而且架构师还要保证他所做的这些决策要能够被正确的传达理解,最终还要被正确的执行。也就是说呢架构师还需要领导并推进整个系统的架构设计。他不能说光是做完架构设计啊,把这个图文档往下一发,然后就没事了。如果说没有被正确的执行,很有可能到最后还是一个失败的系统。

    2.2 架构师可以是团队或者组织

    这个时候呢通常会有首席架构师,架构师可以是团队或者组织,就不仅仅是人。
    一般来说呢这个时候啊通常就会有首席架构师,所以首席架构师呢就是架构团队的技术领导人,或者说是一个单点的协调人,也是最终的决策人。
    存在这样一个角色对于整个团队做出高内聚的架构以及进行一些技术决策是非常有必要的。
    如果说没有这个角色,团队内部可能会各自为政,遇到有争议的这种设计方案,那就会相互争执不下,相互不妥协。那么可能会导致整个架构设计一团乱麻。另外呢在采用团队或者组织来做架构的话,通常系统就会比较大。对于大型的系统而言,组建架构师的团队是很有必要的。
    毕竟人无完人嘛,也没有一个人能够精通所有的方面。
    那你组成团队过后呢,团队内的这些成员各有所长,相互弥补,就能够更好的更专业的设计出优良的架构。

    2.3 架构师必须掌握足够的技术知识

    作为架构师掌握足够的专业的技术知识肯定是必要的。这样才能够结合具体的应用场景,选用合适的技术来组合成为合适的架构。

    2.4 架构师必须掌握足够的架构设计技能

    架构师应该要掌握一些基本的架构思想,基本的架构设计模式,还有呢架构设计的一些方法论。
    以及用于架构设计的一些工具等等的。这些都是架构师的一些基本技能,应该是啊必须要掌握的。

    2.5 架构师必须具备很好的编程能力

    因为他实际要参与架构原型的设计,还要来开发实现。
    其实除了这些呢,他还可能要去做验证。就说把这个原型实现出来,去验证我的这个架构是正确的,是合理的,是能够达成设计目标的。那么除了这些呢,架构师还可能会参与到这个系统功能的一些实现。比如说一些基础模块的实现,基础功能的实现,通用功能的实现,或者是里面的一个重点难点功能的实现。所以说呢架构师必须具备很好的编程能力。

    当然这一块啊基本上不是问题,因为通常情况下架构师都是从开发人员一步一步成长起来的。
    编程能力应该是非常好的。那咱们这里呢只是要强调一下,就架构师应该具备这样子的能力。

    2.6 架构师必须深入理解业务及其业务的领域知识

    让架构能够更好的支持业务目标。那对于这一点呢,很多人忽略了。

    从以往的经验来看啊,这一点其实非常非常重要。
    因为在很多人看来要做架构师嘛,你是技术领导,技术好就ok了。实际上这是不够的。
    做一个合格的架构师不仅仅要技术好,还要强调业务也要好。它必须具备丰富的业务领域知识。
    大家别忘了,软件的本质是工具这一点啊,我到这边给大家熟悉一下软件的本质。
    就是个工具。也就说开发人员、程序人员就是来造工具的,就跟工厂生产工具是一样的,只不过它是实物的,咱们是软件系统而已。那这个工具用来干嘛呢?就是用来帮助用户解决具体的业务问题的这样子的工具。是用来。帮助用户。解决。具体有问题的这样子的工具。那么架构设计是在干什么呢?架构设计就是。为了把这个工具造好。就把这个工具啊。做的好一点。

    所以说我们需要好的架构设计。也就是说大家不要忘了初心,你是在干什么?
    你是在做软件。你架构设计的目的只是为了把软件做好。而软件的本质它就是个工具,就是用来帮助用户解决具体业务问题的工具。如果说你做的这个软件不能帮助用户去解决这个具体的业务问题,请问这个软件做了干什么?所以说呢我们要求架构师一定要能够深入理解业务,以及呢具备相应的业务领域知识。如果说架构师他没有深入理解业务,也不具备相应的业务领域知识,那么他就很难把握软件真正的目标。那这样做出来的架构设计,很有可能是架构师自己臆想出来的,并不能够很好的去解决实际的业务问题。

    大家千万别忘了,架构设计是为了业务服务的,不能够为了架构而架构。那这样做出来的架构设计是为谁做的呢?做来干什么呢?那可能有人会说,万一架构师他不具备相应的这个业务领域知识,那怎么办呢?那就要去学习,要快速深入的学习,把这一块知识尽快弥补起来。

    如果说他一直弥补不好这件事情,那这个架构师就不适合参与这个软件系统设计。他可以到他擅长的地方去做,而不是说非得让他在不熟悉的领域里去工作。那接着来看。

    2.7架构师应该具备很好的沟通能力

    他要负责去讲解架构,指导开发以及协调冲突。从某种角度上来讲呢,架构设计它是一个从无到有的过程。这我到这边稍微写一下。也有人说呢架构设计是个从零到一的过程。从无到有。
    那么这么一个过程。他本质上是想出来的。就是架构师啊在头脑里想出来的。这么一个结构。因此呢需要把架构师的这个想法去和其他相关人员进行沟通讲解。要让其他人明白你的设计意图、设计重点,以及为什么要这么设计。就你的设计的一些原因,要把你的想法完整的正确的传达出去。

    所以说这个时候就需要我们去讲解这个架构。那光讲完还不算完。开发人员在理解我们的想法过后,他就开始去具体的开发实施了。在具体的这个开发过程当中啊,还可能会有一些偏差。所以说呢还需要架构师去指导开发,以确保架构设计能够正确的落地实现。那么在这个具体的开发过程当中呢,也有可能会出现一些冲突。比如说会发现这样设计可能实现起来会比较别扭,或者说设计上存在没有考虑周全的地方。那这个时候呢,架构师还要负责去改进你的架构设计,协调好架构设计和落地实现的一些冲突。

    2.8 架构师必须了解软件过程,为项目的全流程提供支持

    3 架构、架构设计和架构师的关系

    Java架构师角度看架构:https://blog.csdn.net/ZGL_cyy/article/details/133549985
    Java架构师功能设计和架构设计:https://blog.csdn.net/ZGL_cyy/article/details/133552857
    在这里插入图片描述
    架构师可以是人、团队或者组织,归根结底到最后无外乎是一个人还是一堆人的问题。去执行这个架构设计。执行了架构设计这一系列活动过后,应该有产出,这个产出的结果就是咱们所说的架构。
    从架构设计过来,这个里面呢。就是生成咱们的架构就是说它的结果或者成果物,就是咱们说的架构。你看注意这个方向啊,是架构师去执行了架构设计这一系列的活动,最终呢生成了这么一个架构,这就是咱们的结果或者是产物。那如果单纯从架构师和架构这边来看的话,那很明显就是架构师去创建的架构。

    4 开发人员和架构师差距

    我们先来看一下开发人员和架构师的一个基本关系。通常来说啊,架构师都是有比较优秀的开发人员成长而来的。
    这个很好理解。通常咱们入行过后都是先做开发人员,不断积累自己的开发技术。

    积累到一定程度的时候,大家会发现常用的这些开发技术我都掌握的差不多了。那么这个时候呢会不断的去参与各种各样的项目,自然而然的就会去积累业务的经验。那么随着我的技术经验和业务经验持续向上积累,我的综合能力也在不断的提升,慢慢的我就成长成为架构师了当这个过程当中还会有意的去做一些设计,去训练自己设计的过程。刚开始可能是做一个小的挺leader,带着一两个人去负责一个小模块。那这个时候已经在慢慢训练自己的架构设计能力,以及对整个项目的掌控能力。
    那么当我的能力成长到能够掌握这个小模块过后,那慢慢的就会把范围扩大,去掌控一个子系统。
    当我能够掌控整个子系统的时候,然后再慢慢的成长为我掌控整个项目,我就成为真正的架构师了。这个应该说啊是一个非常常见的架构师的成长之路。

    我们这里呢来讲,开发人员和架构师到底要来讲什么呢?那我们首先就来研究一下开发人员和架构师到底有多大的差距,或者说在哪些方面有差距。这样的话我就知道我该从哪些方面去提升自己。当我把这些差距都弥补上来过后,我就成为架构师了,是这意思吧?所以说呢咱们现在要来看的就是开发人员和架构师的差异点。
    当然咱们这里啊罗列了一些,肯定是包含但不限于。那么架构师相比开发人员而言,有下面一系列的要求。我们一点一点来看。第一的一个架构师关注的这个层面相对会更高层一些。

    架构设计更加关注于高层和整体。而不会像很多开发人员一样,就局限在自己的一亩三分地。比方说分给我一个小模块,好,我的眼里就只有我的这个小模块的东西,从来不去想整个这个系统是怎么一回事情。
    所以说呢这个关注的层面会不一样。

    4.1 架构师技术更全面

    因为架构师啊他是要掌控整个项目,所以说呢各个方面的技术啊,他可能都需要懂一些。
    比如说前端的技术啦,后端的开发技术啦、架构技术呢甚至测试啊、运维啊都要了解一些。
    因为架构设计本身是贯穿软工全流程的这就要求架构师的这个技术啊要更全面一些。
    而开发人员呢主要是在开发测试这个环节,而且他关注的就是自己负责的这些模块。
    所以说相比而言,开发人员的这个技术啊没有架构师这么全面。

    4.2 架构师掌握技术更深入

    更多一些就是指广度,更深入一些那就是指深度。
    也就是说要求架构师技术的广度和深度都要比开发人员更好一些。
    其实这个也很好理解,架构师在做架构设计的时候,针对具体的问题是要去提出具体的技术解决方案的。
    而解决一个问题通常还不止一种解决方案,他得有好几种解决方案。这就要求架构师的这个技术面要比较广,他才能够想到更多的解决方案。那么这个深度问题呢,就是在面对这么多解决方案的时候,架构师要去做决策,他要去思考是用a好还是用b好。
    一般情况下这个时候就要从这个技术本身的适用场景,技术底层的原理,还有呢这个技术和咱们要解决的问题,或者说和咱们的这个业务场景的契合程度。综合去考虑到底是选a还是选b那这些呢都要求架构师对这个技术的理解要更深入一些。
    第四的一个要求架构师的这个业务经验更多一些。
    前面呢咱们也讲过,架构师的核心能力,其实最核心的一个是技术方面的能力,一个就是业务方面的能力。
    当然这个地方只是说要求他的业务经验更多一些。
    并没有说他一定会更多,这个大家要注意一下。其实正常来说呢,教师都是从开发人员慢慢成长过来的,一般来说工作的年限啊都会比较长,所以说他的业务经验自然积累也会更多一些。当然这个业务经验呢还有别的方法可以去短期内提升,这个呢咱们先不多说。

    4.3 架构师开发经验和架构设计经验

    架构师就是来做架构设计的,所以他的架构设计经验肯定要比开发人员多。
    那另外一个呢,本身是从开发人员成长过来的,所以说他的开发经验应该说啊也是比较丰富的。
    那为啥要强调开发经验呢?这主要是架构师设计出来的架构设计最终落地实现的一个问题。
    架构师拥有非常丰富的开发经验,他就躺过很多不同的坑。他就知道自己这样的架构设计最终落地实现的时候能不能够实现出来,能实现成什么样子。如果他的开发经验不足,很有可能会做完架构设计过后,在落地的时候发现做不到,或者说是做起来特别别扭。或者说是做出一个新的问题来。所以说呢会要求架构师的这开发经验要比较丰富才行。

    4.4 架构师解决实际问题较多

    这些啊也是在这样架构师的这个综合的开发经验。

    4.5 架构师的沟通能力要好

    这个也跟刚才讲业务经验啊一样,就说是要求他更高一些,并不一定他是真的高一些。因为呢架构设计贯穿软工的全流程,架构师他也要贯穿软工的全流程。做完架构设计过后,他还需要把他的这个架构设计去向其他参与人员进行讲解推广,这都需要比较好的沟通能力。你不能说你自己做完一个架构设计,画完图,写完文档,然后往那一搁说自己去看吧。
    然后让你讲的话半天讲不清楚,这就是个问题了。别人怎么去理解你的思想,怎么去理解你的这个设计是正确的呢?
    毕竟文档是很难描述全的。还是有很多地方是需要相互沟通才能理解的。

    4.6 架构师的学习能力更高

    这个最主要的是啊。架构师他在做这个架构设计的时候,经常会面临很多新的问题。
    他去想怎么样解决这些问题。他可能会面临新的业务,面临新的技术难点。
    那么他为了解决这些问题,可能需要去学习很多新的知识,而且是短期之内快速的学习这些知识。因此呢会要求教师的这个学习能力更高一些。

    4.7 架构师需要具备技术领导力

    毕竟架构师带的团队或者说是合作的这些相关人员,基本上都是技术方面的人员。
    那么架构师要能够更好的把自己的架构设计这些思想理念传达出去,并且让大家按照自己的这个架构设计来执行。
    是需要有一定的技术领导力的。可以看得出来开发人员和架构师差距基本上是全方位的。
    从技术到业务,从学习能力到沟通到领导力等等的。对架构师的要求都会比开发人员要求要高。这些能力也是我们在接下去的学习过程当中,不断学习和培养的一些能力。有关于开发人员和架构师,我们就先讲到这个地方。

    5 总结

    在这里插入图片描述

    架构设计本身就是贯穿软件过程的全流程的。那么对于架构师而言,他也需要为软件项目的全流程提供支持。因为最终做事的一定是人脉。那这也体现了架构师对软件项目的一个掌控能力。只有对每个部分都提供支持,架构师才能更好的掌控整个软件系统,从而保证架构设计能够很好的推行下去。
    当然对于软件项目的这个全流程,架构师其实是非常熟悉的。毕竟都是由开发人员成长起来的,参与过的项目非常非常的多。这里呢咱们只是强调一下,就不去多说了。

    对架构师的基本认识
    架构师是技术领导,领导并负责架构设计,负责做决策 (顿导能力)
    架构师可以是团队或组织,这个时候通常会有首席架构师 (管理能力)
    架构师必须掌握足够的技术知识(开发技术能力)
    架构师必须掌握足够的架构设计技能(架构设计能力)
    架构师必须具备很好的编程能力,实际参与架构原型的设计和开发实现(整合能力)
    架构师必须深入理解业务及业务领域知识,让架构更好支持业务目标(领域知识和业务能力)
    架构师应该具备很好的沟通能力,讲解架构、指导开发、协调冲突等(沟通能力)
    架构师必须了解软件过程,为项目全流程提供支持(软工能力)

    业务能力: 业务决定了要做什么
    技术能力:决定了怎么做

    业务能力+技术能力 决定了能够作出合适的架构来

    领导和管理能力:决定在整个系统做的过程中, 过程正确、高效
    沟通能力:决定了架构设计的推行
    执行软工能力:决定了架构跟项目的结合,以及架构在软工过程中每一步的落地

    领导和管理能力 +沟通能力 +软工能力 确保了架构能够正确的推行并落地执
    还有更多:比如个人的学习能力、思考能力、自控能力,甚至情商等等

  • 相关阅读:
    面试中的最常被问到的两种锁
    Java基础final,finally,finalize的区别
    一起Talk Android吧(第三百八十八回:lifecycle)
    Nova组件源码分析之冷迁移与Resize
    在window环境下安装numpy模块(包)
    flink.sql.parser.impl.ParseException
    Go微服务框架go-kratos实战03:使用 gorm 实现增删改查操作
    基于JAVA儿童疫苗接种管理系统的设计与实现
    前端Vue仿企查查 天眼查知识产权标准信息列表组件
    【区块链 | 预言机】从零开始使用Chainlink预言机(2)- 智能合约中使用更安全的随机数-代码实战
  • 原文地址:https://blog.csdn.net/ZGL_cyy/article/details/133577734