Big Honking Agile
When the size of an agile team gets to be around 20 or more, you discover that you need to divide and conquer and take a "team of teams" approach. The typical strategy is to organize your larger team into a collection of smaller teams, and the most effective way to do so is around the architecture of your system. Each subteam should be responsible for one or more subsystems, enabling them to work as a small agile team responsible for delivering working software on a timely basis. This strategy is often referred to as "Conway's Law" after Melvin Conway who introduced it in the late 1960s, and is one of several lean development governance strategies.
Figure 3 depicts the strategy for organizing a large agile team into a collection of smaller ones. The primary difference is the addition of the coordinating body, something that is typically required around the point where a team is made up of 50 or more. The coordinating body is organized into three subteams:
- The project management team (sometimes called the "program management team") is comprised of the team coaches from the various subteams, and their goal is to coordinate the management aspects of the overall team. At scale it isn't sufficient to simply focus on project leadershipthe technical aspects of project management, such as dependency management, contract management, resource tracking, and vendor management become more critical due to the inherent complexities of large projects. This team is likely to have a short coordination meeting each day, referred to as a "scrum of scrums" in the Scrum methodology, where current status is shared and issues are identified.
- The architecture ownership team is comprised of the architecture owners from the subteams and is responsible for architecture envisioning at the beginning of the project (www.agilemodeling.com/essays/initialArchitectureModeling.htm) to identify the initial technical direction and provide a basis for organizing the subteams. In the first week or so of the project, their goal is to identify the subsystems and their interfaces, a strategy called "managing to the seams", reducing the coupling between subsystems and thereby reducing the amount of coordination required by subteams. Throughout the project this team will meet on a regular basis to share ideas and resolve technical issues, particularly those surrounding changes to the interfaces of subsystems. They may choose to meet daily (this is particularly common at the beginning of the project) but as the architecture stabilizes, it is common to see them meet once or twice a week.
- The product ownership team is comprised of the product owners of each subteam and is responsible for coordinating the requirements effort across the subteams. They will need to negotiate requirements with the larger body of stakeholders whom they represent and divvy them out among the subteams appropriately. They'll also need to negotiate the inevitable disputes between subteams as to who should do what and what a requirement actually means. This is a challenging job, and as I described in "Scaling On-Site Customer" (www.ddj.com/architect/204801134), the product owners need solid business analysis skills.
The coordinators will collaborate as appropriatethey don't need to wait for their official meetings to communicateputting people together teams to resolve issues as needed. Coordination naturally becomes more complicated when your team is distributed, particularly when subteams are in different time zones.
An interesting observation is that as the size of the team grows, there is very little difference in the day-to-day activities of developers. They are insulated from the complexities of large teams by activities of the coordinators.
Size Matters
If you don't see your traditional job role on the diagrams, there's a good reasonthe work is likely being done, but in a different manner. For example, product owners and developers do business analysis, yet the role of business analyst doesn't appear in any of the diagrams. I often work in organizations that have traditional roles such as business analyst, quality assurance analyst, architect, designer, and so on in their organization/process charts. Invariably these organizations are still transitioning to agile and are still in the process of evolving their culture to reflect agile philosophies. It takes time, often several years, to shift to the agile paradigm.
Perhaps the spam is right after allsize does in fact matter because it is one of the determinants of your team organization. The agile community is in the process of rediscovering the divide-and-conquer techniques of yesteryear, applying them in more collaborative and lean ways, but inevitably in a manner that experienced IT professionals will quickly recognize.
Common Agile Project Roles
There are several roles common to agile teams. Sometimes a person will take on several roles and sometimes several people may be in the same role. Each role is briefly described and common synonyms indicated for most. Some synonyms are inappropriate within the context of agile projects and some are inaccurate. The common agile project roles are:
|
Scott is Practice Leader Agile Development for IBM Rational.