Sunday, December 9, 2007

On unpaid overtime...

I had an argument with a friend regarding the morality of the fact that unpaid overtime is a widely accepted practice in the software development world. Since it ended up being almost a cohesive article, I am also putting it here, with little changes to make it self-sufficient... The original thread is here: http://blogs.technet.com/eldar/archive/2007/12/07/2604713.aspx.

There are two different types of overtime - voluntary (when I work more than 8 hours because I want to) and involuntary (when a manager tells the team to come work on Saturday a la Bill Lumbergh in "Office Space").

I agree with people who say that involuntary overtime is evil. It is just a way to pay people less money for the work they are doing, and the type of work you'd be getting in return is the same as in any kind of forced labor - poor quality, coupled with quick burnout.

What's more, I think making people work overtime often is also an indication of poor management. It means that the project is habitually understaffed or underscheduled. How the request is made, can also mean a lot for team morale (and expose lack of emotional intelligence on behalf of the leadership).

I had a former employee who used to work for me in one team until I left, and then came and joined me in my next team. He told me a story how a dev manager in that first team once made everybody work on a weekend, and then came back to office on Monday with tan lines from his eye wear that made it obvious that he himself had spent that weekend on a boat. The employee was still visibly shaken by that experience (relating it to me a year after it occured), and I could see that he lost quite a bit of respect for that dev manager.

Why might people choose to work overtime in voluntary fashion? First off, of course, because they like what they do. This industry is unique in a way that it is very easy to have your profession and your hobby to be the same. I might (and do) work - in my free time - on coding projects that are not necessarily work related. It is much harder, although not impossible, for a doctor, or a lawyer, or a mechanical engineer to do the same.

Second (and this is where the market goes both ways, and also where the "voluntary" parts starts reeking of questionable content), because the industry is amazingly competitive both in terms of companies looking for the best people, and the people looking for the best companies.

There is a huge difference in productivity between the top 10% and bottom 10% of developers. Two orders of magnitude, at least. There is not so big a difference in pay - 2-3 times at most. There is a huge economic sense for companies to ferret out these top performers. The few companies that manage it turn out big successes, like Google or Microsoft. This also drives the salaries up through the roof in these companies. It really does make sense for a company to pay 2x the market IF it attracts top 10% of performers.

Now, because there is a big compensation incentive (4-5x average family family income is no chump change, to say nothing nothing of the tens of thousands of stock millionaires that Microsoft generated), there is equivalently huge competition among the employees for the rewards. So a lot of people choose to work overtime because they want to keep their lucrative positions in the companies that pay the most.

The same effect tends to show not just in S/W development, but pretty much anywhere where the reward is fairly big - investment bankers, financial analysts, quants, and salespeople who work on the Wall Street work equivalently long hours (although for much bigger reward. On reward, also see here: http://www.inflection-point.com/jokes/128.htm).

By the way, there are companies in software development that do not do overtime, and use it as one of the way to attract people. There is even one in Seattle (I read an article about it a while ago, cannot recall the name of the company).

Voluntary overtime practices can be coercive, of course. This happens when a manager compares performance of employee A who works 8 hours a day with the performance of employee B who works 12. Chances are (not always true!) that B produces more than A. When it comes to the review time, a manager has to measure people based on total amount of work they've done. As a consequence of a lower review score, employee A will probably feel compelled to work longer hours even if (s)he does not want it. This is a fact of life, but short of government-mandated 5pm closing hours (which people like me would defy by working from home) I do not know how to solve.

I did have an employee that would work no more than 10 hours a day, never on weekends, and whose performance was beating most of his peers, including those working 12-14 hours a day. If anything, his reviews tended to be higher because of his efficiency.

Morale: overtime makes sense if you get compensated for it (in any way - whether by recognizing it on a pay check, or a bigger bonus/stock grant, or a creative job that gives you a lot of satisfaction). If the reward is not supplied... look for another place where it would be! They do exist.

3 comments:

Eldar said...

Well, I would not call it "an argumnent". I agree with most of your points and I was actually talking about a different thing.

If anything, I only could argue about a few minor points in your position, but not the whole thing.

Those minor point are:

1. Microsoft is not an island of high salaries. The whole industry is of this kind. And I would not call it insane -- market is usually very sane thing where you pay as little as you could for as much as you can get.

2. About an incentive to have only top 10%, you forget that Microsoft is supposedly targets top 5%. So your 10% withn MS is actually top 0.5% of worldwide talent. Not a big surprise, that it's tough.

3. While being a PM, I observed on many occasions the determination of who is top 10% and who is bottom 10% screwed up. I've seen excellent developers driven off the teams for mere office politics, and those who driven them out gaining the glory and becoming leads, managers and pain in the ... for the whole team. When we'll meet next time, I can give you the names.

Eldar said...

On a second thought, I would also argue against your second point in voluntary overtime too. It may be voluntary, but internal competiveness of the team is rather a hallmark fo poor management than anything else.

It boils down to the question: do you want your team be competitive or collaborative? Do you want those who are 100 times more efficient to train those who are slow, or do you want them to sabotage those who are only 50 times more efficient?

Sergey Solyanik said...

Yes, but the team does not have to be internally competitive for the difference in work patterns to exist. Right?

For example, one person might choose career over a family (I am not advocating any specific choice here, just pointing them out), another might choose family over career. The first person will have higher probability to be more productive, because (s)he invests a lot more time into work.

If a person is more productive than the average, (s)he should be compensated above the average, right?

Nothing above says that the environment is not collaborative...