What makes a software development project Waterfall and what makes it Agile? Different people answer this question differently. For a lot of teams, Agile is having a daily stand-up meeting and working in two-week sprints. For other teams, Agile is doing all of the practices in Scrum, Lean, and XP. Which is right? I say Agility is a continuum and we get better at through time. Here are seven strategies for vanquishing Waterfall and becoming more Agile.
1. Replace requirements with stories
Up to half of all development time and effort goes into creating and interpreting requirements and they are the cause of nearly half of all bugs. When we replace written requirements with a product owner who is a subject-matter expert that the team can talk to as they’re building features, development can become much more efficient.
2. Integrate continuously
Building features in iterations isn’t enough unless you also validate that the features work as requested. Taking a task 99% of the way done isn’t Agile. We must fully integrate a feature into the system and make it supportable in order for it to be done. More than anything else, continuous integration is the best first step towards realizing the benefits of agility by creating an infrastructure for doing development correctly.
3. Do test-first development
Getting a task done also means automating validation by having unit tests. The best way to do this is by doing test-first development. Well written unit tests help us in refactoring and give us regression. But the main benefit of doing test-first development is to drive us to write focused, testable code.
4. Automate validation of release candidates
A major goal of doing TDD and continuous integration is to automate the validation of release candidates. This usually involves writing more tests than we got from doing test-first development. There are many forms of testing and QA. All of the testing required to validate a release candidate should be fully automated so that no human intervention is required. If you do this one thing you’ll start to realize huge benefits and save more money releasing and update software than virtually any other thing you could do.
5. Build smaller
Many projects appear so complex that the developers can’t image building it in small pieces. If a feature is too big then break it down into smaller tasks. Ideally, we’d like tasks to have some value to the user or be part of an acceptance criteria but failing that, as long as it produces some observable result that takes us closer to providing value and you can write a test for it, then it’s probably the right size.
6. Shorten feedback cycles
The smaller you build the more frequent you’re feedback will be. There are many feedback cycles in software development: iterations, daily stand-ups, retrospectives, etc. There’re a lot of people who write about these feedback cycles but the most important feedback cycle is often ignored. The most important feedback cycle is the build itself. A fast “one-click” build with good automated unit tests give developers instant feedback on if their approach is a good one. Once recognized, developers depend on this feedback and their productivity skyrockets.
7. Adopt other XP practices
There are many other very important aspects of developing software. Most teams save the above six strategies to do for later, if at all. It’s my experience that these strategies are the highest value ones and should be implemented first. However, they don’t solve all problems. The other practices from XP, Lean, and Scrum can help with many of the other challenges we face when developing software.
Agile includes several lightweight methodologies designed to replace the heavyweight process of Waterfall. Agile is more than building iteratively and having daily stand-up meetings. The real difference between Agile and Waterfall is limiting your work-in-progress by taking tasks to completion and integrating them as they are built with test automation. These things are easier said than done but for most development projects these are the highest value things they can do.
Previous Post: « Seven Strategies for Fostering Innovation
Next Post: Seven Strategies for Building Smaller »