如何成为一名好的系统架构师

如何成为一名好的系统架构师

    • 一、了解系统架构师
      • 1.作为技术领导者
      • 2.作为开发人员
      • 3.聚焦系统
      • 4.具备企业家思维
      • 5.权衡策略思维与战术思维
      • 6.良好的沟通
    • 二、成长为架构师
      • 1.工程师阶段
      • 2.高级工程师阶段
      • 3.技术专家阶段
      • 4.系统架构设计师(初级)
      • 5.系统架构设计师(中级)
      • 6.系统架构设计师(高级)

抓紧时代的机遇,成就心中那个弱小的自己,变强变强再变强,雄起!

一、了解系统架构师

对于系统架构设计师而言,其优劣无 法用统一的标准去衡量,优秀与否实际上是 相对的,但是,根据架构设计师的能力可以 进行评价。架构设计师是一个充满挑战的职 业,需要关注很多维度和技术。 Pat Kua (原 ThoughWorks 咨询师)提出:一个好的架构设 计师是技术全面的,并给出了成为一个技术全 面的架构设计师必须具备的6个角色

1.作为技术领导者

一名好的软件架构设计师需要明白,作为领导者并不一定要告诉开发人员做什么。相反, 好的架构设计师就像一个导师,能够带领开发团队向同一个技术愿景前进。好的架构设计师会 借助讲故事、影响力、引导冲突和构建信任等领导技能,将他们的架构愿景变成现实。一个好 的领导者,同时也是一个好的架构设计师。他/她会仔细听取每个参与者的意见,通过与团队 的互动调整他们的愿景。

2.作为开发人员

一个架构设计师同时又是一个好的开发人员。通常,做出一个良好的架构选择需要权衡理 想的架构状态与软件系统的当前状态。例如,如果一个问题更适合采用关系型数据库来解决, 那么将文档数据库引入到系统中的做法是毫无道理的。一个架构设计师如果不考虑技术选型与
问题域之间的匹配度,会很容易受到各种技术的诱惑——这也就是常见的“象牙塔式架构设计 师”行为模式。
缓解这种情况的最佳方法是让架构设计师多与开发人员待在一起,花一些时间在代码上。 了解系统的构建方式及系统的约束,这将帮助架构设计师在当下环境中做出正确的选择。

3.聚焦系统

经验丰富的开发人员明白代码只是软件的一部分。为了让代码可运行,他们还需要了解代 码在生产环境中运行良好所需的其他重要质量属性。他们需要考虑部署过程、自动化测试、性 能、安全和可支持性等多个方面。开发人员可能以临时的方式来实现这些质量属性,而架构设
计师不仅需要专注于了解代码,还要了解并满足不同利益相关者(如支持、安全和运营人员) 的需求。一个好的架构设计师需要专注于寻找那些能够满足不同利益相关者需求的解决方案, 而不是选择针对某一个参与者的偏好或风格进行优化的工具或方法。

4.具备企业家思维

所有技术选型都有相关的成本和收益,一个好的架构设计师需要从这两个角度考虑新的技 术选型,就如成功的企业家是愿意承担风险的,他不但会寻求快速学习的机会和方法,也要学 会做好接受失败的心理准备。架构设计师可以用类似的方式做出技术选型,收集真实世界中有
关短期和长期成本的信息,以及他们可能意识到的好处。 这方面一个很好的例子是,架构设计师避免承诺立即使用一个在阅读新文章时看到或在某
一会议上听到过的工具。相反,他们试图通过架构调研来了解工具在其环境中的相关性,以收
集更多信息。他们对于工具的选择不是基于销售量,而是考虑他们需要什么以及这个工具所提 供的价值。他们还会寻找这些工具背后的隐性成本,例如工具的支持情况(如文档化程度、社 区使用情况),工具可能带来的约束或长期来看可能带来的额外风险。

5.权衡策略思维与战术思维

许多团队由一些独立的开发人员一起构建软件,而每个人都倾向于选择自己最舒适或最有 经验的工具和技术。好的架构设计师会持续关注可能有用的新技术、工具或方法,但不一定立 即采用它们。技术采用往往需要长期的考量。架构设计师将在团队和组织层面寻求敏捷度(允 许团队快速采取行动)和一致性(保持足够的一致性)之间的良好平衡。建立自己的技术雷达 进行练习是用战略思维探索技术的一个有用工具。

