Kill the crunch time heroics
Friday, November 2, 2018
Crunch time has an allure: it feels like if you just push hard enough, you can get more done. You can push hard and get that next release done on time, get those new features out, earn more revenue for your company. Engineers are under immense pressure to deliver more and do it now, and we also feel special: we feel unique, like we are not subject to the fatigue that others experience, or that this project is different and we can do it even when exhausted.
None of this is true, though. We are not special. We are all humans, and for all of us, crunch time is expensive. Some people literally die as a result of crunch time; most of us just end up as worn out shells in poor health, making poor products.
This happens because crunch time is inherently very fatiguing, physically and mentally. During crunch time, you don't get the sleep that your body needs to maintain itself and to recharge the brain, so you end up grouchy and tired and sloppy. During this time, you make big sacrifices: you see your kids less and your partner less; you give up some of your hobbies; you sacrifice your health by giving in to temptations and unhealthy food and alcohol. This all can go to extremes, as happened in 2013 at Bank of America, where an intern died after working for three straight days.
The costs to personal lives are bad enough, but you'd expect them to be justified with something really valuable to the business. I mean, why else would a business press people to do this to themselves? Unfortunately, it isn't so. Long-term, crunch time kills businesses. It leads to lower morale and disengaged employees. Quality declines and passes into negative returns. The mistakes people make while they are fatigued are incredibly expensive, dropping databases or crashing cars or opening gaping security holes.
Look, I know these costs. In the face of these, I decided recently to do some crunch time. We were working on a plan for a prototype and there was a board meeting coming up, and my teammate and I decided to go for it: "let's try to ship a prototype ahead of the board meeting!" It was an ambition born out of a threefold desire: to elevate our company at the board meeting; to elevate the reputation of our engineering team internally; and honestly, to make ourselves look damn good by shipping something incredible in a short timeframe.
We did it. We worked overtime and gave up our hobbies and time with our partners so that we could write a lot of code that ended up looking really slick, working pretty well, and impressing our audience. I actually feel a lot closer to my teammate now, because he and I went through some tough stuff together and really got in sync.
But was it worth it? Definitely not. Looking back, I think that with some extra care (people shielding us from meetings; turning off Slack for us for that time; etc.) we could have gotten the prototype out on the same schedule without the overtime. Even if we missed that deadline, the days after that crunch time were essentially sick days for us both (we could not think clearly enough to write good code) and the week after it was not a great week, either. And the sacrifice to ourselves, to our partners, to our cats - that was something we took too lightly.
The software industry glorifies crunch time. We have this hero mythos where the cowboy coder goes into a cave with a bottle of Mountain Dew and emerges, a sleepless night later, with a beautiful, functional prototype. It's time to kill this hero. This is not how humans work: humans need sleep; humans need downtime to recharge; and humans deserve time for their friends, family, and hobbies.
Let's all fight back against crunch time. You deserve your own time and your own energy, and your business and product will be better for it. Incentives are aligned here: everyone wins when you avoid long hours and crunch time. Let's say no, together.