[架构之路-3]:软件架构师也是魔法师,架构师应具备的四大方面的技能

news/2024/5/17 10:51:56/文章来源:https://blog.csdn.net/HiWangWenBing/article/details/126969429

目录

前言:

一、业务能力(业务领域)-- 面向业务

1.1 业务场景

1.2 业务技能

二、沟通能力(管理领域) -- 面向“人”

三、技术能力(计算机领域) -- 面向计算机

3.1 硬件技能

3.2 软件技能

3.3 自身快速解决问题的能力

3.4 预见技术难点和技术风险的能力

四、架构能力(架构领域) -- 面向系统

4.1 熟悉主流的架构的能力:

4.2 抽象的能力:

4.3 设计的能力:

4.4 整体规划的能力:

4.5 拆分和还原的能力:

4.6 拆分与重构的能力


前言:

软件架构师也是魔法师。

一、业务能力(业务领域)-- 面向业务

“业务”更白话一些来说,就是各行业中需要处理的事务。“业务”最终的目的是“为客户创作价值、产品、服务,换取利润”。不同的行业,不用的岗位,对业务能力的内涵是不同的。

业务能力的特点是:面向客户。

1.1 业务场景

熟悉各种业务应用场景的能力(客户、需求)-- 面向客户

所有的项目都有它特定的业务场景,用于帮助他们的客户解决问题。

不同的业务场景本质就是客户的需求。所有的技术方案,都必须是为客户的业务需求服务的。

再好的技术方案,如果脱离了客户的需求,也是空中楼阁,南辕北辙,容易犯纸上谈兵的错误。

再好的技术方案,如果不能帮助客户解决问题、为客户创作价值、为公司获取利润,这样的技术方案也得不到支持的。

1.2 业务技能

熟悉业务领域的专业性知识和技术(行业标准、行业技能)-- 面向行业

比如:蜂窝移动通信,需要熟悉3GPP的协议规范,包括架构、RF/L1/L2/L3协议规范。

比如:有线通信,需要熟悉计算机网络通信协议等 。

比如:互联网电商,需要熟悉电子商务,熟悉网络销售流程等业务。

比如:医疗健康行业,需要熟悉医疗行业的业务知识。

360行,每个行业都有自己独特的业务领域的专业知识和技术要求。

不同的业务领域,业务领域的知识相差非常大。

不同的业务领域,业务领域专业性知识和技能的要求的难度是不相同的。

比如移动通信行业的业务领域的技术门槛就非常高,而电子商务或物联网的业务领域的技术门槛相对较低。

二、沟通能力(管理领域) -- 面向“人”

最终的技术实现,都是要靠人完成的,沟通能力,虽然不是技术能力,但也非常重要。

架构师需要与不同角色的人打交道。

作为一个优秀的架构师,你需要清楚的知道客户的需求,需要不断和需求人员进行沟通,以达到说服客户真正的目的。

作为一个优秀的架构师,你需要与项目中的不同团队、不同人进行各种沟通,以推行你的架构设计和架构的主张

作为一个优秀的架构师,你需要在不同团队之间存在技术争议模棱两可的时候,进行技术实现上的平衡和仲裁

作为一个优秀的架构师,你需要有能力与组织的决策者沟通,给决策者提供技术的演进和发展方向的信息,有时候甚至说服决策者采用和推进某种技术方案。

其实,不仅仅是架构师,只要需要与人打交道,都需要提高自己的沟通和表达能力。

有一个普遍而有意思的现象,做领导的大多不是技术特别牛的,但沟通能力肯定是最好的,这体现出沟通能力及其重要的作用。

三、技术能力(计算机领域) -- 面向计算机

技术能力,这是最重要的能力。

科学与技术常常放在一起,科学解决理论问题,技术解决实际问题。

销售需要熟悉人性、管理者需要熟悉管理的软技能、架构师需要熟悉各种主流IT技术的原理,这是架构师的立身之本

所谓技术能力,包括:

3.1 硬件技能

  • 计算机原理
  • 嵌入式系统
  • 原理图、PCB
  • FPGA与Verilog

3.2 软件技能

  • 数据结构(软件工程师)
  • 算法(软件工程师)
  • 计算机编程(软件工程师)
  • 操作系统
  • 中间件技术
  • 大数据、云计算技术
  • 虚拟化
  • 人工智能技术
  • 网络安全
  • 各种工具