6.良好的沟通

架构设计师需要知道,有效的沟通是建立信任和影响团队以外成员的关键技能。他们知道 不同群体使用不同的术语,而使用技术术语的描述语言与业务人员沟通将会变得比较困难。与 其谈论模式、工具和编程概念,架构设计师需要使用听众熟悉的术语与之交流,诸如风险回报、 成本和收益等。这比单纯使用技术词汇进行沟通来得更好。架构设计师还需要认识到团队内部 沟通与外部沟通同样重要,可以使用图表和小组讨论的方式来建立和完善技术愿景,并进行书 面记录(如架构决策日志或 Wiki 等),从而为将来留下可追溯的历史。
总之,做一个技术全面的架构设计师并不容易,因为有很多方面需要关注,而每个方面都 有很多作为开发人员经常不会专注并练习的技能。其实最重要的不一定是一个架构设计师的能 力,而是他们在每个不同的领域都有足够的专业知识。有价值的架构设计师需要在上述6个方 面都具备良好的专业知识。

二、成长为架构师

尽信书不如无书,实践才能出真理,样样通样样松,先深入再扩展

人们通常把系统架构设计师类比为建筑师,其共同点都是做好顶层设计,充当需求方和 实施者的桥梁。但是系统架构设计师和建筑师存在许多不同,对于建筑师而言,在成为建筑 设计师之前,是不会成为建筑工人或工程师的;而系统架构设计师一定是从工程师成长起
来的。
工程师和架构设计师的本质区别主要体现在技术、组织和个人成长上。 在技术上,架构设计师的首要工作是抽象建模,而比首要工作更重要的是要了解自己所处
的业务领域。只有对业务足够了解,才能更好地抽象和建模,也更能沉淀通用的设计方法论。 另一方面,架构设计师需要了解甚至精通业务领域所涉及的技术领域,譬如对于互联网行业的 架构设计师,小到语言、算法、数据库,大到网络协议、分布式系统、服务器、中间件、 IDC 等等都需要涉猎。一句话,架构设计师是技术团队的对外接口人,也应该是外部团队技术问题 的终结者。除广度之外还要有深度,对于关键技术模块的设计,架构设计师需要有技术的权威 性。而工程师则属于开发团队成员,主要负责项目的具体实现工作,在架构设计师的指导和帮 助下,要熟悉相关业务流程,懂得建模方法,使用已确定的开发方法进行设计、编码和测试等 工作,从掌握专用技术知识层面来讲,工程师必须熟练掌握详细的设计方法、编程语言、工具
和环境。 架构设计师要成为业务和技术的桥梁,因此需要精通业务和技术的语言,要锻炼沟通能力,
不只是口头沟通能力,也包括用标准化的图表表达设计思路的能力。架构设计师需要一种学会 掌握“中庸之道”的方法。不管是技术的选型,团队的协作、培养和分工,商业诉求和成本控 制,产品需求和技术诉求的匹配,很多时候都是在做权衡。可以说,架构的工作主题就是权衡, 这可能也是工程师成长为架构设计师的最大挑战。工程师经常是完美主义的,程序也总是精准 而精确的,但是架构设计师要习惯于不完美和一定条件下的不精确。工程师主要是追求产品的 完美形态,通过自己设计出的漂亮程序以充分展示自我能力,很少考虑团队与协同,开发团队 相互间为了提升,往往存在相互竞争。
系统架构设计师一般都具备计算机科学或软件工程的知识,由工程师做起,然后再慢慢成 长为架构设计师。
成为系统架构设计师的关键是要培养自己的判断力、执行力和创新力。判断力是能够准确 判断系统的复杂度在哪里,能准确地看出系统的脆弱点;执行力是能够使用合适的方案解决复 杂度问题;创新力是能够创造新的解决方案解决复杂度问题。因此,要成为一个系统架构设计 师,就需要不断地锻炼自己的内功,这些内功来源于经验、视野和思考。因此,要从工程师成 长为架构设计师,应遵循积累经验,拓宽视野和深度思考的原则。下面说明从工程师到架构设 计师的成长过程。

