Thursday, March 19, 2009

Developers should not be allowed to work overtime

I have a very simple tip for software companies and engineering managers who want to make their developers happier and more productive (and less likely to produce buggy code). Forbid overtime.

I give this advice based primarily on what I've observed personally (and anecdotally via friends in the industry). What I've witnessed is that people who are flogged like mules either burn out, quit their jobs unexpectedly, or (worse) stay with the company, carrying a new, sour attitude.

Conversely, I've seen that developers who are encouraged to go home at quitting time tend to do a better overall job, because they know what's expected of them (i.e., finish what you're doing by 5:00) and come to work in the morning well-rested (or at least with a reasonably positive outlook compared to their counterparts at other companies who are doing 60- or 80-hour weeks).

People who know they have to leave at 5:00 (or 6:00, etc.) tend to go to extra lengths to finish whatever it is they were working on before the clock runs out. They ramp up their productivity as necessary to get work done in the time allotted. This is what you want.

Productive employees become more productive when they have to work within time constraints, because they learn time-management skills they wouldn't otherwise learn. That sounds like a tautology, but it's true.

It works in reverse as well. You find out quickly who your less-productive people are when they're under time constraints. This is valuable info if you're a manager.

The no-overtime rule tends to enforce good project-management discipline. People become realistic about how much progress can be achieved in a given length of time and set milestone dates accordingly. If delivery goals aren't met, new dates are set (assuming there's a firm no-overtime rule) and project managers assume responsibility for the initial misjudgment. (Of course, the project managers get their time estimates from the various engineering managers, so the responsibility for missing a goal actually gets cascaded down through management.)

Without a no-overtime rule, people are expected to adjust their work day as needed in order to meet milestones, and failure to meet the goal is blamed on employees rather than management (because the underlying assumption is that if you put in enough hours, you could have made the goal). Putting the onus for lateness on regular employees rather than managers only demoralizes workers and makes them less apt to deliver on future deadlines. The right thing to do (the productive thing to do, in the long run) is let managers bear responsibility for lateness -- as they should.

When I see or hear tales of people sleeping under their desk and drinking energy drinks while they bang out code at 2:00 in the morning, I know that the company in question is poorly run and will ultimately suffer (in any number of possible ways) for making (or letting) people work crazy shifts. "But," you may be saying, "what if people are putting in those hours because they truly want to?" In my experience, people with families like to be with their families. Some people take classes at night (or need to change a baby's diapers in the middle of the night), or have ailing relatives to take care of, or have any number of other outside responsibilities. Working till dawn is not an option for some people, and in my experience most people do not choose it voluntarily. There are exceptions, of course (such as with short-staffed entrepreneurs who are trying to bootstrap a new business), but as a general rule, working till 2:00 or sleeping under your desk not only reflects bad company policy but poor personal judgment as well. (Again, though, if you're a founder of a new business, you do what you have to do. But if you know what's good for you, you won't make others work that way.)

I'm sure there are some who would say that in these troubled economic times, special measures are called for. Many companies, after all, are fighting for their very lives right now. Surely workers should expect to work overtime some of the time, until the economic storm passes?

