【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

架构师成功沟通的 3 个关键

  • 2021-03-12
  • 本文字数:3048 字

    阅读完需:约 10 分钟

架构师成功沟通的3个关键

软件架构师们总是跟我说,他们的利益相关者并不关心他们的架构。于是我问:你真的跟他们解释清楚你的架构了吗?我得到的答案是:一年前我和他们讨论过。因为架构的重要性,架构师们希望架构知识能自行传播。但问题是,这种自行传播并不会发生。也许是因为“重要的事情”经常被“紧急的事情”压倒,也许是因为架构本身存在一些复杂性。因此,进行恰到好处的架构沟通是架构师的一项任务,但这件事情却经常被忽略。

架构师应该花多少时间在沟通上


这就提出了一个问题:架构师应该花多少时间在沟通上?Philippe Kruchten(一位著名的研究人员)在“软件架构师要做些什么”一文中给出了答案。


要想取得成功,一名软件架构师或软件架构团队,必须在外部关注点和内部关注点之间取得某种微妙的平衡。外部关注点包括:倾听客户和用户的声音、关注技术的发展、规划长期的愿景、推动开发团队前进。内部关注点包括:花时间做出正确的设计决策,并加以验证和记录。与这种平衡偏离太远的团队将会陷入一些陷阱,我们将这些陷阱叫作软件架构团队的反模式。


Kruchten 总结了架构师的三种工作模式,大致可以映射成信息的输入、处理和输出。


  • 内部工作:这是架构师的深层工作,本质上就是思考和处理信息。如果是在一个架构师团队中,这可能涉及到沟通。

  • 内部沟通:架构师必须了解很广泛的知识,包括去倾听、阅读和问问题。

  • 对外沟通:在建立了新信息后,架构师需要将它们传播出去,包括文稿演示、写文档和提供支持。


Kruchten 认为,这三者之间最理想的比例应该是 50:25:25。所以架构师只需要花一半的时间在架构上,另一半花在了解当前状态以及传播目标状态上。



如果这种平衡被打破,就会出现各种问题。


例如,一个完美主义者常常忽略外部沟通,Kruchten 将这种架构称为“镀金”架构。虽然做出的产品很棒,但一问世可能就过时了。



忽视内部沟通和外部沟通的架构师就像被关在“象牙塔”里。虽然做出来的产品可能可以在内部保持一致,并且足够漂亮,让产品所有者沾沾自喜,但却脱离了实际。学院派尤其容易掉到这个陷阱里。


如果架构师忽视了内部工作,那么架构一致性缺失的问题就会在整个产品中表现出来。架构的组成部分可能是经过精心制作的,但不能很好地组合在一起。



太过关注外部沟通让架构师变成了顾问。虽然开发人员对架构师提供的支持表示赞赏,但架构背后却缺乏具有凝聚力的思想。



在实践当中,架构师们似乎不会太过关注内部沟通。这样的架构师可能既不写架构文档,也不为团队提供支持。因此,他们提供不了任何具有表面价值的产品,也无法长久生存下去。

有效地传播架构


让我们回到最初问题:为什么人们对架构不够了解?假设有一个架构,架构师不是在“镀金”,就是在“象牙塔”里。这两种情况都缺乏对外沟通,所以应该把更多的注意力放在这里。以下是一些对于我来说比较适用的想法。

异步传播


我喜欢异步传播,埃隆·马斯克也是,所以我确信这种方式是有效的。



异步传播的一大优点是它具有比较好的传播性。例如,对于电子邮件,你可以快速复制粘贴或转发信息。实际上,书面信息在一般情况下来说具有很好的传播性。其他媒体形式,如播客或视频也具有传播性,但我很少看到它们被用在软件架构当中。


最常用的是图表,但可惜的是,图表的关注点过于极端。我见过很多很多的架构图,因为缺少文字解释而让人难以理解。有些架构图其实很糟糕(例如使用了不一致的符号),但即使是好的架构图也需要有上下文信息。


优秀的演讲幻灯片都有相似点,它们都是为演示文稿而设计的。例如,乔布斯的演讲就颇具传奇色彩。



