Killing the Crunch Mode Antipattern

Chad Fowler, CTO of 6Wunderkinder, has written a post on his personal blog about how our industry glorifies working long hours and how it is ironically counterproductive. I agree and in general Chad is spot on.

I’ve helped lead and develop software products for 15 years of my career and this is the lesson that takes the longest time to learn. Consistently working longer hours produces pretty crappy work. However, from time-to-time one may need to get into “crunch mode” when something is broken, or when they need to put in a little more time to get to a good break point.  Overall, though, the best work done is that which is done during each individual person’s best time to work and working a bunch of overtime is extremely counterproductive.

As an employee I simply didn’t get this. I’ve worked all hours, sometimes all night and seen my work quality slip without understanding the root cause. I did this to either impress my boss or to meet a deadline set by someone who doesn’t understand software development. As an employer, though, I constantly think about how to get the best out of my team. And I can assure you that it isn’t by forcing anyone to stay late every night to get more work done. The product suffers terribly. As an employer I want people to work smarter not harder. And I simply cannot dictate when people will work best.

One side-note for employers: paying for overtime is ludicrous in creative fields. The worst work someone could do is overtime so you’re paying more for that person’s worst work. Don’t do it.

I’ve had team members that, like me, are extremely good in the morning hours and then do great work again in the late-evening. They might as well have gone home for the afternoon. I’m probably a bit like this, however, I do not bring my laptop home from the office during the week so that I almost never work at night at home anymore.

Currently our team is generally made up of people that keep a similar schedule yet everyone approaches it a bit differently. Jeff sometimes puts in late nights. You can see that from his Twitter stream. No one ever asked Jeff to work at night. He just does it when the creative juices flow. Chris goes home for lunch and a workout in the afternoon and returns later in the day. Carla takes a morning or two off per week to do a volunteer ministry work. Tim goes 9-5 almost to the minute. I come in anytime between 7:30am and 10:30am and leave anytime between 5pm and 7pm. Jakub lives in Poland and works all sorts of hours. And Kyle is pretty much a piece of furniture in the office. He’s always there. Everyone is different. It’s great. I like it.

Chad suggests a few ways to stave off crunch mode, but one in particular is one that I’ve found to be the most effective. He writes:

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.

Large goals and long-term deadlines in software are incredibly difficult and almost worthless to estimate. Setting smaller daily or weekly goals will keep everything on track and make everyone feel as though they are making progress every step of the way.

In short, though, work smarter not harder. Be willing to put in hours when it is absolutely needed (like during downtime) but overall try to be a human being. Get outdoors, enjoy a meal away from work, have friends, have fun, have a life. You’ll be a much better team member for it.