写点什么

发展不能违背康威定律

  • 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:002835
用户头像

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

关注

评论

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

Apache Ranger安全认证配置

大数据技术指南

大数据 3月日更

Ai特征选择,一篇就够了

泳鱼

Python 人工智能 机器学习 深度学习 AI

一文归纳Python特征生成方法(全)

泳鱼

Python 机器学习 深度学习

Google Material Design 元件库

zhuchuanming

元件库

经常被面试官问道的JavaScript数据类型知识你真的懂吗?

koala

JavaScript 面试 大前端

数据加密:你应该知道的数仓安全

华为云开发者联盟

数据加密 GaussDB(DWS) 数仓安全 透明加密 加密函数

【实战问题】-- 缓存穿透之布隆过滤器(1)

秦怀杂货店

缓存 布隆过滤器 java;

2021年GitHub上爆火的999页Java面试宝典终开源

比伯

Java 编程 架构 面试 程序人生

4大华为云“安全镖局”秘密法宝揭秘

华为云开发者联盟

态势感知 华为云 企业主机安全 数据安全中心 Web应用防火墙

EGG NETWORK永动金融EFTalk火爆来袭

币圈那点事

Ai调参炼丹,一篇就够了

泳鱼

Python 机器学习 深度学习 AI

阿里P7大牛手把手教你!美团Android开发工程师岗位职能要求,附赠课程+题库

欢喜学安卓

android 程序员 面试 移动开发

小鼎量化机器人系统开发详情介绍

系统开发咨询1357O98O718

实例讲解如何制作Python模式程序

华为云开发者联盟

Python 编程语言 星型程序 Programs 模式程序

SpringBoot-技术专题-启动自动装配过程

码界西柚

spring springboot

WC,误删数据库了,会被开除吗?

Java架构师迁哥

牛链NB系统开发案例源码

系统开发咨询1357O98O718

如何阅读 Java 字节码(Byte Code)

Kori Lin

Java JVM bytecode 字节码

领域驱动设计101 - 绑定模型与实现

luojiahu

领域驱动设计 DDD

Spark性能调优-Shuffle调优及故障排除篇

五分钟学大数据

spark Spark调优 3月日更

悖论和直觉

阳龙生

蚂蚁金服三面Java面试题全解析,这也太难了吧

Java架构之路

Java 程序员 架构 面试 编程语言

深入理解 JavaScript, 从作用域与作用域链开始

koala

JavaScript 大前端

【JS必知必会】高阶函数详解与实战

koala

JavaScript 面试 大前端

巩固知识体系!应聘高级Android工程师历程感言,面试建议

欢喜学安卓

android 程序员 面试 移动开发

滴滴OCE惊喜福利!

滴滴云

如何实现一个简易版的 Spring - 如何实现 Setter 注入

mghio

spring 依赖注入

Python OpenCV 图像旋转,取经之旅第 11 天

梦想橡皮擦

3月日更

一束光的旅程

白洞计划

Java面试必问:一位清华大牛用一个坦克大战讲明白了23种设计模式(视频+源码笔记)

Java架构追梦

Java 架构 面试 设计模式 坦克大战

Android开发必须要会!2021大厂Android面试经验,全网疯传

欢喜学安卓

android 程序员 面试 移动开发

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