草庐IT

架构师成长路线

汤师爷说 2023-03-28 原文

想一两句话把什么是架构师讲清楚,是非常困难的一件事。因为架构师这个角色是致力于解决高度复杂抽象的问题,所以架构师的定义也是复杂抽象的。

但并不代表架构师的定义无法被解释清楚,我们需要多花点时间,从各个角度来解读架构师。

通俗地解释下什么是架构师

大白话的解释就是,软件产品的设计师。架构一词最早源于建筑学,软件工程的架构师与建筑工程的架构师有非常多的相通之处,都是负责“产品”的宏观层次设计。

他人眼中的架构师

在老板眼中,架构师是一名技术领导者,带领团队攻关疑难问题。

在业务方眼中,架构师是一座业务与技术的桥梁,填平业务与技术的鸿沟。

在研发团队眼中,架构师是一位导师与布道者,是大家学习的榜样。

在项目组眼中,架构师是团队的灵魂支柱,再困难的问题,抽丝剥茧后,也能变成小问题。

在外行人眼中,架构师是年薪百万的牛人,但为何如此,摸不清门道。

架构师服务的客户是谁?为客户提供什么价值?

  • 第一类客户是需求人员(大多时候是产品经理,有时直接面向商家)。架构师需要不断和需求人员沟通,协助需求人员挖掘出客户的本质需求,保证需求质量。

  • 第二类客户是研发人员。架构师需要将复杂的业务问题和目标,抽丝剥茧后,转换为技术设计语言(应用、模块、包、代码、API、数据库表等),指导研发人员顺利落地;出现技术争议时,在业务价值与技术实现间做好平衡。

  • 第三类客户是业务决策者,架构师需要为重大业务规划提供的技术演进方案与成本预估,帮助决策者做出正确决策。

架构师的日常工作

  • 领导重大项目,攻关疑难问题,确定项目的架构方案和技术选型。

  • 制定研发标准和规范:编码标准,工具规范,评审流程,测试方法等。

  • 将架构方案和决策文档化,和团队沟通,并推行自己的架构主张。

  • 把高层的业务目标变成可落地的技术规划和解决方案。

  • 检查、评审他人的技术方案。

  • 和其他架构师、利益相关者沟通协作。

  • 为团队澄清复杂问题、指导研发人员、解决技术冲突等。

架构师的种类

业界对架构师并没有统一的分类标准,推荐这两种分类方式:

从宏观到微观的角度划分:

企业架构师:决定整个公司的技术路线和技术发展方向,有些公司也会称为首席架构师,实际上这个角色已经无限接近于CTO了。

系统架构师:负责整体系统的架构设计,着眼全局,不太注重某个应用本身的架构,而是各服务、各系统间的协作上,更加关注如何综合运用已有的产品和技术,来实现客户期望的业务模式。系统架构师要求通晓业务、软硬件技术等多项知识,对知识的全面性要求很高。

应用架构师:负责某个应用的技术架构,主要偏业务型应用,关注理解业务,梳理模型,设计模式、接口、数据交互等方面,同时也需要关注服务器负载、可靠性、伸缩性、扩展性、数据库切分、缓存应用等方面的基础架构设计。

按软件工程阶段划分:

解决方案架构师:专注于解决方案的规划和设计,所谓“解决方案”,就是把产品、技术、基础设施、理论方法,通过不断的组合和创新,满足客户的特定业务目标和需求。

业务架构师:从企业战略、组织结构、业务流程、业务能力等维度入手,关注某一个行业或业务领域的分析,产出业务模型,最终指导系统模型设计。也可以叫业务领域专家、行业专家、业务咨询师、资深顾问。

应用架构师:负责某个应用的技术架构,主要偏业务型应用,关注理解业务,梳理模型,设计模式、接口、数据交互等方面,同时也需要关注服务器负载、可靠性、伸缩性、扩展性、数据库切分、缓存应用等方面的基础架构设计。

特定技术架构师:专精某项技术的资深专家,从事中间件架构、大数据架构、安全架构、存储架构、网络架构、前端架构等技术规划和架构设计工作。

