How to escape a death spiral

If you have never been in a death spiral, consider yourself lucky.  I hate them, I hate them, I hate them.

In case you don’t know what a death spiral is, imagine for a moment, that you are in a software development project and you are getting close to release time.  However, there are a few red flags which suggest that, maybe things could get unpleasant:

At the beginning of the project, some/most/all of the people had trouble making up their minds and said they needed time to think about it.  You never heard back from them.  Hopefully, it is because they just trust you and are willing to accept whatever you produce.  Sweet!  So your team jams it out and does a solid job.

Now that the release is about to happen, all of the sudden, people realize that the train is about to leave the station and they don’t have a ticket yet.  Requirements start showing up in droves.  They didn’t seem to care very much until right now.  Every feature that shows up seems to be another horseman of the apocalypse and you now have 50 #1 priority items.  In fact, the boss has resorted to using decimals so he can stratify all of the #1 priority items.  It doesn’t seem possible to make a reasonable release date anymore, so the timeline slips.

After the first deadline is blown, another arbitrary one is picked (because that is what managers do: pick deadlines and enforce them). For some reason, this increases the panic factor for the users and they start getting agitated and unruly.  It’s as if they were shown a sign of weakness and they are determined to exploit it now.  They become more demanding.  The dev team is plunged into several weeks of “finals week” where you have to work 12-18 hour days including weekends.  Morale descends.

As the next deadline approaches, users see their changes, and reject them immediately.  They request more changes and want to see them sooner so they can reject them sooner.  Your team is doing builds and intermediate releases every day instead of weekly.  The build-release window starts getting more narrow.  Soon you are doing dev cycles: { get requirements, implement them, build/release } 2-3 times per day, maybe more.

This tightening dev cycle { req, dev, release, review } is called a “death spiral”.  The name might seem a little over-dramatic, until you find yourself in one. It causes insanity among everyone and it only seems to intensify. The air is so thick, you could cut it with a knife.

There are only 2 exits from a death spiral:

1.  Move this deadline and prepare for your next death spiral
– or –
2.  Release the software and plan for v 1.1 (or SR1, etc)

Blowing another deadline and picking another arbitrary date results in another (more intense) death spiral because you haven’t learned from the last one.  You haven’t really made any progress and your process, which was designed to maintain order and sanity, has been compromised.  You will repeat this madness until you choose to release the software.

When you announce that you will release the software anyway, you sort-of envision the movie Braveheart, when they shout “Charge!” You cringe and brace yourself for the carnage.  Surprisingly, all 82 horsemen of the apocalypse that showed up, twitch and change colors for a minute, then they take their swords and go home.  It’s as if they accept this fate.  Nobody dies.

At this point, you get a breath of air for a moment.  You have a very narrow window to fix your process to prevent this from becoming a regular occurrence.

Next: how to prevent another death spiral.

Advertisements

About Tim Golisch

I'm a geek. I do geeky things.
This entry was posted in Methodology. Bookmark the permalink.

One Response to How to escape a death spiral

  1. Rodrigo says:

    Oh it happens so often… However this is a good thing Scrum: the shit happens sooner and you can blame the people who never show up in a scrum meeting.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s