3.3 自身快速解决问题的能力

架构师需要有能力采用系统的、结构化的方法以及利用自身丰富的经验,从各种纷繁复杂的问题的表面现象中,进行系统、有序的梳理,逐渐排除干扰因素,快速的进行问题的收敛和定位。

架构师的优势在于在现象之外,看到问题背后的本质,架构师的优势在于"系统性”“全局性”。

3.4 预见技术难点和技术风险的能力

架构师要能够预见技术方案未来的可能会遇到的各种难点、风险,包括技术的和因技术导致的非技术风险,并提出预见性的预防措施

这是一个容易被忽略的能力,但这个能力对于推动项目的顺利进展,避免项目遇到各种幺蛾子事件起到了至关重要的作用。

未来的不确定性是任何领域都面临的共同难题,架构师此处的价值在于,把技术带来的不确定性展现出来,协作管理者把不确定性的影响控制在可接受的范围以内。

一个优秀的架构师:

广度上,不断拓展自己的知识面。

深度上,深耕和深挖关键的、核心的技术领域。

架构师不能长期性的陷入到项目中重复性的琐碎事情之中,它将会使架构师逐渐失去对技术系统全局性把控能力,对技术的长期演进的预见能力


四、架构能力(架构领域) -- 面向系统

架构能力主要表现为:

4.1 熟悉主流的架构的能力:

主流的架构是经过行业内各方力量总结、汇总、甚至验证过的成功的经验总结。

熟悉各种主流架构的特点、缺点、优点、应用场景,可以避免架构师闭门造车,利用或选型好主流的架构,可以避免项目承担不必要的风险、可以极大的加速项目的进展。


4.2 抽象的能力

架构师对系统组件的分解大都在抽象层面,可以适用于不同编程语言的具体实现。

只有高度的抽象,才能抓住现象背后的本质,才能具备广泛的适应性和扩展性。这是架构师与程序员一个重要的区别。

程序员重在通过具体的编程语言实现具体的目标,是可工作的软件,重在实现,因此有时候看起来是“有形”和“实在”。

架构师重在组件的抽象性和适应性,是纸面上的设计,重在“质”和“核”,因此有时候看起来是“无形”或“虚”。


4.3 设计的能力

架构师拿到的是需要和目标,架构师需要有能力把需求和目标,转换成内部的设计。

设计相对于实现而言的,设计本质上是一种技术的规划。设计是把一种设想,通过合理和周密的技术规划,通过各种方式表达出来的过程。

这个规划能力与项目管理的计划是类似的,

项目管理规划的对象是:人、时间、金钱等现实资源;

架构师规划的对象是:CPU的计算、内存、软件的组件等计算机资源。


4.4 整体规划的能力:

架构师是站在系统的视角审视整个系统内的组件以及之间的关系,甚至要跳出系统,站在系统外,审视系统整体表现出来的外部行为。

这是与程序员另一个重要的区别。

程序员是“局部优先”为基本原则,确保负责的模块,功能和性能都达到最优。

架构师是“整体最优”为基本原则,确保系统在整体性能和效率最优,有时候会牺牲一部分”局部最优”来换取“整体最优”。

比如: Y=A*B,

方案1:A=9,A是最优的,但B=1;整体效果Y=9*1=9; 

方案2:A=5,  A不是最优的,B=5,也不是最优的; 整体效果Y=5*5=25,方案2性能远远大于方案1;


4.5 拆分和还原的能力

一般情况下,大型的目标软硬件系统都是比较复杂的,是经过无数前人的劳动,才造就了当下的目标系统。

架构师需要在此基础上,添砖加瓦。但如果不熟悉现有系统,架构师很可能添错了砖,加错了瓦,使得系统漏洞百出。

因此架构师需要首先熟悉现有系统的架构。架构师要有能力把现有的系统进行拆解,拆解成简单的组件、理解组件的关系、组件之间的工作流程和工作原理,最后,再还原成整体架构,从系统外看系统的整体行为。

客户的新的需求或目标是糊的,复杂的,架构师需要对客户的需求和目标,进行拆分/解,把复杂变成简单、把模糊变成具体,然后再把这些拆解后的、具体的功能需求,按放到现有系统的各个组件上。


