2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

如何用社会技术设计改善架构决策

  • 2025-09-05
    北京
  • 本文字数:1733 字

    阅读完需:约 6 分钟

大小:858.14K时长:04:52
如何用社会技术设计改善架构决策

软件开发中的社会技术设计理念的核心是创建一个系统,在这个系统中,人和技术都能蓬勃发展,通过一些赋能约束来促进合作、激发一致性和共享理解,这不仅改善了架构,还使工作更有效、适应性更强,让人更满意。在OOP会议上,Xin Yao 就社会技术设计和变革促进发表了演讲。

 

今天的软件专业人员需要穿梭在技术、商业和社会复杂性的迷宫中。根据 Xin Yao 的说法,在这个环境中蓬勃发展需要的不仅仅是技术和商业专长,社会技术设计可以帮助我们应对这些挑战。

 

社会技术设计指的是主动构建一个系统,在这个系统中,人和技术都能蓬勃发展。社会系统带来的不仅仅是创造更好软件的手段,其本身的目标更为重要,正如 Yao 所解释的:

它认识到软件不仅仅是由代码和业务需求塑造的,更是由团队的工作方式、彼此交流和决策的方式塑造的。良好的架构会随着人类合作逐步演变。


在其核心,社会技术设计平衡了结构和自主性,为协调提供了足够的稳定性,同时留有适应和变化的空间。这就像爵士乐一样,Yao 说:有一个框架,一个调性,一个时间戳,还有一些指导性约束,但在这些条件之内,音乐家可以即兴发挥、响应和共同创作。制约太多,系统就会变得僵化;约束太少,就会陷入混乱。

 

像传统的软件架构一样,一致性是社会技术架构中理想的特质。部分要一个个融入整体,Yao 说。传统方法是自上而下、提前强加一致性,但、而社会技术架构通过赋能约束来自下而上地涌现一致性,这些约束为一致性设定了条件倾向,然后才会形成系统范围内的构成和治理性约束(Alicia Juarrero 的约束框架)。

 

Yao 提到,赋能约束,如探索性设计、反思性对话、参与式建模和语言化,共同塑造了信息的旅程,也就是知识流经系统以及关系复杂化的过程。这些互动让决策规模大大缩减,使团队能够共同应对不确定性,找出有意义的区别,并完善他们的心智模型:

相比预设的结构,这种方法培养了局部一致性,架构洞察在具体情境中涌现出来,然后固化下来。


Yao 提供了一个社会技术原则改善软件架构的具体例子:

我们来看一个现实世界的场景:一家公司在微服务的混乱中挣扎。他们有完全解耦的服务,每个团队都拥有自己的清晰界定的上下文,但业务却举步维艰。为什么?因为团队不小心过度解耦,失去了对大局的把握。


关键的工作流跨越多个服务,需要不断交接,破坏用户体验,甚至使小的变更也成为官僚主义的噩梦,Yao 说。他们没有进行另一次“回归模块化单体架构”的行动,而是应用了社会技术原则——从赋能约束开始。

 

Yao 提到,他们引入了反思性对话、参与式建模和上下文映射工作坊,开发者、产品人员甚至客户支持坐在一起。人们提出深入的问题,互相提出难题以定位疑虑和担忧的问题,并讨论以前大家认为不可讨论的问题:

目标是重新发现基本的联系和机会,找出我的位置,找出我们在整体故事中的位置。


结果发现,一些团队之所以拆分服务,并不是因为业务需求,而是因为团队领导没经过验证就假设大家彼此不愿协调优先级,Yao 说。

 

随着大家都理解了这些新的发现,团队围绕实际业务流程开始自我重组。一些服务合并,其他服务重新定义了它们的接口,她说。构成约束涌现出来,成为稳定的跨团队沟通模式,随着时间的推移,治理约束维持了自主性和对齐之间的平衡。

 

结果是更快的交付、更少的依赖和更快乐的团队。不仅是软件架构变得更好,工作也更好做了。这一切都始于大家一起提出更好的问题,Yao 总结道。

 

InfoQ 采访了Xin Yao,讨论了如何进行社会技术设计。

 

InfoQ:社会技术设计与传统软件设计有何不同?

Xin Yao:与通常将系统视为异源性——由外部工程师作为生产因素而构建的传统软件设计不同,社会技术设计采用了自源性视角(Humberto Maturana:自源性和认知)。

 

我们是我们所设计的更大系统的一部分。软件创造者的福祉不仅仅是创作更好软件的手段;它本身就是一个目标。

 

InfoQ:技术债务通常被框定为纯粹的代码问题,但你的演讲表明它也是一个社会技术问题。你能解释技术债务是如何受到社会动态影响的,以及团队如何更有效地解决它吗?

Yao:技术债务通常源于由于观点差异、未经验证的假设和缺乏深入设计探讨的合作而匆忙做出的决策。

 

解决这个问题需要提高沟通、决策效率和改善跨团队关系——不仅仅是重构代码。

 

原文链接:

How Sociotechnical Design Can Improve Architectural Decisions

2025-09-05 15:377660

评论

发布
暂无评论

产品质量战略

L3C老司机

spring中那些让你爱不释手的代码技巧(续集)

Java架构师迁哥

2021,你值得看的华为/字节/腾讯/京东/网易/滴滴面经分享

比伯

Java 编程 架构 面试 计算机

Serverless应用开发小记

zFish

DevOps AWS IaC #Serverless Terraform

精选算法面试-哈希表III

李孟聊AI

面试 算法

第九周作业&总结

胡益

没有女友的建议,不会有这家巨头公司

李忠良

28天写作

第二章作业

Deborah

Flink 中极其重要的 Time 与 Window 详细解析(深度好文,建议收藏)

五分钟学大数据

大数据 flink

产品 0 期 - 第二周作业

vipyinzhiwei

产品经理训练营

CSS(四)——CSS高级特性

程序员的时光

CSS 程序员 七日更 28天写作

第四课作业

糯米~

甲方日常 89

句子

工作 随笔杂谈 日常

28天瞎写的第二百二十八天:用 UltraEdit 找优越感的故事

树上

28天写作 UltraEdit

静下心来

阿萌

程序人生 28天写作 青城

第二周作业-利益相关方

Au revoir

同VLAN不同网段能否ping通

项目管理文化建设

Ian哥

28天写作

批判性思维自修课(二)

石君

28天写作 批判性思维

范文写作结构分析之“危险的分工”

JiangX

28天写作

产品经理训练营 - 第二次作业

Jophie

产品经理训练营

Logi-KafkaManager开源之路:一站式Kafka集群指标监控与运维管控平台

张亮

Java 大数据 kafka 开源 消息队列

基于Serverless实现静态博客访问统计功能

zFish

Serverless AWS Hugo Pulumi

CSS(三)——简单的网页制作

程序员的时光

CSS 七日更 28天写作

微信视频号的长视频和短视频 | 视频号28天(18)

赵新龙

28天写作

产品经理训练营作业 01

KingSwim

产品经理训练营-第二周学习总结

月亮 😝

开发质量提升系列:checklist 投产检查列表(下)

罗小龙

代码质量 28天写作 checklist

Android硬编解码MediaCodec使用笔记

Changing Lin

android 音视频

【shell命令】关于mac的open命令

程序员架构进阶

工具 Shell 命令行 28天写作

汽车AI芯片(28天写作 Day18/28)

mtfelix

自动驾驶 28天写作 车规级芯片

如何用社会技术设计改善架构决策_软件工程_Ben Linders_InfoQ精选文章