这张幻灯片上有三个图标,分别代表了三种相关的技术。在接下来的几秒钟里,乔布斯宣布将这三种技术融合在一起,变成了 iPhone。幻灯片是叙述背景的一部分,但它本身是没有什么意义的。如果你设计的幻灯片本身可以作为讲义使用,那么你的演示就会受到影响。


如果你记得要演示的内容,那就可以把幻灯片作为提醒。同样,我假设大多数架构图仅作为记忆辅助用途。要成为一种有效的沟通媒介,需要赋予它们更多的内容。


异步传播的一种方式是使用架构决策记录,我之前已经介绍过了。决策记录本身应该是可理解的,因此你可以向人们提供它们的链接,让他们自己去了解架构,不需要向他们解释。当然,这并不是说你要把更多的时间花在对外沟通上,而是要更有效地利用这些时间。

常规简报


在过去的两年里,我每周都会给项目成员(大概有 250 人)发一份简报。此外,还有其他几十个人也会收到简报,因为他们明确提出需要简报。这说明至少有一半人不是我的目标受众,因为他们不是开发人员。但是,即使是管理人员也很喜欢这样,因为简报让他们对项目中使用的技术有了一定的印象。我的部门主管就说:“请不要停止写简报!”


简报包含了我一周内处理的所有事情,这可能是一个我觉得还不够为人们所了解的小工具。它包含了新的架构决策记录和即将到来的或正在进行的活动。


写博客的经验有助于写好简报。我在这个网站发表的最早一篇博文是在 2009 年写的,但我在那之前的几年就已经写过博客了。写简报最重要的是要坚持始终如一。


我会用到一些有趣的图片,它们在简报中起到不同寻常的作用。很多人告诉我,他们最开始只是想看看这些有趣的图片,到最后却不知不觉地把整封邮件都看了。此外,一些人告诉我,看简报是他们一周当中最重要的事情。


写科学论文对你也很有帮助。如果能得到同事的正确评价,你就可以训练自己写出简洁而正确的简报。我的简报只包含简短的摘要,但也提供了大量链接,可以进一步阅读更详细的资料。有时候我甚至会偷偷地做一些自我宣传,比如在简报中加入我的博客链接。

具象化是一种通用的语言


《Made to Stick》一书介绍了很多可以让信息更容易被记住的方法,其中之一就是具象化。书中讲述了在车间工作的工人和绘制图纸的工程师这两种角色之间的冲突,这与架构师与开发人员之间的冲突非常相似。


工人在想,为什么你们不直接到车间来告诉我零件应该怎么安装?工程师在想,我该怎么做才能把图纸做得更好?

双方是否应该有更多的同理心,并在中间的某个位置达成共识?事实上不是这样的。解决的办法应该是让工程师改变他们的行为。为什么?正如 Bechky 指出的那样,物理机器是最有效的沟通领域,每个人都能熟练地理解机器。因此,问题应该放在机器层面解决。这个故事的寓意并不是要“把事情简单化”。工人面临复杂的问题,他们需要聪明的答案。这个故事的寓意是要找到一种“通用的语言”,一种每个人都能流利表达的语言。这种通用语言就是具象化。


这听起来和我们最初的问题非常相似。开发人员可能会忽略架构,因为架构对于他们手头要解决的问题来说不够具象化。这本书建议的解决方案不是让开发人员接受更好的培训,而是让架构师承担起为具体的场景解释架构的职责。


我的简报也强调了这一点。因为我每个星期都需要挑选一些细节的东西放到简报中。即使这些东西并不会与每个人都相关,但它们会促使我去解释更广泛的架构背景。


抽象是专家们的“专属品”,是对已广为人知的具象概念的概括。但是,如果概念还没有被很好地理解,进行抽象就没有意义。所以,架构师应该减少谈论大的概览,至少应该保持简短。


要进行具象化的沟通,架构师需要做大量的工作。但请记住,这应该只占用你 25%的时间。你可以使用更具传播性的异步传播方式,正如我之前提出的第一个建议。

总结


