Channels ▼
RSS

Design

Agile and Large Teams


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 leadership—the 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 appropriate—they don't need to wait for their official meetings to communicate—putting 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 reason—the 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 all—size 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:

  • Agile DBA. This person works closely with developers and technical experts to support data-oriented activities on team.
  • Architecture Owner. This person is responsible for the architecture of the system, or subsystem, that the team is working on. Architecture owners don't develop and then dictate the architecture, but instead they facilitate the identification of the architecture, actively help to implement it, guide the implementation of the (sub)system, and mentor developers in the architecture and in architecture skills. Also known as technical lead and architect (inappropriate due to the collaborative leadership nature of the role).
  • Developer. This person models, writes, tests, and documents the system. Also known as programmer (inaccurate due to the scope of the role).
  • Domain Expert. This person has expertise in one or more aspects of the domain. This includes support staff, business specialists, business executives, auditors, and the "gold owner". Also known as a subject matter expert (SME).
  • Independent Tester. This person performs continuous, investigative testing throughout the lifecycle to find defects that were not discovered by the development team's testing efforts. Also known as tester, investigative tester, and quality assurance (inaccurate due to the scope of the role).
  • Product Owner. This person represents the stakeholder community. They are responsible for prioritizing the requirements and are the primary source of domain information. Also known as customer, stakeholder representative, and end user (inaccurate as end users are only one of many stakeholders).
  • Team Coach. This person is responsible for keeping the team on track, for helping team members deal with problems, and for helping the team to secure necessary resources. Also known as team lead, Scrum master, and project manager (inappropriate as this is primarily a leadership role and agile teams are self-organizing).
  • Technical Expert. This is a person with expertise in one or more technical aspects of the system. This could be a security person, a build expert, a tool smith, a legacy data owner, an operations staff member, or many other technical roles. They are brought on to the team on an as needed basis for a short period of time, sometimes just a few hours or days, to help them address a technical issue. Also known as subject matter expert (SME).


Scott is Practice Leader Agile Development for IBM Rational.


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 

Video