本文介绍的架构师主要偏向于系统架构师和应用架构师。

架构师在项目中的协作关系

架构师成长阶梯

 

架构师核心能力模型

这里以阿里P序列职级为例:

 

 

成长建议

  • 阅读经典书籍

    • 业务理解能力:《有效需求分析》《如何落地业务建模专栏(徐昊)》

    • 领域建模能力:《实现领域驱动设计》《领域驱动设计Gitchat专栏(张逸)》《解构领域驱动设计》

    • 微服务架构设计能力:《微服务架构设计模式》

    • 大型项目协作能力:《学习敏捷 构建高效团队》

    • 沟通表达与文档能力:《金字塔原理》《麦肯锡问题分析与解决技巧》

  • 规划实践机会

    • 提升业务理解能力:主动参与业务规划讨论,基于业务方向,思考技术规划并与TL确认。

    • 提升领域建模能力:多找产品沟通,牵头梳理复杂业务问题,分析领域模型的症结,产出治理方案。

    • 提升微服务架构能力:组织技术团队成员,梳理线上频发的疑难问题,找出架构设计的不合理处,产出治理方案。

    • 提升大型项目协作能力:尽早了解业务OKR,主动承担大型项目的PM角色。

    • 提升沟通表达能力:主动沉淀高质量的业务/技术知识文档,向TL或HR寻求跨团队分享机会。

  • 参加培训与分享

    • 学习极客时间等平台的线上课程与技术大佬分享。

    • 参与技术分享大会与沙龙。

    • 参加公司组织的培训课程,并完成作业。

  • 针对能力模型,持续自我复盘,总结沉淀。

 

 