4.6 拆分与重构的能力

这是容易被忽略的能力,相当多的架构师,是在现有系统上做一些添砖加瓦增补的工作,因此这方面的能力大多情况下无法体现。

一个架构师,如果有幸参到一个从无到有,有小变大,由简单到复杂演进的系统中,那他是幸运的,这时候拆分与重构的能力就尤为重要。

一个复杂系统的形成,中间会经历很多次的演进和重构,重构的能力是上述多种能力的综合:需要熟悉业务系统,需要熟悉现有系统的架构,还需要熟悉重构后的系统架构等等。

如果说“拆分与还原”的能力是“改良”的话,“拆分与重构”就是“革新”,甚至是“革命”。在一个旧系统之上,重构一个具有旺盛生命力的新系统,对于重构者的能力的要求是相当高的。除了技术上的难度外,还会受到原先系统内力量的阻力、抗拒、质疑,也会受到新系统架构不确定性带来系统外阻力、抗拒、质疑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_12881.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一个有点意思的网站 - 语雀

在这个平台上面创建了一个文档:CWIKIUS 语雀 Confluence Confluence 的问题就是太臃肿,不兼容 MD 格式。 但是,Confluence 和 JIRA 重度集成,因此成为很多公司文档的标配。 语雀 试用了下这个文档工具,整体上来说…

我们如何一键将录音转换成文字?

最近有很多小伙伴向我求助说,他的职业是一名记者,因为每次采访都要进行对话录音,可是每次结束后都需要再去对录音进行整理,花费了大量的时间。因此他总是在加班,他想改变这一现状却不知道该怎么办。其实我们不必如此麻…

platform.pk8 和platform.x509.pem转jks

/** OpenSSL */ 下载地址:http://slproweb.com/products/Win32OpenSSL.html 环境配置: openssl 安装后查看是否安装成功,需要以管理员身份运行cmd查看 cmd输入openssl出现下面显示,表示配置成功,openssl可以使用 pla…

VUE v-bind 数据绑定

动态的绑定一个或多个 attribute,也可以是组件的 prop。缩写: : 或者 . (当使用 .prop 修饰符) 期望: any (带参数) | Object (不带参数) 参数: attrOrProp (可选的) 修饰符:.camel ——将短横线命名的 attribute 转变为驼峰式命名。 .prop ——强制绑定为 DOM property。…

kafka 安装

目录 Docker安装 1.安装Docker 2.搜索docker镜像 3.安装Zookeeper 4. 安装kafka 5.启动kafka ​​​​​​​ Linux安装 1.kafka下载 2.安装JDK 3.安装zookeeper 4.安装kafka 5.启动kafka zookeeper上查看kafka的节点 1.进入zookeeper容器 2.运行客户端 3.查看ka…

MongoDB --- 聚合查询

什么是聚合查询 聚合操作处理数据记录并返回计算结果。聚合操作组值来自多个文档,可以对分组数据执行各种操作以回单个结果。聚合操作包含三类:单一作用聚合、聚合管道、MapReduce(在5.x已经弃用)。 单一作用聚合 提供了对常见聚合过程的简单访问,操作都从单个集合聚合文…

网络笔记大全(超详细)

目录 OSI七层参考模型 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 封装和解封装 应用层 传输层 网络层 数据链路层 物理层 PDU --- 协议数据单元应用层 --- 报文 传输层 --- 段 网络层 --- 包 数据链路层 --- 帧 物理层 --- 比特流 Sof --- 帧首…

日本25年来首次干预以支撑日元汇率

日本周四自 1998 年以来首次干预外汇市场,以支撑暴跌的日元,此前日本央行决定维持超低利率,这一决定已对日元造成冲击。 KlipC 风险经理 Philip Nucci 周五表示:“他们(在外汇市场)采取了果断行动&#xff…

pytorch神经网络入门(三)