1.工程师阶段

要从一名技术员(助理工程师)成为一个合格的工程师需要参加相关工作1~3年时间,其 典型特征是“在别人的指导下完成开发”,这里的“别人”主要是“高级工程师”或者“技术专 家”。通常情况下,高级工程师或者技术专家负责需求分析、讨论和方案设计,工程师负责编码 实现,高级工程师或者技术专家会指导工程师进行编码实现。工程师阶段应该是原始的“基础 技能积累阶段”,主要积累基础知识,包括编程语言、基本数据结构、开发环境、操作系统、数 据库以及相关软件开发流程等。

2.高级工程师阶段

从工程师成长为高级工程师需要3~5年时间,其典型特征是“独立完成开发”,包括需求 分析、方案设计和编码实现,其中需求分析和方案设计已经包含了“判断”和“选择”,只是 范围相对来说小一些,更多是在已有架构下进行设计。高级工程师主要需要“积累方案设计经 验”,简单来说就是业务当前用到的相关技术的设计经验。
高级工程师阶段相比工程师阶段有两个典型的差异:其一是深度,如果说工程师是要求知 道How, 那高级工程师就要求知道W h y了。例如Java的各种数据结构的实现原理,因为只有 深入掌握了这些实现原理,才能对其优缺点和使用场景有深刻理解,这样在做具体方案设计的 时候才能选择合适的数据结构。其二是理论,理论就是前人总结出来的成熟的设计经验,例如 数据库表设计的3个范式、面向对象的设计模式、 SOLID 设计原则、缓存设计理论(缓存穿透、 缓存雪崩和缓存热点)等。

3.技术专家阶段

成长为技术专家需要4~8年时间,其典型的特征是“某个领域的专家”,通俗地讲,只要 是这个领域的问题,技术专家都可以解决。例如: Java 开发专家、嵌入式开发专家、操作系统 开发专家等。通常情况下,“领域”的范围不能太小,例如我们可以说 “Java开发专家”,但不 会说 “Java 多线程专家”或 “Java JDBC 专家”。技术专家与高级工程师的一个典型区别就是: 高级工程师主要是在已有的架构框架下完成设计,而技术专家会根据需要修改、扩展和优化架 构。从高级工程师成长为技术专家,主要需要“拓展技术宽度”,因为一个“领域”必然会涉及 众多的技术面。
需要注意的是,拓展技术宽度并不意味着仅仅只是知道一个技术名词,而是要深入去理解 每个技术的原理、优缺点以及应用场景。

4.系统架构设计师(初级)

成长为初级架构设计师需要5~8年时间,其典型特征就是能够“独立完成一个系统的架构 设计”,可以是从0到1设计一个新系统,也可以是将架构从1.0重构到2.0。初级架构设计师 负责的系统复杂度相对来说不高,例如后台管理系统、某个业务下的子系统等。初级架构设计 师和技术专家的典型区别是:初级架构设计师是基于完善的架构设计方法论的指导来进行架构 设计,而技术专家更多的是基于经验进行架构设计。简单来说,即使是同样一个方案,初级架 构设计师能够清晰地阐述架构设计的理由和原因,而技术专家可能就是因为自己曾经这样做过, 或者看到别人这样做过而选择设计方案。但在实践工作中,技术专家和初级架构设计师的区别 并不很明显,事实上很多技术专家其实就承担了初级架构设计师的角色,因为在系统复杂度相 对不高的情况下,架构设计的难度不高,用不同的备选方案最终都能够较好地完成系统设计。
从技术专家成长为初级架构设计师,最主要的是形成自己的“架构设计方法论”。形成自 己的架构设计方法论的主要手段有:系统学习架构设计方法论,包括订阅专栏或者阅读书籍等;
深入研究成熟开源系统的架构设计;结合架构设计方法论,分析和总结自己团队甚至公司的各 种系统的架构设计的优缺点,尝试思考架构的重构方案。

5.系统架构设计师(中级)

