The Government Accounting Office released a report this week entitled “Effective Practices and Federal Challenges in Applying Agile Methods.” You can find the report here GAO – Effective Practices and Federal Challenges in Applying Agile Methods.
In the report, ten practices were described as being used and effective across five agencies of the federal government. These were:
1. Start with Agile guidance and an Agile adoption strategy
2. Enhance migration to Agile concepts using Agile terms
3. Continuously improve Agile adoption at both the project level and organization level
4. Seek to identify and address impediments at the organization and project levels
5. Obtain stakeholder and customer feedback frequently
6. Empower small, cross-functional teams
7. Include requirements related to security and progress monitoring in your queue of unfinished work (the backlog)
8. Gain trust by demonstrating value at the end of each iteration
9. Track progress using tools and metrics
10. Track progress daily and visibly.
The report focused heavily on the creation of software in short increments in small modules. And although we know that this is key in Agile practices, one of the areas that the report did not highlight was that Agile is about lean practices focused on the elimination of waste in the software development process. See Lean: Avoiding Waste in Software Development
There was no mention of the fact that a defining characteristic of Agile practices is that you are working with a prioritized backlog of functions that may or may not truly be necessary in the “final” version of the solution. Statistics have shown that only about 60% of the originally conceived functionality defined by the business in the visioning stages is truly necessary to delivering the business value required. As you work through the backlog and reprioritize it after each sprint or iteration, functionality that was originally conceived as being needed is pushed to the bottom of the backlog and can potentially be eliminated in the “final” solution. No time or dollars are ever spent in elaborating requirements that are not needed; no code is ever written for functions that do not deliver true business value; no testing need be done on features that are not necessary to deliver that value. So I would add one more to the list:
11. Do not waste time and money implementing features and functions that deliver limited or no value.
If 40% of the costs associated with waterfall-based methods could be eliminated simply through the elimination of wasteful practices of implementing functionality that provides limited or no value than as citizens and taxpayers we all win.