一、建立简单的卷积神经网络 import torch from torch import nnclass ConvNet(nn.Module):def __init__(self):super(ConvNet, self).__init__()self.conv1 nn.Sequential(nn.Conv2d(1, 16, 3, 1, 1),nn.ReLU(),nn.AvgPool2d(2, 2))self.conv2 nn.Sequential(nn.Conv2d(16,…

Vue学习第29天——路由的props配置项的详解与案例(对比组件props配置项)

目录一、组件的props配置项1、作用2、理解3、用法二、路由的props配置项1、作用2、理解3、用法① props值为对象② props值为布尔值③ props值为函数4、接收参数三、props配置项搭配params传参案例练习四、props配置项搭配query传参案例练习五、总结在学习路由的props配置项之前…

python机器人编程——差速机器人小车的控制,控制模型、轨迹跟踪,轨迹规划、自动泊车(中)未完待续...

目录一、前言二、轨迹的跟随控制策略(1)利用模型预测控制(MPC)的思想控制(2) 仿真验证一、前言 本篇我们依然试着用一些浅显的数学知识,来研究和实现一下常用机器人小车(如AGV&…

异常值检测!最佳统计方法实践(代码实现)!

💡 作者:韩信子ShowMeAI 📘 Python3◉技能提升系列:https://www.showmeai.tech/tutorials/56 📘 数据分析实战系列:https://www.showmeai.tech/tutorials/40 📘 本文地址:https://ww…

Mysql数据库高阶语句

目录 一,正则表达式 1,以“.”代替任意一个字符 2,匹配前面字符多次 3,匹配前面字符至少一次 4,匹配字符串 5,匹配包含或者关系的记录 6,匹配指定字符集中的任意一个 二,运算符 1、算数运算 2…

linux在线安装JDK1.8

​​​​​创建文件路径 [rootlocalhost ~]# cd /usr/local/ [rootlocalhost local]# mkdir java [rootlocalhost local]# cd java 在线下载连接地址 wget --no-check-certificate --no-cookies --header "Cookie: oraclelicenseaccept-securebackup-cookie" http:…

MyBatis——案例——查询-查询所有

查询-查询所有数据1、创建相应Mapper接口文件 以及Mapper配置信息文件 修改配置文件中 namespace :2、编写接口方法:Mapper 接口参数:无结果:List<Brand>3、编写SQL语句(接口文件中按Alt+回车快速编写)4、执行方法,测试(1)获取 SQLSessionFactory 对象//1、获取…

超越美国 中国IPv6地址重回世界第一

IPv6的背景 IPv4地址空间已经消耗殆尽&#xff0c;近乎无限的地址空间是IPv6的最大优势 IPv6基本报头 在IPv4的基础上增加了流标签&#xff0c;去掉了一些冗余字段&#xff0c;使报文头部的处理更 为简单、高效 IPv6扩展报头 是跟在IPv6基本报头后面的可选报头&#xff0c;可…

互联网时代在改变,程序员不再是只会敲代码的工具人

近两年收到新冠疫情的影响&#xff0c;加速了企业数字化信息的转型速度&#xff0c;而低代码也再次成为互联网时代的红榜。从技术的角度来看&#xff0c;低代码平台最大的好处就是提升了开发的效率&#xff0c;同时调整起来也会更方便一些&#xff0c;这对于IT公司来说会有较强…

数据湖技术之 Hudi 框架概述

第一章 Hudi 框架概述 先了解什么是数据湖DataLake&#xff0c;及Hudi 数据湖框架功能及各个版本特性。 文章目录第一章 Hudi 框架概述1.1 数据湖Data Lake1.1.1 仓库和湖泊1.1.2 什么是数据湖1.1.4 Data Lake vs Data warehouse1.1.5 数据湖框架1.1.5.1 Delta Lake1.1.5.2 Ap…

MyBatis——案例——环境准备

配置文件完成增删改查 准备环境数据库表 tb_brand-- 创建tb_brand表 create table tb_brand(id int primary key auto_increment, -- 主链brand_name varchar(20), -- 品牌名称company_name varchar(20), -- 公司名称orderd int, -- 排序字段…

四六级,考研英语,背单词接口

​ 英语&#xff0c;词汇&#xff0c;单词&#xff0c;四六级&#xff0c;托福&#xff0c;雅思 一、接口介绍 包括常见考试词表、小学、中学、高中、四级、六级、托福、雅思、BEC商业考试、朗文、牛津、求职、计算机、医学、建筑、化学、植物、数学、动物、体育、文学、美剧…