I'm a developer on a team that has just finished some web development work. It was due for a release tomorrow but, as a result of a review by management, needs reworking. This will undoubtedly add a lot of time onto the estimate for release. We can't release what we have, since that's incomplete and we must start work on the redesign tasks now.
To me, this is a bit of a failure. We're now pushing the date back (whichever way you look at it). I believe our agile process failed us, because from my (admittedly limited) understanding of agile, such a methodology encourages iterations and I think our team is iterating wrong.
Solutions I've already considered include:
- Designed up front with rigid stages of the lifecycle (i.e. "sorry, designs are done now, we're working of what we received originally"). However, this seems more like "waterfall" than agility.
- We finish working on what we know is a design that will meet the release date, but may become immediately outdated. This seems very wasteful in terms of development effort if we're working on something that will be ripped out in the very near future.
Why did our process fail, and how could we fix it in the future?