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.