The Teams vs. The Code

Conways law says that the software you ship will reflect your org chart. But there's been this idea floating around that the software architecture will shape your org chart.

This seems to suggest to that having a loosely coupled architecture means you will have a loosely coupled teams. If each team is more or less autonomous does that mean the people on the team won't feel a part of something bigger?

Another interesting question is what happens if there is a mismatch? What happens if you have a loosely coupled software architecture but a tightly coupled team? Will your software architecture start to become tightly coupled too? What about a tightly coupled software architecture but loosely coupled teams?

I have some experience with the last question. I'm on a team right now that is loosely coupled to several other teams but we are all working on software that is tightly coupled. What ends up happening is that we have to work around the formal structure of the teams to create a sort of shadow team. This shadow team is made up of members from each of the teams involved on a project. The shadow team meets regularly to coordinate our efforts. The shadow team does all the actual work. If the shadow team doesn't get to do its work there's a good chance the project fails to meet deadlines.

The shadow team works against the structure of the organization but with the structure of the code. I've worked on three shadow teams so far and it's frustrating. I start to question the ability of managers and other leaders to see reality. I start to wonder why bother with the shadow team. I start to think maybe the project needs to fail.