Surviving the crunch

After a period of moving along relatively smoothly, January had us*. We had carried some unfinished work into the new year, had a non-negotiable deadline (a lot of people would be paid for twiddling thumbs…), a ton of work to do, and finally only  seven days to go. So last Monday I drew a list (a mindmap, in fact) of the TODOs, got the team together, and we went into crunch mode: you try to make up lost time by increasing to effort
It just happens once in a while. There is this grey area between a full success (8 hour days, relaxed coding,  you could even deliver earlier) and the clearly slipped deadline, or outright failure. You know that you’re on the right track, only that you need some extra hours.
I know that this runs against the idea of a well-run agile process. First of all, you should not be in that situation. You should have estimated better. Clear the impediments. And on the verge of failure, inform the PO and let her decide. But: not all environments support this modus operandi, and the negative effects of failing to deliver can be tougher than the extra work. Especially when facing a difficult situation, I try to follow some rules:
  • Don’t panic.
    We’re building software, we’re not trying to land a plane. Or doing brain surgery. The worst thing that can happen is that people lose money and become unhappy. When you let your panic take control, it becomes more likely that the first thing happens, and the second comes for sure.
  • Prioritize recklessly.
    Do only  things that need to be done _now_. Can it wait until next week, in calmer waters? Then it does.
  • Create acceptance.
    When you’re about to take some quality of life from your team members, make sure they understand why it’s necessary, even when there’s an uncomfortable truth. (“Customer X has been unhappy with us for some while, and we’re about to slip a deadline again…” ) If the thing at stake is mostly the team’s own reputation or bonuses, let them decide whether they want to take up the fight.
  • Go as fast as you can.
    Once you’ve discovered that you don’t have enough time at your normal pace, increase the focus on the bare most important pieces of work, and the working hours, to the maximum that you feel fit for. When you have to leave the comfort zone anyway, you can as well leave it early and deliberately rather than being forced out of it later.
  • But not faster.
    What quality of work can you expect from a coder after ten hours of concentrated work? I’ve yet to see anything not worth rolling it back the next day. And you don’t want people to exhaust themselves to the point where they report sick the next week. Make sure everybody goes home at a reasonable time, including yourself. And if you’ve spent one weekend working, leave the next one.
  • Failure is an option.
    Have a Plan B. When it becomes evident that you’re going to fail the deadline despite all effort, move to that plan immediately.
  • Be thankful.
    Whatever the outcome is: team members have spent extra time working for the company, and they can expect that this is not just taken for granted. Express some appreciation.
  • Don’t get addicted.
    Commitments should definitely not include crunch mode.

This time, everyone was at home Friday at 7:30PM, with the weekend free, and the goods delivered.

* A team of five developers including myself, and a QA specialist. We don’t use a defined method, but in a somewhat agil-ishway, but a looooot of deviations from SCRUM, all of which make sense. At least to me.


Christian is a software architect/developer. He lives in Germany, reads a lot, and likes cycling.

Posted in Team

Leave a Reply

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

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

Google photo

You are commenting using your Google 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 )

Connecting to %s

%d bloggers like this: