An IT program is a large IT delivery team composed of two or more sub-teams. The purpose of program management is to coordinate the efforts of the sub-teams to ensure they work together effectively towards the common goal of producing a consumable solution for their stakeholders. In this blog posting we explore the team structure of a typical large agile program and the type of activities that program management addresses.
Team Structure of a Large Program
We described in detail the team structure of a large agile program in Large Agile Teams. The key ideas are that a large team is organized as a team of teams and that structures are required to coordinate people, requirement, and technical concerns within the overall program. Where a “scrum of scrums” may suffice for this coordination on small-to-medium sized programs (say up to five or six sub-teams), it quickly falls apart for larger programs. As a result large programs will find that they need: a Product Management (or Product Ownership) strategy where the Product Owners coordinate their activities; an Architecture (or Architecture Ownership) strategy where the Architecture Owners coordinate their activities; and a Product Delivery (or Management) strategy where the Team Leads coordinate their activities. The Program Manager, a specialist role, is responsible for coordinating the overall leadership team.
The following structure shows how the Product Owners of each sub-team are also members of the Product Management/Product Ownership team for the program. Similar structures, see Large Agile Teams, will also exist for Product Delivery and Architecture as well.
The Program Lifecycle
DAD includes a Program lifecycle for a team of teams, depicted below.
What Program Management Addresses
There are several important concerns that program management needs to address:
- Architecture. The sub-teams must have a common architectural strategy that they are working to. The initial architectural strategy will be identified early and will evolve throughout the lifecycle, requiring the architecture owners on each team to coordinate their efforts. Although there are several ways to do this, a common strategy is for all of the AOs to hold a weekly architecture meeting to work through program-level technical issues. Subsets of the AOs will also hold impromptu meetings during the week to deal with immediate technical issues as needed.
- Work item management. The sub-teams work together to develop a consumable solution for their stakeholders. The implication is that they need mechanisms in place to allot the work between the sub-teams, including development of requirements, change requests, and fixing of defects. The product owners on each team will need to coordinate their efforts throughout the lifecycle. Common strategies to do this include the POs holding joint look-ahead modelling sessions (called backlog grooming/refinement sessions in Scrum) with key stakeholders; work coordination sessions where they identify dependencies between requirements and match the work to the sub-teams; and impromptu sessions between a subset of the POs throughout an iteration to work through dependencies between work being performed by different sub-teams.
- Management coordination between sub-teams. The sub-teams will need to coordinate “management issues” with one another on a regular basis. These management issues may include conflict resolution between people on different teams, enabling people to move between teams, financial tracking across teams, and many other concerns. As a result the teams leads, and any appropriate team members involved with a given issue, will need to meet regularly to address any issues. A common mechanism for this is for the team leads to hold their own daily coordination meeting after their team’s coordination meeting, a strategy that is often referred to as a “scrum of scrums”.
- Sub-team cadences. The Disciplined Agile framework, unlike other agile scaling strategies, does not insist that sub-teams follow the same iteration cadence (or even that sub-teams follow an iteration-based lifecycle). For example, one sub-team may have a one-week iteration length, five sub teams have a two-week iteration length, and two sub-teams follow DAD’s continuous delivery lifecycle which doesn’t have iterations at all. Or you may find a program where every sub-team has two-week iterations. Or a strategy where all teams take a continuous delivery approach. Each of these strategies make sense in certain situations, but none of them make sense in all situations. There is no single “best practice“.
- Release cadence. There are two fundamental issues here. First, how often will the overall program release into production? Will it release monthly? Quarterly? Bi-annually? Something else? Second, how often will the sub-teams release their work internally to other sub-teams so that it may all be integrated and tested as a whole? At the end of each iteration? At the end of each day? Several times a day?
- Governance. The program will be governed. This governance is both inward facing, the program should govern itself, and be outward facing, the program is part of your organization’s portfolio and therefore will be governed as part of your organizations overall IT governance strategy.
Relationship with Other Process Blades
There is clearly overlap with some of the activities in the portfolio management, enterprise architecture, release management, product management, and IT governance process blades. The issue is one of scope. Where these process blades address activities across all of IT, the scope of the related activities within program management is the program itself. For example, where enterprise architecture addresses architectural issues for the entire organization, the architecture activities encompassed by program management relate only to the architecture of the solution being produced by the program.
- For an understanding of the team structures within a program, read the article Large Agile Teams.
- Why Do We Need Agile Programs?
- Disciplined Agile Program Management: A Goal-Driven Approach
- Discplined Agile Program Management: External Workflow
- Disciplined Agile Program Management: Internal Workflow