成长为中级架构设计师需要8~10年以上时间,其典型特征是“能够完成复杂系统的架构设 计”,包含高性能、高可用、可扩展、海量存储等复杂系统,例如设计一个总共100人参与开发 的业务系统等。中级架构设计师与初级架构设计师的典型区别在于系统复杂度的不同,中级架 构设计师面对的系统复杂度要高于初级架构设计师。以开源项目为例,初级架构设计师可能引 入某个开源项目就可以完成架构设计,而中级架构设计师可能发现其实没有哪个开源项目是合 适的,而需要自己开发一个全新的项目,事实上很多开源项目就是这样诞生出来的。从初级架 构设计师成长为中级架构设计师,最关键的是“技术深度和技术理论的积累”。

6.系统架构设计师(高级)

成长为高级架构设计师需要10年以上时间,其典型特征是“创造新的架构模式”,例如: 谷歌的分布式存储架构、分布式计算 MapReduce架构和列式存储架构等开创了大数据时代;在

虚拟机很成熟的背景下, Docker创造了容器化的技术潮流。高级架构设计师与中级架构设计师 相比,典型区别在于“创造性”,高级架构设计师能够创造新的架构模式,开创新的技术潮流。
总之,关于如何在专业领域内提升,有个著名的“10000小时定律”,简单来说要成为某个 领域顶尖的专业人才,需要10000小时持续不断的练习,例如小提琴、足球、国际象棋、围棋 等领域,无一例外都遵循这个定律,而技术人员的成长也基本遵循这个定律。系统架构设计师 的成长其实最关键的还是技术人员对技术的热情以及持续不断地投入,包括学习、实践、思考 和总结等。

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

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

相关文章

Mysql中间件和高可用

文章目录 一、MySQL中间件代理服务器MycatMycat应用场景Mycat部署 实现读写分离 二、MySQL高可用高可用解决方案MHA高可用实现MHA 一、MySQL中间件代理服务器 数据库主要分为两大类:关系型数据库与 NoSQL 数据库(非关系型数据库)。 数据库主…

MinIO:开源对象存储解决方案的领先者

MinIO:开源对象存储解决方案的领先者 MinIO 是一款开源的对象存储系统,致力于提供高性能、可伸缩、安全的数据存储解决方案。 官方解释:MinIO 是一个基于Apache License v2。0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适…

vue 模糊查询加个禁止属性

vue 模糊查询加个禁止属性 父组件通过属性传,是否禁止输入-------默认可以输入

Quantlab5.0:一切围绕可实盘策略驱动开发

原创文章第573篇,专注“AI量化投资、世界运行的规律、个人成长与财富自由"。 2024年上半年即将结束,开始准备星球下半年的工作。 目前设想的——Quantlab5.0,之所以升级一个大版本,与4.x有很大不同。 5.0专注策略开发&…

高效任务分配的常见7步法

高效的任务分配有助于优化资源配置,提升开发效率与质量,降低成本和项目风险,最终提高客户满意度。如果任务分配不合理,可能导致资源浪费,造成项目延期和成本超支,影响工作质量,增加项目风险。 因…

小超市进销存软件永久免费版,免费使用!

在快节奏的商业环境中,小超市的管理效率直接关系到经营成本和盈利空间,为了帮助广大中小超市业主解决进销存管理的难题,象过河软件推出小超市进销存软件永久免费版,可让超市管理者长期免费使用。 象过河开发的小超市进销存软件专为…

谷粒商城学习-07-虚拟机网络设置

文章目录 一,找到配置文件Vagrantfile二,查询虚拟机网卡地址1,查看虚拟机网络配置2,查看宿主机网络配置 三,修改配置文件下的IP配置四,重新启动虚拟机即可生效五,Vagrantfile 的作用1&#xff0…

渲染农场渲染真的很贵吗?如何正确使用云渲染农场?

作为渲染行业主流的技术服务“渲染农场",一直都是备受大家关注,渲染农场最核心的在于充足的计算机算力,结合3D软件支持多台机器渲染的特点,租用渲染农场的机器帮助你快速的解决你的渲染项目。 虽然说渲染农场需要支付一定的…

【电子数据取证】LX-A603互联网取证系统

文章关键词:电子数据取证、网站取证、快速固证 LX-A603可以通过简单的操作步骤,实现在符合规范的情况下自动对网站进行快速镜像、截屏固定、屏幕录像、生成报告等功能。满足了对互联网网站取证的实战化需求,极大提升工作效率。 应用场景1&a…

