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

如何成为一名好的系统架构师但在实践工作中 技术专家和初级架构设计师的区别并不很明显 事实上很多技术专家其实就承担了初级架构设计师的角色 因为在系统复杂度相对不高的情况下 架构设计的难度不高 用不同的备选方案最终都能够较好

大家好,欢迎来到IT知识分享网。

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

一、了解系统架构师

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

1.作为技术领导者

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

2.作为开发人员

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

3.聚焦系统

4.具备企业家思维

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

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

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

6.良好的沟通

二、成长为架构师

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

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

1.工程师阶段

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

2.高级工程师阶段

3.技术专家阶段

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

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

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

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

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

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

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/143465.html

(0)
上一篇 2025-05-03 15:26
下一篇 2025-05-03 15:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信