Conway’s Law and the Impact of Agile Culture on Code Repositories: A Value Stream Perspective
How the way software development teams work is reflected in their code repositories and the impact this has on the customer experience? The visual I have shows that Agile teams might be doing great work within their own areas of responsibility, but it suggests they might be missing the bigger picture of the overall value stream and the ultimate customer experience. This reminds me of Conway’s Law and makes me question how Agile culture is transforming (or failing to transform) in this context.
What is Conway’s Law?
Conway’s Law, which has echoed through the software world since the 1960s, states: “The design of a system reflects the communication structure of the organization that builds it.” In other words, the way teams work, their organizational structure, and their processes directly influence the architecture of the code and systems they produce. If teams operate in isolation, this isolation can manifest in the code as silos (separate compartments).
As seen in the visual, different teams represented by colors (e.g., Backup, Calculations, Ads, Export, Front-End) appear to be intensely focused on their own domains. However, it’s worth questioning whether their individual successes create a cohesive and harmonious whole and whether the customer experience is being overlooked in the process.
What’s Happening in Agile Culture?
Agile methodology is built on flexibility, collaboration, and fast delivery. Agile teams can often make rapid progress within their sprints and be highly effective in their specific areas. However, based on this visual, it seems that a lack of interaction or focus on the overall value stream among teams could lead to unintended consequences.
- Lack of Wholeness: Teams can become so focused on their own tasks that they forget how their work contributes to the overall customer experience. This can show up in the code as well: disjointed modules, integration challenges, or inconsistent user experiences.
- Inter-Team Conflicts: A “us vs. them” mentality can create barriers between teams. If one team progresses without fully understanding or collaborating closely with another, it can lower motivation and threaten the overall success of the project.
- Neglecting the Customer Experience: If teams overlook the customer’s overall journey and value stream, the code they produce might only achieve technical success. Yet, the true purpose of software is to deliver value to users.
What Can We See in Code Repositories?
According to Conway’s Law, the way teams work is reflected in their code. Even if an organization has adopted Agile culture, if that culture doesn’t truly foster holistic collaboration, the following issues might appear in code repositories:
- Excessive modularity or weak integration between modules.
- Unnecessary complexity or overlapping functionality in areas where teams depend on each other.
- Features that aren’t customer-focused or aligned with the user experience.
This can slow down development processes in the long run and come at a high cost to customers. When customers encounter an inconsistent experience, the reliability and value of the product can be called into question.
Possible Solutions
To address this issue, a few steps can be taken:
- Value Stream Mapping: Teams can regularly engage in mapping exercises to understand the overall value stream and customer journey. This can break down silos and create a shared vision.
- Encourage Cross-Team Collaboration: More communication and collaboration between teams can be fostered. For example, representatives from different teams could be invited to Agile meetings.
- Prioritize Customer-Centricity: Customer feedback and experiences should be a constant guide throughout the development process. This helps teams look beyond individual successes.
- Review the Organizational Structure: If the team structure is amplifying the negative effects of Conway’s Law, it may need to be reevaluated.
Drawing from the visual, we can see that while Scrum teams may excel in their own domains, a work style that lacks overall cohesion and customer experience focus could lead to problems in code repositories and the final product. Conway’s Law succinctly summarizes this: Our way of working is reflected in our code. If we truly want to embrace Agile culture and deliver a customer-focused product, we must increase collaboration between teams, center the value stream, and review the organizational structure.
This approach can boost team motivation and provide customers with a more consistent and valuable experience. Otherwise, the cost of a “us vs. them” mentality and a lack of wholeness in our work could be steep for all of us.
What do you think about this? I’d love to hear your thoughts or examples from your own experiences or projects in the comments!