打包 最新血液净化器制作技术和资料

网盘 https://pan.baidu.com/s/1fm3LF20dCvy4iSMQklHpug?pwd4je2 便携可穿戴可血液净化用器件及其制备方法和应用.pdf 基于贻贝仿生化学的血液净化材料及其制备方法.pdf 膜分离式一体化血液净化系统.pdf 血液净化器固定夹.pdf 血液净化膜及其制备方法和应用.pdf 评估血液净化…

烟台LP-SCADA系统如何实现实时监控和过程控制?

关键字:LP-SCADA系统, 传感器可视化, 设备可视化, 独立SPC系统, 智能仪表系统,SPC可视化,独立SPC系统 LP-SCADA(监控控制与数据采集)系统实现实时监控和过程控制的主要原理和组件如下: 数据采集:LP-SCADA系统通过部署在现场的传…

STL vector 手写--迭代器设计思想、空间配置器思想!两个面试题

STL空间配置器 空间配置器的核心功能就是把对象的内存开辟和对象构造的过程分解开,对象析构和内存释放的过程分解开,因此空间配置器主要提供了以下四个函数: 空间配置器的函数功能allocate负责开辟内存deallocate负责释放内存construct负责…

一键直达:2024最新Win10系统安装包!快来下载!

对于想体验Win10系统最新功能的用户来说,寻找可靠的最新系统安装包是特别重要的。接下来系统之家小编就给大家带来2024年最新Win10系统安装包,有需要的小伙伴一键点击就能开始下载。该系统安装步骤简单易懂,无需担心任何装机经验。 推荐下载&…

快递物流运输中的RFID智能锁控应用方案

一、物流货运管理的痛点分析 1.1 货物安全与监控难题 物流货运过程中,货物安全是首要关注的问题。传统的锁控方式存在诸多不足,例如易被撬锁、监控盲点以及难以实时追踪货物状态。据统计,每年因货物丢失或损坏导致的经济损失高达数十亿美元…

景区智能厕所系统,打造智能化,人性化公共空间

在智慧旅游的大潮中,景区智能厕所系统正逐渐成为提升公共空间智能化、人性化水平的关键载体。作为智慧城市建设的重要组成部分,智能厕所系统不仅解决了传统公厕存在的诸多问题,更通过科技的力量,为游客创造了更加舒适、便捷的如厕…

中电金信:加快企业 AI 平台升级,构建金融智能业务新引擎

在当今数字化时代的浪潮下,人工智能(AI)技术的蓬勃发展正为各行业带来前所未有的变革与创新契机。尤其是在金融领域,AI 模型的广泛应用已然成为提升竞争力、优化业务流程以及实现智能化转型的关键驱动力。然而,企业在积…

Zabbix 配置 VMware 监控

Zabbix监控VMware 官方文档:https://www.zabbix.com/documentation/current/en/manual/vm_monitoring Zabbix 可以使用低级发现规则自动发现 VMware 虚拟机管理程序和虚拟机,并根据预定义的主机原型创建主机来监控它们。Zabbix 还包括用于监控 VMware …

缓存与数据库数据一致性问题

在用了redis缓存的系统中,正常情况下,一个读操作会先查缓存,如果在缓存中查到了,则直接返回,如果缓存中没有,则会查数据库,再将查到的数据写到redis中,然后返回。如下图:…

PDI-kettle工具连接本地虚拟机Ubuntu上的数据库

PDI 配置ubuntu数据库配置Kettle工具 PDI版本&#xff1a;9.4 Ubuntu2204&#xff1a;10.11.8-MariaDB-0ubuntu0.24.04.1 Ubuntu 24.04 配置ubuntu数据库 安装 apt install -y mariadb-server配置监听地址 cat > /etc/mysql/mariadb.conf.d/99-kettle.cnf << EOF …

国衍科技——梅雨季节文物保护专家

尊敬的文物保护者们 随着梅雨季节的脚步渐近&#xff0c;湿润的空气和连绵的雨水不仅为我们的生活带来了不便&#xff0c;更为文物保护工作带来了严峻的挑战。在这个季节&#xff0c;文物发霉的风险急剧上升&#xff0c;每一件珍贵的文化遗产都面临着被时间侵蚀的威胁。然而&am…