Balancing Agility and Discipline
In this blog post, Bill Nichols discusses the fact that the engineering disciplines needed to apply agility to mission-critical software systems are not as well defined or practiced. His posts gets its title from a from book written by Barry Boehm and Richard Turner in 2003. He summarizes a talk given by James Over at the SEI Agile Research Forum. He starts to explain what it means to be agile. He then presents the major impediments identified in 2010 by the authors of the Agile Manifesto reunited to hold a retrospective on Agile.
Those were:
* Lack of a ready backlog
* Lack of being “done”
* Lack of teamwork
* Lack of good design
* Tolerating defects
He then presents five principles that help address impediments identified by the Agile community in their retrospective:
* Build high-performance teams. Software is knowledge work
* Plan every project
* Use a measured process to track progress
* Design before you implement
* Make quality software the top priority
In summary, Over told the audience that in working on 20 different projects in 13 organizations to implement these disciplined agile principles, SEI researchers found that organizations delivered more functionality than originally planned or finished ahead of schedule. Among the other benefits, Over stated, was that projects realized test costs of less than 7 percent of the total cost with an average cost of quality of only 17 percent. Also, the projects delivered software with an average of only six defects in 100,000 lines of new and modified code.