写点什么

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

  • 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:377626

评论

发布
暂无评论

如何建设私有云原生 Serverless 平台

北京好雨科技有限公司

Serverless 云原生 #Kubernetes#

6大奖项揭晓!40+优秀白帽齐聚百度安全BSRC年度盛典

百度安全

漏洞 SRC

flutter系列之:创建一个内嵌的navigation

程序那些事

flutter 架构 大前端 程序那些事

好家伙!阿里最新版高并发系统设计涵盖了“三高”所有骚操作

Java你猿哥

java面试 面经 春招 java 八股文

企业数字化转型的核心——工作流

力软低代码开发平台

企业软件开发成本高,该如何解决?

飞算JavaAI开发助手

观测云产品更新|数据存储策略变更优化;新增支持创建重名的仪表板、笔记、自定义查看器;DQL 参数生效优先级调整等

观测云

数据存储 可观测 产品更新 观测云 可观测性用观测云

接近8000字的Spring/Spring常用注解总结!安排!

Java你猿哥

spring Spring Boot ssm java

​在行 | AI赋能,为行业发展创造全新可能

用友BIP

什么大模型?我是时尚产业“大模王”!

白洞计划

AI AI制衣

从智能合约到机器学习:NFT 与 AI 技术的结合

NFT Research

大数据 AI NFT

软件测试/测试开发 | 电商业务的性能测试(一): 必备基础知识

测试人

软件测试 自动化测试 测试开发

一场HttpClient调用未关闭流引发的问题

石臻臻的杂货铺

HttpClient

【新版】使用 go-cqhttp 扫码登录,一键接入 ChatGPT 机器人到 QQ 群 | 社区征文

江户川码农

人工智能 聊天机器人 科技革命 openai ChatGPT

美团面试全流程详解:一面 + 二面

Java你猿哥

ssm Java 面试 面经 java

NFT数字藏品系统开发(开发及流程)丨数字藏品NFT系统开发(源码及功能)

系统开发咨询1357O98O718

80%的前端开发都答不上来的js异步面试题

loveX001

JavaScript 前端

2023我的前端面试小结

loveX001

JavaScript 前端

为什么00后都不知道什么是报销?

用友BIP

差旅报销

昇腾 AI 机器人发布,12 家企业、5 家高校签约,昇腾 AI 开发者创享日全国巡展沈阳首站成功举办

科技热闻

JS模块化—CJS&AMD&CMD&ES6-前端面试知识点查漏补缺

loveX001

JavaScript 前端

加速数据要素价值释放,用友打造高性能时序数据库

用友BIP

数据分析

两会共议北斗发展,华大北斗芯片领衔

江湖老铁

卓越工作的4个特征

凌晞

项目管理 技术管理 构架

IDO代币合约质押流动性挖矿分红系统开发(开发逻辑及源码)

系统开发咨询1357O98O718

精心整理SpringBoot学习笔记,从Web入门到系统架构

Java你猿哥

Java 面试 面经 校招 春招 java

代币质押流动性挖矿分红开发案例丨代币质押流动性质押挖矿分红系统开发(案例及详细)

系统开发咨询1357O98O718

腾讯前端一面常考面试题

loveX001

JavaScript 前端

一文带你深度探析:软硬科技协同创新正当时

加入高科技仿生人

人工智能 科技 科技创新 ChatGPT

问:你是如何进行react状态管理方案选择的?

beifeng1996

前端 React

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