Wednesday, March 2, 2011

Good teams are like good code: Highly Cohesive, Loosely Coupled

The best Scrum teams I've worked with have been reflections of the code they produced: highly cohesive -- meaning focused on a project or product -- and loosely coupled -- having minimal direct dependencies on other teams. Like excellent code, excellent Scrum teams don't just happen; it takes careful planning and continuous attention to detail.

Let's start with high cohesion. The highest performing Scrum teams are initially built around a purpose, a specific project or product, and allowed to focus exclusively on that project or product. But after that the team's design is emergent, adapting to changing circumstances and increased knowledge about teamwork, the domain, and the product. Like a well-designed class, the team is directed at its purpose and resists attempts to redirect it. Once the current project or product is complete, the team can take on a new project or product, just like a cohesive class can be instantiated repeatedly. The key is that, like a cohesive class, the team is focused.

Great Scrum teams are also loosely coupled to other teams. What this means is that a great team has very few dependencies on other teams, that is, the team can complete its work without waiting on outside experts or the work of other teams. I can already hear the objections: "Okay, so a great team contains all of the skills and knowledge needed to complete its own work, fine. How can you keep even the best team from waiting on other teams to complete their work?" Okay everyone, turn your eyes to the Product Owners in the room.

A great team must have a great Product Owner. The best Product Owners ensure that their team's backlog is independent of the backlogs of other teams. Even more, a great team of Product Owners can decouple the backlogs of all teams to the maximum extent possible, ensuring that all of their teams, like all of the objects in a well-designed application, only access each other through well-defined interfaces that minimize dependencies.

The next time you survey your organization's Scrum teams, think like a software architect and work on making your teams highly cohesive and loosely coupled!

All for now....


No comments:

Post a Comment