Conway's Law

康威定律

系统的架构会'长得像'设计它的团队的组织结构

进阶

这是什么

1968年,程序员梅尔文·康威提出了一个看似搞笑实则深刻的定律:'设计系统的组织,其产生的设计等同于组织间的沟通结构。'什么意思呢?如果你的公司有4个团队分别做前端、后端、数据库和运维,那你的系统架构大概率也是这4个模块,而且模块之间的接口'别扭程度'跟团队之间的'沟通难度'成正比。更经典的例子:如果4个团队分别开发编译器,最终产物是一个4-pass编译器。康威定律的启示是:想改变系统架构,你可能需要先改变团队结构。反之亦然——如果你想要某种系统架构,先把团队组织成对应的结构。

什么时候用

设计系统架构时、重组团队时、诊断系统'为什么这么乱'时、微服务/单体架构决策

什么时候别用

极小团队(3-5人)不需要考虑这个定律;系统已经稳定只需小幅修改时

怎么用

  1. 1

    审视你的团队结构

    画出当前的团队组织图。哪些人是一个小组?小组之间怎么沟通?

  2. 2

    对比系统架构

    画出系统模块图。你会发现它和团队结构惊人地相似

  3. 3

    决定先改哪个

    如果想要新的系统架构,先调整团队结构(逆向康威定律)。想要更好的团队协作,先优化系统架构

  4. 4

    用小团队做完整产品

    亚马逊的'两个披萨团队'就是对抗康威定律的方法:让每个小团队能独立交付完整功能

真实例子

微服务与团队拆分

Netflix从单体架构迁移到微服务时,不是先把代码拆了,而是先把团队拆成一个个小型自治团队(每个团队负责一个微服务)。他们深刻理解康威定律:系统架构要跟着团队结构走。每个团队像一个小公司,自己开发、自己部署、自己运维。

微软的组织变革

2014年萨提亚·纳德拉接任微软CEO后,打破了原来按产品线(Windows、Office、Server)划分的组织结构,重组为'体验与设备'和'云与AI'两大方向。这个组织变革直接推动了微软从'软件公司'向'云服务公司'的架构转型。

这条内容真的有用吗?

相关模型