To which I say: If your situation is so desperate that you think making people work a few extra hours is going to save the company, you're in more trouble than you think. Way more.


  1. Anonymous9:20 AM

    It is not the company that is dealing with the hard economic times, but the worker. I will take all the overtime I can get and put that money into savings and investments so I do not have to do overtime into my retirement. Don't go around saying nonsensical things and giving my employer any ideas. Go do some work and quit your bitching you lazy ass. We should be happy somebody is paying us the amount they do for the type of work we do.

  2. tomasz207, you are truly lucky that you get paid for overtime. Try to remember that most people aren't.

  3. @tomasz207: Note, most programmers are salaried (exempt) employees who do not receive any additional compensation for working overtime. The primary exception to this is contractors/consultants. This article seems targeted at that "norm". If you are getting paid an hourly wage and compensated for overtime, then you probably aren't the target audience of this article.

    Throwing out insults without understanding his point makes you look ignorant and childish.

  4. "That sounds like a tautology, but it's true."
    Love that sentence. :)

    The post is IMHO right on the money though.

  5. give your devs the ioption to telecommute (at least some days of the week) is, IMO, the best strategy. Win -Win

  6. Anonymous1:29 PM

    There is a name for this, it is called sustainable pace. It is the idea that a development team should choose a set of working hours that they can sustain indefinitely. This usually falls into the 40-50 hour range depending on the team.

    I once interviewed the CTO of a company that creates one of the best 3d special effects software packages on the market. At the time, their philosophy was that they only get about 5 real hours of work out their employees a day. So as long as the employees are at work for those 5 hours it doesn't matter if they come in at 12pm and work till 5 or if they come in at 9 an work till 2. Apparently, they didn't have meetings to attend.

  7. Telecommuting is good. I have to do that some too, which is ok with me, because my employer doesn't require me to work a lot of overtime to begin with. We can if we choose or need to, but things are managed fairly well, so we don't have to.

    But this reasoning goes with almost any career. I once had to work 60 to 80 hours a week when I was doing a lot of design work. Most of this was a result of poor management. After several months/years of this comes that sour attitude. My drive for design was driven into the ground and I just didn't care as much. I would try and assume what my manager wanted whether it was good, bad, not what the customer wanted, etc, just so I wouldn't be working 80 hours that week. I finally got out of the position thankfully. It took about a year or so for me to rebuild my drive for design. So it's not only bad for the company, but it's bad for the employees career too.

  8. Re: the worker who "actually wants" to keep writing code at all hours of the day and night, the solution is simple: clock your 8 hours; go home; work on something else for your own pleasure. Just because they like writing code doesn't mean they have to have only one project as an outlet.

  9. It's long been known that it's much more difficult to find that elusive "bug" after 3PM, but when the developer comes in the next morning, refreshed, he will find it much easier.
    Alternatively, queue up at the desk of that female programmer, she'll spot the fault in a couple of seconds.

  10. Also, a fatigued mind makes bad decisions which hurts the company over the long term. Just because someone leaves the office and goes home doesn't mean they stop thinking about the problem. Being able to have that thought time away from the office is extremely valuable. They're going to come in the next day and make better choices.

  11. Anonymous4:03 PM

    Sustained non paid overtime will never result in a situation. If they expect more than an occasional need for overtime you need to get paid. Otherwise the good people will leave.

    I get paid for OT, but I also deploy my code to production line equipment that takes many 18 hours days sometimes.

  12. Anonymous4:17 PM

    In my own experience, hard slogs balanced with light work schedules have been the rule. Some efforts simply take calendar time because of the time it takes for hardware to be ready, or specifications from the client to be finalized. During these periods, I might simply not have what I need to get my piece done. But I still draw a check.

    Finally, all the pieces are in place, and its 70 or 80 hours a week for a couple of weeks. And in that sprint, I think I am very productive.

    Now if my employer had the idiotic idea that I could do that all year round, I'd quit in a heartbeat. Personally I like the flexibility to work hard, balanced with slacking ... It all evens out.

  13. This comment has been removed by the author.

  14. I'm going to pass some credit to Scott Adams, creator of Dilbert, for coming up with this idea in one of his books. It's called OA5 (Out At 5) and touches on a lot of the things you mention

  15. 9+ years in the software business myself and I can only say that I wholeheartedly agree with you!

  16. Anonymous6:22 PM

    I like working overtime. I work from 9-6, but I would totally work till 8 or 9 if my wife would let me. Sometimes less and sometimes more, but in general, I always feel a bit sad having to leave some programming work I'm doing when its really interesting. I guess it really matters if you love what you do and do what you love.

  17. to idebugthereforeiexist: be glad you have a wife who cares enough to not let you work till 8 or 9 ...

  18. I have worked for both types of companies, and the one I work for now encourages employees to finish after 8 hours. I think I complete about 1.25 times as much (coding)work in 40 hours as I do in 60. I think the flogging principle comes from the time when all labor was unskilled - and many managers and corporate policies have yet to adapt.

  19. There's a good article about this:

  20. Dare i say Best Practice: No Overtime

  21. Anonymous9:24 PM

    Very sound advice! Please tell this to every manager in the games industry.

  22. In my 26 years as a software developer, I've worked many places that have this exact mentality. In most cases, the cause was poor planning. In a couple cases, the cause was an inability to understand how ridiculous it is to want people to work 80-100 hours a week. One company was concerned that if the investors drove by sometime, they wouldn't see any cars in the parking lot; thus, we were exhorted to be there really, really late and were discouraged from telecommuting.

    The problem is, at those very same companies, I spent a huge amount of time untangling what we called "2 in the morning code", code that resulted from the combination of management's "just get it done" mentality and the programmer's chronic sleep deprivation. Untangling, debugging, and fixing that kind of mess took more time overall than the time saved by writing it under duress.

    The productivity gains from sustained, excessive programmer overtime are, more often than not, illusory. Excessive overtime saps energy, burns people out, and doesn't even really work most of the time.

  23. @tomasz207: I think the article's aimed at those of us who actually care about the value we provide to our employers.

  24. Anyone ever hear of a union?

  25. Anonymous5:48 PM

    Great post. I haven't thought about this for a while. Time to run some management reports to see if any of my developers are working too much.

    Time to dust of my copy Extreme Programming Explained and glance through that again. Apart from "No Overtime", I'm sure there are some other principles I've probably forgotten about.


  26. I worked for a company a few years ago that drove me into the ground. Worked tons of overtime. They would send me out of the country for a week and not compensate me in any way for all the time, etc., etc. I just don't trust companies like these. If I were to interview now and were asked "What do you think about overtime?". I would respond with something along the lines of "I think overtime is a sign of a poorly managed project and an indicator that management has no respect for me".

  27. Anonymous10:11 AM

    If you really love working all day and all night, you should probably find your own project to create after hours. Skewing things for the team is not a smart act.

  28. Jonny1:25 PM

    I've been working as a freelance developer for over the past 6 years and when I initially started out I was happy to work overtime, but as the years have gone by I've come to the conclusion that it really is one of the worst things you can do.

    I've worked for a lot of ad agencies who would often create unrealistic deadlines for their projects... but as a freelancer I didn't mind so much, the extra money that I would earn via overtime always seemed to be worth it.

    However there were always problems created by this. The work done during overtime would never be of a great standard, sometimes I would be working that late that i would be fighting sleep and struggling to concentrate.

    I would often take time in lieu telling myself that it made up for the time taken up by overtime, but this always turned out to be false economy as I would end up far to exhausted to do anything to enjoy my time.

    Also over a period of time I've come to notice that working ovetime warps my perception of how much is realistically achievable in a day which almost created a loop for the situation. I'd find that the work I was planning would realistically take 10 hour days rather than 8.

    Long hours of sat working at a computer ended up being the cause of severe back problems, it ultimately lead to a frozen shoulder for which I spent a month and a half on a cocktail of pain killers and muscle relaxants barely able to sit upright for any period of time - meaning I had to take 2 months off work and it took 18 months to recover to the point where I wasn't expereincing discomfort during my working day.

    I do agree that development needs to be done at sustainable pace, and these days I plan my time in terms of hours not days, featuring in admin time and heatlh and safety time (aka break time during my working hours away from the computer). And in honesty I would rather look at an alternative career path than work late. I also find that some of my freed up spare time has been reinvested in reading up on best practises and new technologies - so that by not working overtime I've managed to become a better developer and improve my knowledge and techical skills, and as a result I find myself enjoying what I do a little more.

    Managers who consider overtime to be an acceptable norm I wouldn't have hesitation in calling them idiots to their face - I be happy to sit down afterwards though and help them find a better way to do things.


Add a comment. Registration required because trolls.