The front page of the Wall Street Journal has an article today (Feb 24th) about the recent spate of overtime lawsuits in technology companies. The charge is being led by programmers at Electronic Arts, who are alleging that they are owed overtime pay as compensation for mandatory overtime.
Regardless of whether overtime pay is required or not, software organizations are famous for requiring their programmers to work long hours in order to meet deadlines. "Crunch mode" starts as a week or two of extended overtime and often continues for months. "Crunching" takes a heavy toll on workers, damaging personal relationships and health. It's also hard on code: tired programmers under pressure are much more likely to incur design debt, which erodes your software investment.
This cost is worth it, though, because at least crunching allows teams to meet their deadlines. Right?
Actually, no. That's the irony of the situation. Tom DeMarco reports in his book Slack that extended overtime has no effect on productivity:
The best predictor of how much a knowledge worker will accomplish is not the hours he or she spends, but the days. The twelve-hour days don't accomplish any more than the eight-hour days. Overtime is a wash. [DeMarco, p64]
How could overtime not increase productivity? There are several reasons. First, as I previously mentioned, tired programmers under pressure incur design debt. Just a few weeks of adding design debt noticeably increases the cost of development.
Second, crunching leads to burned-out workers. Some of these workers turn into "zombies:" ex-stars who do barely enough to avoid being fired. Those who don't turn into zombies, leave, incurring turnover costs as the organization hires and acclimatizes new workers.
The final reason crunching doesn't increase productivity is that employees who know they're going to be working late aren't as careful with their time. Rather than being seen as rude or uncooperative, they'll succumb to non-essential interruptions, like attending a three hour meeting. "After all," they reason, "after hours is when I'm really productive." They'll also use work hours for all the personal things they no longer have time for, like picking up the dry cleaning, dropping the kids off at daycare, and going to the dentist.
If crunching doesn't increase productivity, then it's easy to see why teams get trapped in months of crunch time. The teams go into crunch mode because they're behind. Crunching doesn't make them go any faster, though, so they don't catch up. Months of crunch time ensue as more and more deadlines are missed.
There's only one way out of this, and that's to not get into it. When you find that estimates were wrong, take the bull by the horns and admit it to your customer. Go ahead and sprint over a weekend to see if you can catch up. The occasional sprint can be a great team-building exercise. But if you're still behind after your sprint, stop running. Don't incur the costs of crunching.
(The discussion of the costs of overtime in this article was inspired by Tom DeMarco's "Overtime" chapter in Slack, ISBN 0-7679-0768-X.)