The Government Accountability Office (GAO) has released a fascinating (PDF) report called “Software Development – Effective Practices and Federal Challenges in Applying Agile Methods”. The title is a little long winded but the content is brief and direct. It’s worth reading.
The GAO is part of the United States Congress. They audit and evaluate federal programs (among other duties). Their analysis of agile software development within the federal government is insightful.
Firstly, it’s critical to understand the context. The U.S. government is a massive establishment by any definition. There is no bigger candidate for adopting enterprise agile development.
Secondly, the government has well-established procedures for procuring, managing and delivering services. Everything from Requests For Information (RFI) to final payment is guided by policies and procedures. Iterative approaches to software development do not readily fit into the existing frameworks.
The GAO report identifies 32 practices and approaches that it deems “effective for applying Agile software development methods to IT projects”. The practices they highlighted largely align with how the government plans, organizes, executes and evaluates software projects. Ten of those 32 practices were found to be particularly effective.
Effective Agile Practices
- Start with Agile guidance and an Agile adoption strategy.
- Enhance migration to Agile concepts using Agile terms and examples.
- Continuously improve Agile adoption at both project and organization levels.
- Seek to identify and address impediments at the organization and project levels.
- Obtain stakeholder/customer feedback frequently and closely.
- Empower small, cross-functional teams.
- Include requirements related to security and progress monitoring in your queue of unfinished work (backlog).
- Gain trust by demonstrating value at the end of each iteration.
- Track progress using tools and metrics.
- Track progress daily and visibly.
These ten practices are good advice for any agile team, small or large. You should read the full report to extract more details behind these statements (it’s only 39 pages).
The report also identifies 14 challenges when adopting and applying Agile development in Federal agencies. Most of these challenges are predictable given the size of the Federal government and it’s long history of managing projects. Nevertheless, the points raised represent valid impediments that all of us need to watch for.
Impediments to Agile Practices
- Teams had difficulty collaborating closely.
- Teams had difficulty transitioning to self-directed work.
- Staff had difficulty committing to more timely and frequent input.
- Agencies had trouble committing staff.
- Timely adoption of new tools was difficult.
- Technical environments were difficult to establish and maintain.
- Agile guidance was not clear.
- Procurement practices may not support Agile projects.
- Customers did not trust iterative solutions.
- Teams had difficulty managing iterative requirements.
- Compliance reviews were difficult to execute within an iteration time frame.
- Federal reporting practices do not align with Agile.
- Traditional artifact reviews do not align with Agile.
- Traditional status tracking does not align with Agile.
You may be tempted to conclude that there’s no similarity between what you do and what the government does so the report doesn’t apply to you. In reality, there’s a lot of overlap. Read the report! If you’re involved with agile software development on an enterprise scale, you’ll encounter many of the same challenges. Read it!