有关架构师成长路线的更多相关文章

  1. ruby - Ruby 和 Ruby on Rails 中的三层架构 - 2

    我是一名决定学习Ruby和RubyonRails的ASP.NETMVC开发人员。我已经有所了解并在RoR上创建了一个网站。在ASP.NETMVC上开发,我一直使用三层架构:数据层、业务层和UI(或表示)层。尝试在RubyonRails应用程序中使用这种方法,我发现没有关于它的信息(或者也许我只是找不到它?)。也许有人可以建议我如何在RubyonRails上创建或使用三层架构?附言我使用ruby​​1.9.3和RubyonRails3.2.3。 最佳答案 我建议在制作RoR应用程序时遵循RubyonRails(RoR)风格。Rails

  2. ruby-on-rails - 具有六边形架构和 DCI 模式的框架和数据库适配器 - 2

    我尝试用Ruby设计一个基于Web的应用程序。我开发了一个简单的核心应用程序,在没有框架和数据库的情况下在六边形架构中实现DCI范例。核心六边形中有小六边形和网络,数据库,日志等适配器。每个六边形都在没有数据库和框架的情况下自行运行。在这种方法中,我如何提供与数据库模型和实体类的关系作为独立于数据库的关系。我想在将来将框架从Rails更改为Sinatra或数据库。事实上,我如何在这个核心Hexagon中实现完全隔离的rails和mongodb的数据库适配器或框架适配器。有什么想法吗? 最佳答案 ROM呢?(Ruby对象映射器)。还有

  3. python - python的进化路线图是什么 - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭11年前。在哪里可以找到python的中期或长期路线图。借此,我可以了解决策者最关心的是什么,以及他们眼中这门语言的future是什么?一段时间以来,我一直在玩弄Python和Ruby,制作我在开发中需要的中小型工具,通过比较不同但相似的语言来获得乐趣和学习。Python和Ruby的许多特性可以互换,或者易于模仿。两者都引入了一些函数式风格并且发展迅速(Py300

  4. 设计一个亿级高并发系统架构 - 12306火车票核心场景DDD领域建模 - 2

    “架设一个亿级高并发系统,是多数程序员、架构师的工作目标。许多的技术从业人员甚至有时会降薪去寻找这样的机会。但并不是所有人都有机会主导,甚至参与这样一个系统。今天我们用12306火车票购票这样一个业务场景来做DDD领域建模。”开篇要实现软件设计、软件开发在一个统一的思想、统一的节奏下进行,就应该有一个轻量级的框架对开发过程与代码编写做一定的约束。虽然DDD是一个软件开发的方法,而不是具体的技术或框架,但拥有一个轻量级的框架仍然是必要的,为了开发一个支持DDD的框架,首先需要理解DDD的基本概念和核心的组件。一.什么是领域驱动设计(DDD)首先要知道DDD是一种开发理念,核心是维护一个反应领域概

  5. ruby - 在公共(public)基本路线之上构建路线? - 2

    我有一个共同的基本路径;说:get/base我需要执行基本身份验证并为该路径下的所有子调用工作。说:get/base/foo和get/base/bar。查看http://www.sinatrarb.com/intro.html#Helpers建议我应该能够通过使用助手来做到这一点。我正在查看pass帮助程序并在文档中触发新路由下使用call。但是,我读到的另一个建议是使用正则表达式IE%r{/base/?:(path)?}或类似的动态路由。那么:def'/base'#dosomefunkybasicauthstuffhere#toworkwithallrequesttothiscomm

  6. ruby-on-rails - 对多条路线使用同一个 Controller ? - 2

    有没有一种方法可以编写以下路由,这样您就不必每次都指定相同的Controller?...get'jobs'=>'pages#jobs'get'contact'=>'pages#contact'get'terms'=>'pages#terms'get'privacy'=>'pages#privacy' 最佳答案 这里有几个选择:在这三个中,第一个即Usingscopeas"/"将创建与问题中定义的routes创建的完全相同的路由.1。使用范围作为“/”scope"/",controller::pagesdoget'jobs'get'c

  7. ruby-on-rails - 没有命名路线的rails3中的远程form_tag - 2

    使这个实际异步发布的正确咒语是什么?form_tag:controller=>:magic,:action=>:search,:method=>post,:remote=>truedomethod=post和remote=true只是在url的末尾被压扁,而不是真正使它成为一个ajaxpost。 最佳答案 我发现唯一的方法是将url参数包装在url_for方法中。form_tagurl_for(:action=>:create,:id=>@artist.id),:remote=>truedo但是,如果您需要传递method参数,您可

  8. ruby - 写密集型特征的架构 - 2

    我在当前项目中使用由Oracle数据库和memcached支持的RubyonRails。有一个非常常用的功能,它依赖于单个数据库View作为数据源,并且该数据源内部有其他数据库View和表。这是一个虚拟数据库View,能够从一个地方访问所有内容,而不是物化数据库View。大多数情况下,如果用户正在使用他们希望更新的功能,那么让数据保持最新很重要。从这个View获取数据时,我将安全表内部连接到View(安全表不是View本身的一部分),其中包含一些我们用来在更细粒度级别上控制数据访问的字段。例如,安全表有user_id,prop_1,prop_2列,其中prop_1,prop_2是数据库

  9. 漫谈测试成长之探索——测试排期 - 2

     《漫谈测试成长之探索——测试文档》一文阐述了我们可以从项目维度去整理测试相关的文档来提升自己,本文将从测试排期方面探索成长方向。我们知道,对于做一件事,我们要有计划,要知道目标,要记得看时间。这里的时间对应到软件测试中就是与测试相关的时间节点。如图1-1所示,在以往工作中,作为一线测试执行者,我们一般会关注开发计划提测时间、测试计划开始时间、测试计划完成时间和需求计划发布时间。但是,经验告诉我们,只关注这些时间节点似乎是不够的。在实际工作中,需求实际可测试的时间经常延期,测试时间被压缩的情况时有发生。图1-1传统测试排期时间节点那我们能做些什么去规避或者说减少测试工期被压缩的情况呢?本文的答

  10. ruby-on-rails - rails 路线 : define root to namespace - 2

    我有2个Controller:app//controllersposts_controllers.rb/mobileposts_controllers.rb我的routes.rb看起来像这样:root:to=>"posts#index"resources:postsnamespace:mobiledoroot:to=>"posts#index"resources:postsend但是当我访问/mobile时,它无论如何都会渲染第一个Controller的索引页面,也试过这个:namespace:mobiledoroot:to=>"mobile/posts#index"resources

随机推荐