A couple of years ago, a project I was on faced a fairly large change, an epic story, that would not possibly fit in an iteration. Breaking it up into smaller stories was agreed to be close to impossible, or at least a very inefficient. So we (the development team) didn't attempt to split the epic, and decided to extend our normal iteration length and go for it all in one blow.
Naturally, it failed. Despite over time and feature cuts we didn't make our (extended) iteration deadline. Our delivery contained lots of bugs and we had misunderstood some of the requirements resulting in some features that was far from what the client was expecting.
All though I know we had a few other flaws in our process back then, the biggest mistake in this case was to think the work couldn't be split into smaller stories. When looking through what we actually delivered in the end, it was almost like the smaller stories that we should have looked from the beginning were just popping out of the feature list; each one small, independent and with a clear business value.
Just the other week I realized I have been taking part in letting a similar thing happen in my current project. A few properties of our epic story are different this time:
- technology is not fully understood by team
- lots of R&D-work required
- more infrastructure work than actual user features
- the team is not permitted to only work on this epic story
But this time we haven't tampered with the iteration length. Instead we have cheated by not defining what each sprint would actually deliver. And time boxed spikes for R&D work has not been used effectively.
I have a lot of reasons for not spotting it this time.
- I was out sick for a week and missed an iteration planning session
- I was off-site attending a two-day conference
- I was working on other sprint tasks, not belonging to the epic story
More dignified ones:
- I was blinded by new cool technology that I was not the team's authority on
- I misinterpreted information and was convinced that technology that we didn't know fully, would actually be of use to us
- I didn't completely understand the system I was working on
I could of course go on, but I can not think of one single reason that would really give me an excuse to question my conviction that a story should be be small, independent and have a clear value to the business.
Real reason why I let this happen:
- I was lazy
For the future I hope I will think twice, three times and even sleep on it before I decide to go ahead and go against a core principal of mine.
Now, I have to get back to work on one of my tasks of the epic story....the epic story of which no part is in production. This task I'm working on is small, independent and has clear business value. That's clear to me now. If we would have started on it a few sprints ago, it would have been in production for quite a while by now....
You could argue how small “small” is, but the upper limit is definitely one iteration, if you are willing to take a risk like that.