top of page
  • lobodan

We All Got Conway's law wrong


Conway's law is not about structure of resulting (software?) system.

It's about communication and organizational boundaries.

Why care?

Ok, wikipedia copy-paste will follow:

Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure.
— Melvin E. Conway

So why would you care in a first place? The design will resemble structure of organization, nothing seems to be right or wrong here.

The problem is that Conway's law is not about resulting system, it's about organizational boundaries and how hard they're to traverse.

Meet Magestic* Finance Incorporated

Once upon a time wise management at Magestic Finance Inc. decided they need a brand new bank. A bank that consists of:

  1. online banking

  2. apps

  3. backoffice

  4. integration with other companies

apps are omitted for clarity

Indubitably wise management decided to split the work just like on pic related.

However even simplest tasks took weeks. Why is that?

Looks like it contradicts with cross-functional scrum teams, right? But no one says we're agile, never mind using scrum.

The communication is the key

The problem of this setup is not that is contradicts some peculiar principle. It's about communication overhead.

No interactions are equally cheap. Communication with your team mate is almost free. Communications with other departments might have some friction, and if you ask external company something they might just deprioritize you.

Systems resemble organizational structure because people are trying to reduce overhead.

Even people who don't know Conway's law will try to hold stuff they work often close to them, which leads to incorporation into appropriate module.

Let's count boundaries.

Simplest scenario: show field from database on ui.

  1. make changes in storage service

  2. make changes in middleware

  3. make changes in ui


  1. inter-org boundary between Magestic Finance and Tiger Services

  2. inter-team boundary between backend and frontend team

The Fix

Even reduction of one boundary leads to significant decrease in delivery time. And despite backend team has more work, it's amount is negligible comparing to overhead reduced. In simplest case of single value display it will be <1 day, comparing to ~2 weeks before.

Ponies and Unicorns

The reason why teams should be cross-functional is in reduction of communication overhead. It might be less important with Waterfall-like approaches, but this is super important in agile frameworks based on quick communication.

So in my majestic (not magestic) universe filled with magic and fairies, split should look something like this:

* The name is sarcastic ;)

18 views0 comments

Recent Posts

See All


Post: Blog2_Post
bottom of page