如果缺乏沟通,架构师应该承担起这个职责。如果架构师注意到人们对架构不了解,他们必须改进他们的外部沟通方式。对此,我有三点建议:


  • 编写良好的架构决策记录

  • 定期撰写简报

  • 针对具体的场景解释架构


原文链接:


http://beza1e1.tuxen.de/communicate_architecture.html

2021-03-12 14:023266
用户头像

发布了 114 篇内容, 共 43.5 次阅读, 收获喜欢 311 次。

关注

评论 1 条评论

发布
用户头像
架构思维更具化
2021-03-12 15:49
回复
没有更多了
发现更多内容

从 Linux源码 看 Socket(TCP)的accept

赖猫

c++ Linux 后端 服务器 epoll

CSS布局之display:flex(二)

Augus

CSS 11月日更

首次!统一调度系统规模化落地,全面支撑阿里巴巴双 11 全业务

阿里巴巴中间件

阿里云 云原生 中间件 双十一 统一调度

拥抱智能,AI 视频编码技术的新探索

阿里云视频云

阿里云 视频编码 机器视觉 视频编解码 视频云

项目管理常见问题系列(1)—资源不足

一叶而不知秋

项目管理

手把手教你学Dapr - 2. 必须知道的概念

MASA技术团队

C# .net 微软 后端 dapr

不要再重复造轮子了,Hutool这款开源工具类库贼好使

沉默王二

Java

openGauss支持国密SM3和SM4算法

openGauss

#数据库

经验分享|参与内部开源的心路历程

云智慧AIOps社区

大前端 数据可视化 知识分享 开源治理 flyfish

盲盒app开发

Python代码阅读(第58篇):压缩列表

Felix

Python 编程 列表 阅读代码 Python初学者

极光笔记丨关于数据大屏一比一还原设计稿这件事

极光JIGUANG

大前端 数据可视化

我是一个程序员,总想引导亲朋好友走上编程的伟大航路......

图灵教育

程序员 App Inventor

手把手教你学Dapr - 1. .Net开发者的大时代

MASA技术团队

C# .net 微软 后端 dapr

一招教你通过焱融 SaaS 数据服务平台+ELK 让日志帮你做决策

焱融科技

云计算 分布式 SaaS 公有云 文件存储

企业如何选择合适的低代码平台?这6点不得不考虑!

J2PaaS低代码平台

低代码 低代码开发 低代码平台 企业数字化

第一本 Compose 图书上市,联想大咖教你学会 Android 全新 UI 编程

图灵教育

Compose AndroidUI

速来!开源中国首届飞算SoFlu组件开发悬赏赛来袭

SoFlu软件机器人

Java

月薪3万的大厂测试工程师裸辞3个月,送外卖谋生背后的真实感悟

六十七点五

程序员 程序人生 软件测试 软件自动化测试 测试工程师

Nebula Graph 源码解读系列 | Vol.04 基于 RBO 的 Optimizer 实现

NebulaGraph

图数据库 源码解读

LevelDB Java&Go实践

FunTester

Java 自学 Go 语言 leveldb FunTester

【云小课】如何初步定位GaussDB(for openGauss)慢SQL

华为云数据库小助手

GaussDB GaussDB(for openGauss) 华为云数据库

就是简单,全球100多万读者,一起跑通前端HTML5与CSS3知识!

图灵教育

大前端 HTML5, CSS3

我所理解的社群—社群本质

sec01张云龙

社群 11月日更 社群运营

如何穿透ToB客户生命周期的全链增长?

ToB行业头条

模块三作业——外包学生管理系统架构设计

覃飞

Nginx中间件渗透总结

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

开源数据库风起云涌,openGauss 恰逢其时

openGauss

#数据库

前端的状态管理与时间旅行:San实践篇

百度开发者中心

大前端 san san-store 技术实践

浅谈 RDMA 与无损网络

青云技术社区

云计算 云原生 存储

Web 用户体验设计提升实践

Shopee技术团队

大前端 web开发 用户体验 交互设计 可访问性

架构师成功沟通的3个关键_架构_Andreas Zwinkau_InfoQ精选文章