I have been repeatedly asked why agile is better than traditional approaches. The most succinct answer I have is that agile software enables you to build the right software at the right time. Agile is not about in-depth analysis and design that leads to a detailed work breakdown structure that predicts on what day of the year eighteen months in the future a team will deliver a certain set of features. Agile is about continuous prioritization and customer review to insure that meaningful features are delivered when they are ready and when they are needed.
The ability to make significant changes to design and behavior throughout the evolution of a system is perhaps one of the biggest differentiators of software development from other engineering disciplines. And because we can, we should, and usually do. This allows organization who embrace agile principles to have agility in how their business execute as well. Being agile implies applying approaches and processes that maximize an organization's effectiveness in creating software. Agility is not a chaotic undisciplined approach to hacking software. If this is what you are doing, you are not being agile, you're being stupid!
Agile software development approaches promote high levels visibility, predictability, and quality. Visibility is achieved through frequent, regular team status checks and product demos. Predictability is achieved through continuous monitoring and updating of the project backlog and burn-down. And, quality is maximized by embracing test-first approaches eliminating the "over-the-fence" paradigms of legacy software development methodologies.
An essential characteristic of agile software development is that barriers that separate people that work together are removed. Legacy software processes and methodologies formalize these barriers as entry and exit criteria, documentation, and sign-offs. Developers, testers and documenters are far removed from the actual users of the system and must often interpret documentation rather than directly ascertaining desirable system behavior.
Successful agile teams are collaborative and cross-functional. All disciplines required to build the product are involved in all aspects of development. The customer is pulled deeper into development and testers and writers are pulled earlier into design and elaboration. The barriers to success are broken down. Information is now instantaneously available to all who need it. Errors resulting from interpretation can be resolved in real-time.
Comments
You can follow this conversation by subscribing to the comment feed for this post.