阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

发展不能违背康威定律

  • 2016-10-18
  • 本文字数:1085 字

    阅读完需:约 4 分钟

在 SpringOne 大会上,来自 Credera 的 Jason Goth、Micah Blalock 和 Patricia Anderson 介绍了他们如何使用康威定律调整一个客户的技术架构和流程,帮助他们扭转了生产率下降的趋势,提高了高质量代码的生产速度。

康威定律指出“设计系统的组织……其产生的设计等价于组织间的沟通结构。”也就是说,团队创建的东西依赖于组织内部的沟通方式。

在为他们的医疗客户创建自定义分析平台时,Credera 了解到,对于一个或两个并行的软件开发团队而言行之有效的架构和流程,在并行开发团队发展到五个时会迅速陷入僵局。Credera 的方案是,根据康威定律重新定义问题,调整技术架构和流程。最后,经过努力,Goth、Blalock 和Anderson 扭转了生产率下降的趋势,提高了高质量代码的生产速度。在2016 年8 月份举行的SpringOne 大会上, Credera 分享了他们的经验

起初构建代码时,只有两个并行 Scrum 团队,Credera 取得了初步的成功。因而,客户给他们安排了额外的工作。新工作需要另外增加几个并行开发团队,以应对同时到来的截止期。遗憾的是,这种规模的增长让他们的工作陷入了停滞。简单的代码变更需要级联修改多个下游服务。团队之间在工作时间里召开的沟通会议呈指数增长。不同团队的工作量差别很大,有些团队的成员很早就离开了,而其他团队则工作到深夜。士气下降,截止期已过,事情悬而未决。

为了匹配自己的沟通结构,Credera 团队从技术上改进了其软件设计。为了完善划分,他们在代码上应用了开 / 闭原则。在多个团队操作类似的代码时,这可以降低成本,但会导致团队编写重复的代码。他们将这一做法称为 GARY(继续前进,重复自己)。为了解耦大部分代码,他们创建了一个水平面,以防止许多与生成的重复代码相关的缺陷使他们多次“野蛮地重构”。

Goth、Blalock 和 Anderson 进行了组织变革,停止违背康威定律。代码标准被取消,只为开发人员提供了一份可以让他们快速从一个代码集迁移到另一个代码集的准则。一名成员充当软件开发过程中所有团队的负责人,推动团队之间的沟通。另一名资深成员 Blalock 则成为“献祭的羔羊”,负责会见客户以及与遗留代码打交道。虽然并不常见,但团队成员在冲刺过程中会在团队之间流动。结果是会议频次降低。团队工作量正常化,士气上升。最后,截止期不再那么令人焦虑。

该团队是受 Fred Brook 的著作《人月神话》所启发。通过那本书,他们认识到,沟通成本加上工作划分会导致效率变化。只有当工作可以划分时,你才可能通过增加团队成员来提高效率。

该团队采用了 Spring 平台,并将微服务作为项目的一部分。他们使用 Angular 和 Java 编码。

查看英文原文 Grow with Conway’s Law, Not Against It

2016-10-18 19:002410
用户头像

发布了 1008 篇内容, 共 373.9 次阅读, 收获喜欢 340 次。

关注

评论

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

证券互动问答平台关键词监控提醒

木头

互动平台 证券监控 股市消息 监控提醒

构建高可用的MySQL

林一

MySQ MySQL 高可用 Maxscale

带你剖析鸿蒙轻内核任务栈的源代码

华为云开发者联盟

鸿蒙 任务栈 任务调度 任务上下文

如何针对美工与设计师的Maya工具进行版本控制

龙智—DevSecOps解决方案

react源码解析9.diff算法

全栈潇晨

react源码

内嵌双向链表的设计与实现

实力程序员

聊聊追求测试技术导致过度测试

陈磊@Criss

想做DBA,多租户管理你一定要知道这些

华为云开发者联盟

多租户 GaussDB(DWS) 资源池 存储空间 资源隔离

基于传感器的人体生命体征监控技术

不脱发的程序猿

物联网 传感器 智能医疗 人体生命体征监控技术

模块六作业

c

架构实战营

一文教会你认识Vuex状态机

华为云开发者联盟

Vue 应用 vuex 事件 父子组件

宜兴牵手百度智能云共建人工智能应用中心,推动数字经济创新发展

百度大脑

人工智能

百度灵医智惠明星案例获人民日报点赞:智慧医疗让看病更便捷

百度大脑

人工智能 智慧医疗

博云作为专业独立PaaS厂商,入选中国PaaS市场研究报告

BoCloud博云

PaaS

面试官:如何给字符串设计索引?

一个优秀的废人

MySQL 索引 字符串 索引优化

24道几乎必问的JVM面试题,我只会7道,你能答出几道?

北游学Java

Java 面试 JVM

☕️【Java技术之旅】带你一起探究String类不可变的特性

洛神灬殇

string 原理 字符串 6月日更

【LeetCode】从上到下打印二叉树 Java题解

Albert

算法 LeetCode 6月日更

春色满园关不住,带你体验阿里云 Knative

阿里巴巴云原生

云原生

☕️【Java技术之旅】站在Linux操作系统角度去看Thread(线程)

洛神灬殇

线程 Thread 6月日更 内核线程

开发感想 基于8051的数据采集系统(科技向)

万里无云万里天

经验总结 6月日更

小白必看的,JS中循环语句大集合

华为云开发者联盟

JavaScript js 循环语句 while循环 for循环

质量分析工具-监控大厅大揭秘

anyRTC开发者

音视频 WebRTC sdk

如何科学制定和管理项目计划?

万事ONES

项目管理 ONES 项目经理

如何进行可视化大屏视觉设计?

博文视点Broadview

Java 并发编程——线程池开篇

Antway

6月日更

Webpack 系列:如何编写loader

范文杰

webpack 6月日更

那个陪我打王者的兄弟进了阿里

艾小仙

待办事项列表,敏捷项目管理的核心工件

万事ONES

Scrum 敏捷 研发管理 ONES

理解Linux之文件I/O——知其然,知其所以然

奔着腾讯去

文件管理 Linux内核 文件I/O I/O模型

企业应用AI之路怎么走?飞桨实践有真知

百度大脑

AI 飞桨

发展不能违背康威定律_架构_Mikael Zandin_InfoQ精选文章