Chad Fowler

the passionate programmer, author, speaker, musician, technologist, CTO

Killing the Crunch Mode Antipattern

In the software industry, especially the startup world, Crunch Mode is a ubiquitous, unhealthy antipattern. Crunch Mode refers to periods of overtime work brought on by the need to meet a project deadline. Developers stereotypically glorify the ability and propensity to stay up all night grinding through a difficult problem. It’s part of our folklore. It’s part of how we’re measured. It’s something companies and leaders take advantage of in order to accomplish more with less.

And it’s stupid.

If you want a “knowledge worker” to be as ineffective and produce the lowest level of quality possible, deprive them of their sleep and hold them to an unrealistic deadline. In other words, activate Crunch Mode.

Why Not to Crunch?

  • It makes us stupid. The more I work, the less relevant my years of experience become. I constantly make rookie mistakes. I break things in production. I leave messes behind. I waste hours going down the wrong train of thought.
  • It burns people out, sometimes permanently. They burn up their passion that takes down time to replenish. Unless the non-Crunch work is sufficiently energizing (and frequent), enough crunching can cause your best people to leave.
  • It makes people lazy and less productive. This may seem ironic, but when someone puts in heroic levels of effort, they start to place less value on each minute. I know that if I work all night, then an hour brain-break mid-day sounds very reasonable. The problem is that these breaks become a habit that can persist between Crunch times.
  • It’s a risky way to make your commitments. Crunch Mode means you are using your team beyond capacity. That’s like trying to drive 50km on 40km of gas. It might be OK, but if you do it all the time you’re going to end up broken down on the side of the road waiting for help at some point. Maybe more often than not.
  • Accountability is lost. When someone is working all hours, they can’t be blamed for mistakes. They can’t be blamed for coming in late, forgetting an email, introducing bugs, not writing tests, cutting technical corners, and doing all sorts of things that don’t describe how you want people on your team behaving.
  • It puts the credibility of management in question every time. Because, managers, believe it or not, every single time it happens, the entire team asks themselves, “But why?”
  • It shows a team that the leader cares about meeting a business goal more than he or she cares about their health. This may sound harsh but it is literally true.

The more you have to use your brain, the less effective and healthy Crunch Mode is. In fields that require less creativity and thought, it might even really work as a (ruthless) management technique. In software development, it just doesn’t.

Why do we do it?

The number one reason teams go into Crunch Mode is that their leaders have failed to understand and/or set realistic expectations for the time it takes to complete a project. In worst cases, the deadlines are arbitrarily set by management and not tied to any specific business need. In other cases, the deadlines are inflexible, but the scope can and should be adjusted to a realistic level. Sure, it may be that the team committed to those incorrect deadlines, but it’s up to the ones deciding on the deadlines to verify that they’re realistic before making a commitment.

Fear and the resulting breakdown of communication also drive us into Crunch Mode. “Can you get this done by ?” “Uh…yes?” Developers fear saying “no”. Managers fear looking bad by committing to what seem like far off dates. Managers fear setting far off deadlines, because developers miss dates more often than not. “If we pad the estimates are we going to miss those by 20% too?”

Another reason we go into Crunch Mode is that we are perpetuating a culture of cowboy heroism which many of us unwittingly get caught up in. The feeling of finishing tons of work in a short period and depriving oneself of quality personal time can be addicting, especially when it results in “saving the day” for a project. Rolling up your sleeves and cranking to the end of a deadline makes you feel valuable in a very concrete way. Without your overtime, the project doesn’t get done on time. With it, the project is saved. It’s hard to find such black and white ways to add value in daily “normal” work.

Maybe the most addictive feature of Crunch Mode is it’s the easiest way to see a team really click. At the beginning of Crunch Mode, people get intensely focused. Communication is streamlined. The big important stuff gets tackled quickly and finished. A team can initially raise its skill level a notch with the focus alone. It feels great as both a manager and a team member to work that efficiently and effectively. Unfortunately it’s difficult (not impossible) to work this way all the time, so we’re tempted to activate Crunch Mode on occasion just to feel this way again.

Alternatives to Crunch-Mode

  • Miss the deadline. Ya, that’s right. Let your customers down this time. Make less money. Incur opportunity cost. Just fail. You already failed to manage your team and your time. Maybe you should let that have more visible consequences?
  • Set smaller goals. When you set a massive goal, way off in the future, it’s impossible to estimate whether it’s actually realistic. However, if you set a goal for this afternoon, you’re probably going to be pretty accurate with your estimates.
  • Measure progress concretely and in small steps. Never trust a status report, even from yourself. In software, the only deliverable that matters is one that you can execute.
  • Set more realistic goals for the team and problems you face. If you’re continually having to slip into Crunch Mode, you clearly don’t understand your capabilities. Admit that you’re going to go slower than you expected and adjust for it.

As unhealthy, counterproductive, and just plain stupid as Crunch Mode is, sometimes you just have to do it. We all accept that. Crunch Mode is the nuclear option. A leader needs to have it available as a tool, but each time he or she wields this tool, he or she pays in long term credibility and trust.

Can we stop it?

It’s time to finally stop this insanity. Think of the time, money, energy, and potential happiness wasted on poor planning, communication, and leadership.

Managers, hold yourself accountable for Crunch Mode when it happens. See it as a personal failure.

Everyone else, hold yourself accountable for every non-crunch minute you work. Make them count. Overcommunicate. Focus.