【AICon】 如何构建高效的 RAG 系统?RAG 技术在实际应用中遇到的挑战及应对策略?>>> 了解详情
写点什么

通向架构师之路

  • 2013-09-29
  • 本文字数:2017 字

    阅读完需:约 7 分钟

对于不少开发者来说,成为架构师是职业生涯的目标之一,但是如何成为一名架构师却没有统一的教科书,Verizon 公司架构师 Bett Correa 在 Software 期刊中分享了自己的成长经历,主要的经验包括均衡发展技术知识、领域知识和沟通能力,通过架构来学习架构等。

Bett 认为架构师必须了解当前的系统如何满足客户的需求、实际地编写代码、与客户坐下来观察他们的工作,并听取他们对软件的反馈意见。架构师必须搭建团队之间的桥梁,理解每一个团队自身的局限性,并考虑每一方的利益。当业务部门提交了一个新需求,架构师必须据此做好满足需求的软件设计,并把这个设计“卖给”各个团队,让开发人员和测试人员了解新系统的工作原理。

另一个重要的经验是平衡,技术知识、领域知识和沟通能力之间的均衡发展。Bett 最初以技术人员出身,学习 Perl 和 JavaScript 等,当时并没有考虑软件设计方面的问题,基本的想法就是“尽可能快速地编码,快速完成任务”,但事实上,通常这只是个美好的愿望。在进入一家新公司之后,她开始了解该领域的知识和沟通技巧。她参与了 Toastmasters 活动,提高了当众演讲和主持会议的自信。然后,开始了解系统需求,这离软件设计又近了一步,她把其他人对系统的需求分析记录下来,持续了几个月的时间。

她的工作导师要求她了解软件系统和工作原理,并与各个团队的领导打交道。一段时间之后,她成为了该系统的专家,许多人开始找其咨询。同时,与业务部门接触,了解市场行情,学习公司的发展史,阅读公司网站上的白皮书和在线课程。

这些付出都是值得的,因为 Bett 可以轻松地与开发人员和业务客户讨论系统的细节问题。一天,导师让 Bett 设计软件系统的一个小模块,她需要决定许多方面的问题。Bett 发现设计不是一个简单的 01 游戏——设计都是权衡和妥协的结果,比如增强安全性可能会降低响应速度。某个决定在一些情况下生效,在其他情况可能无效,Bett 不得不找出失效的各种情况,并评估其成本。

在担任架构师的第一年,Bett 服务于 25 个不同的小项目,从而全面的了解软件系统的各个部分。她能够将不同背景的人组织到一起拿出解决方案。慢慢地,Bett 发现她的设计可以让各个利益相关者接受。

Bett 建议,如果你想培训架构师,那么:

  • 发展团队中的好苗子
  • 给他们安排一些设计工作
  • 鼓励互相交流
  • 让整个团队都考虑设计问题
  • 鼓励设计方面的培训

如果你想成为架构师,那么:

  • 找一位资深的架构师做导师
  • 寻找可以设计的项目,甚至可以是自己的项目
  • 参加正式培训并多交流
  • Bett 特别强调,只有亲自参与设计,才会真正了解应该如何设计。起初有很多想法,但是开始设计了,才发现很多都是不切实际的。通过课程或者书籍来培训自己是必要的一步。

说到架构师的沟通和协商能力,Dave Hendrichsen 在“软件架构师的 12 项修炼”中做了充分的剖析,建议如下。

多说“是”,少说“不是”

架构师经常会被咨询问到某个项目的可行性,并提供从战略到战术的多个替代方案,附带若干成本选项,以使商务伙伴能根据特定项目的投资进行判断。架构师与项目评估团队的角色不是决定要构建什么,而是决定怎样构建。我们试图说出的答案是“对,我们能构建这个项目,这些是相关的信息”。产生的信息需要包括诸如所考虑的各种替代方案、项目风险(以及可能的规避策略)、基于的假设条件,以及需要指出的突出问题。我们不是在寻找这样的答案:“不行,这个项目不可行,但我们能构建另一个项目(通过消除原困难项目中的难题,而代之以我们想构建的那些特性)。”

但是,如果一个项目或任务不可行,我们需要立即巧妙地指出评估结果、解释原因,并提供替代方案。这通常归结于法律法规、行规等原因,以致“不”是正确的回答。当然了,还有其他一些例外情况:提出需求的人是想逃避工作,需求违反了公司的政策,或者你手头有优先级更高的工作,无法让你有足够时间来对需求做出满意的答复。这些情况下,你要清楚地告诉人家你说“不”的原因。

了解别人和自己的沟通需求

在架构师的世界中,你需要例行地与许多人交流。你可能在上一次会议上与有些人谈过话,也可能没有和这些人谈话。挑战就是快速了解人们在说什么,他们怎么说这些话,来“读懂”本次会议。
观察关键的时刻,即做出决定的时刻是一个要点,以此识别人们提出的问题和关心的地方,来加强核心概念,帮助你关注会议的方向以及把会议引向一个成功的结论。为了认识这些关键时刻,我们需要吸收所有信息,包括提供给我们的语言或非语言信息。

观察别人的举止能够告诉我们如何与每个人最好地沟通。由于每个人都不相同,并且对沟通也有不同的需求,架构师必须让传递信息的方式适应这些需求,以确保有效沟通。
关键点就是我们要基于每个听众成员的沟通需求来匹配交流风格。有些人的反应是能够看出来的,他们的偏好能够用诸如“我明白你的意思”之类的话辨别。另外有些人需要倾听,并吸纳语言细节,他们的偏好能够用诸如“我在听你说”之类的话辨别。还有一些人在交谈中比较情绪化,他们的偏好能够用诸如“我觉得怎样怎样”之类的话辨别。

2013-09-29 09:448967
用户头像

发布了 501 篇内容, 共 246.5 次阅读, 收获喜欢 57 次。

关注

评论

发布
暂无评论
发现更多内容

中国信通院高质量数字化转型产品及服务全景图发布,合合信息多项AI产品入选

合合技术团队

人工智能 数字化转型

以商业大数据技术助力数据合规流通体系建立,合合信息参编《数据经纪从业人员评价规范

合合技术团队

人工智能 大数据 商业化

面部表情识别技术在安全领域的应用

来自四九城儿

go-zero 是如何实现令牌桶限流的?

AlwaysBeta

Go 源码 微服务 go-zero 限流器

2023-08-10:景区里有m个项目,也就是项目数组为int[][] game,这是一个m*2的二维数组 景区的第i个项目有如下两个参数: game[i] = { Ki, Bi } Ki一定是负数,

福大大架构师每日一题

左程云 福大大架构师每日一题

【NodeJS】GLIBC_2.28 not found CentOS7不兼容Node高版本

ReturnTmp

node.js centos

面部表情识别在医疗领域的应用

来自四九城儿

面部表情识别技术的挑战与解决方案

来自四九城儿

通义千问开源模型部署使用

WizInfo

通义千问

ToolLLM:能够使用 16000 种真实 API 的 LLM

Zilliz

AIGC Towhee LLM

【我和openGauss的故事】一文帮你理解openGauss的高可用方案

daydayup

【我和openGauss的故事】openGauss5.0在某省医保局实时数仓应用

daydayup

作为网络报表分析工具的Quick BI,其功能如何

夜雨微澜

【我和openGauss的故事】原生openGauss与Oracle数据库函数兼容性对比验证测试

daydayup

【我和openGauss的故事】Navicat连接openGauss_5.0.0 企业版数据库

daydayup

【我和openGauss的故事】openGauss 主备架构及同步复制模式理论学习与验证测试

daydayup

【我和openGauss的故事】openGauss5.0特性:CM支持VIP仲裁特性

daydayup

从推动到拉动:研发效能提升的第一性原理

CODING DevOps

openGauss-graph 0.2.0版本正式上线

daydayup

新利好带动 POSE 持续上扬,月内几近翻倍

BlockChain先知

【Linux】云服务器自动化部署VuePress博客(Jenkins)

ReturnTmp

jenkins vuepress

C++友元函数和友元类的使用

攻城狮Wayne

AIGC 浪潮下,鹅厂新一代前端人的真实工作感受

CODING DevOps

ARTS 打卡第 1 周 鸿蒙入门开发教程:一文带你详解工具箱元服务的开发流程

坚果

ARTS 打卡计划 HarmonyOS OpenHarmony 元服务 ArkTS

【我和openGauss的故事】在Kylin桌面版操作系统中配置openGauss的ODBC数据源

daydayup

openGauss数据库源码解析系列文章——安全管理源码解析(三)

daydayup

怎么快速更新Python的第三方库?教你一招,小白也能学会

程序员晚枫

Python 编程 计算机 第三方库

UE虚幻引擎游戏开发:游戏鼠标双击判定方法!

3DCAT实时渲染

UE虚幻引擎 UE教程 3D游戏制作教程

可视化数据分析工具是什么?可以用来做什么?

巷子

openGauss数据库源码解析系列文章——安全管理源码解析(四)

daydayup

javascript之webAPIs(1)

timerring

JavaScript

通向架构师之路_语言 & 开发_崔康_InfoQ精选文章