Agile+ is a hybrid agile process. This means that it leverages the speed and cost-effectiveness of agile methods while at the same time incorporating features that make it a robust, highly-disciplined process suitable for large, mission critical projects and even for projects in highly regulated industries such as health care and avionics.
While Agile+ is a process, it is also a philosophy. Process is a means to an end. In most cases, the end is high-quality, cost-effective software that solves a client’s business problem. If the process interferes with that end, then the process must change. Although there is a defined project-specific process for each project, sometimes that process must be modified on the fly to meet client needs. In such cases, the review of the process checklist at the next iteration planning will include discussing any deviations from the process, and making any needed modifications to the project-specific process document.
Traditional plan-driven (waterfall) approaches to software development have a major fatal flaw. They assume that everything that needs to be known is or can be known up front and that requirements can be frozen before development starts. This assumption is almost always false for one or more of the following reasons.
- During the course of development, requirements discovery takes place. Things come to light that were not known at the beginning.
- During the course of development, technical challenges arise which might impact the architecture, design, requirements, and general direction of the application.
- During the course of development, market conditions and business realities may change, requiring changes in the application.
There is a double penalty to pay for trying to do all of the requirements and specifications up front. In the first place, it is much more expensive to try to do it all at once before development begins without the benefit of seeing the software evolve in parallel with evolving requirements. Secondly, when the inevitable changes come, it is much more expensive to accommodate those changes since so much work has been done up front that now has to be done over. One of the tenets of iterative development is, “If you haven’t done it yet, you don’t have to do it over!” The Agile + best practices are focused on two main objectives, building the right software and building the software right