I spoke to someone recently about a late-running project, and he asked me what I saw as the difference between that and successful projects that I’d been involved with. I think there’s been little magic with past successful projects. Instead, a key ingredient is consistency.
The most significant requirement that agile practices introduced in this respect was frequent delivery of complete features. The development process then becomes feature-feature-feature. Once you’ve done a few of these the project becomes (other things being equal) more of the same. It becomes predictable. Each feature contains everything from detailed planning to deployment. Some are bigger than others, but you can work with that.
That’s what “Agile” says, but we still need to apply our intelligence, and transfer those lessons to other areas, too. We also need consistency in:
- Team members. I remember Kelly Waters showing a graph of how his teams’ velocities got dramatically corrupted when he moved people around. Eventually they stabilised, but the message was clear. Team inconsistency upsets predictability.
- Technology. Introducing new technologies changes people’s rate of progress. The same team delivering a C# desktop app cannot be expected to deliver at the same rate as their last project if that last project was an HTML5 website.
- Customer representative. If the person who decides “okay” form “not okay” changes then the dynamic and the delivery rate changes. If you see the customer representative as part of the team then this falls under our first point.
- Delivery phase. In theory this shouldn’t be an issue, because whole features should include every delivery phase. But I know one project where working software was delivered without the design. A subsequent sweep of all the features implementing the design took much longer than the implementation of those features — it was just a different kind of work, with different acceptance criteria, and the rate of progress was therefore not what was expected.
The lesson is pretty unremarkable: if you can ensure all pieces of the jigsaw are consistent, then you will achieve consistency. What is remarkable is how often we forget this.