Agile methods (Scrum, eXtreme Programming, Crystal, Feature Driven Development, etc.) have been moving into the mainstream over the past few years. Industry leaders like BMC Software, Capital One, DTE Energy and Yahoo! have discovered that, implemented appropriately, agile accelerates project delivery times, increases customer and employee satisfaction, and provides flexibility to changes in business requirements.
As new organizations commit to agile methods, many managers are faced with the question, “How do I begin implementing agile methods?” Before I cover some essential steps in Part 2 of this post to help you get started with agile delivery, it’s helpful to understand some core principles common to all agile methods.
Core Agile Delivery Principles
Although agile methods differ somewhat in their practices, all of them advocate these core principles–iterative and incremental delivery, collaboration and continuous improvement:
- Iterative and incremental delivery. Project delivery is divided into small functional releases or increments to manage risk and to get early feedback from customers and end users. These small releases are delivered on a paced schedule using iterations that typically last between one and four weeks each. Iterations are all fixed to the same length to maximize feedback and regularly force the tradeoffs necessary to deliver, and they are fixed-scope to retain stability. Plans, requirements, design, code and tests are created initially and updated incrementally as needed to adapt to project changes.
- Collaboration. All core project team members including an on-site customer (or empowered proxy) are co-located in a shared, open area to facilitate face-to-communication and rich interactions. Dedicated space is provided for regular work, impromptu meetings, design sessions and other formal and informal group activities. Team members self-organize by continuously completing tasks collaboratively without top-down management control.
- Continuous Improvement. Practices that enable delivery process inspection and adaptation are integrated into agile methods. Project Reflections (also called Project Retrospectives) are meetings conducted while the project is underway to facilitate regular reflection on its successes and failures, and any of the tools and techniques applied. Daily standup meetings provide an opportunity to exchange valuable information and to fine tune improvements continuously.
The best way for you to manifest these core principles is to follow an iterative and incremental adoption approach to agile delivery. Start small with a pilot project or two, and then, once you’ve garnered real-life experience, expand to multiple projects and teams. In the next part of this post, I’ll lay out steps for you to follow to deliver that first Agile project.