I want to reply specifically to this concept and your comment was currently the first one in the thread where I saw it. I'm quite sure if I scroll down a bit I'll find many others.
It is worth understanding that this is what a manager is for.
Imagine that you are working on your own pet project and you are the only person working on it. You are the stake holder. You are the customer. You are the user. You are the developer. In that atmosphere, you can easily spend 100% of your time doing productive work. All of your time is spent either coding or experimenting with different UX designs. Not only that but you are completely free to try different development approaches, different coding ideas, etc, etc, with absolutely no overhead trying to convince anybody else to go along.
Add an external user -- now you have to gather information. Add an external stake holder -- now you have to provide planning information and status updates. Add an external UX designer -- now you have to coordinate UX requirements and development activities. Add another programmer -- now you have to argue about how to indent your code (amongst other things).
A good manager is able to coordinate and facilitate communication and development activities. You can measure how good your manager is by how close you come to putting in 40 hours of real-work with 40 hours of bum-in-chair. Not only that, but it's actually completely quantifiable - real-work / bum-in-chair = management efficiency.
I highly recommend measuring this value and holding your management accountable.
Of course there is a potentially massive downside if your management is relatively bad: they will simply remove all the communication from the project. Then you will be spending all of your time hacking, but getting nothing done because you are working against all your teammates/customers.
It's quite difficult to find ways to keep the communication flow up while at the same time reducing the amount of time spent on communication. The best way is by building processes where the artifacts are obvious: well developed stories, prioritised backlogs, defined sprint commitments, visible code merges, visible acceptance test results, etc, etc. Then the manager must summarise the information in ways that allows all of the workers to coordinate easily without having to spend time searching for information.
More than complaining about overtime, developers should (IMHO) demand that management actually provide value for the premium salary that they receive. Don't accept 20 hours of screwing around in a 40 hour week (some people on HN swear up and down that more than 4 pomodoros a day is impossible -- they really need to find a better job!). Demand that your time is not wasted.
It is worth understanding that this is what a manager is for.
Imagine that you are working on your own pet project and you are the only person working on it. You are the stake holder. You are the customer. You are the user. You are the developer. In that atmosphere, you can easily spend 100% of your time doing productive work. All of your time is spent either coding or experimenting with different UX designs. Not only that but you are completely free to try different development approaches, different coding ideas, etc, etc, with absolutely no overhead trying to convince anybody else to go along.
Add an external user -- now you have to gather information. Add an external stake holder -- now you have to provide planning information and status updates. Add an external UX designer -- now you have to coordinate UX requirements and development activities. Add another programmer -- now you have to argue about how to indent your code (amongst other things).
A good manager is able to coordinate and facilitate communication and development activities. You can measure how good your manager is by how close you come to putting in 40 hours of real-work with 40 hours of bum-in-chair. Not only that, but it's actually completely quantifiable - real-work / bum-in-chair = management efficiency.
I highly recommend measuring this value and holding your management accountable.
Of course there is a potentially massive downside if your management is relatively bad: they will simply remove all the communication from the project. Then you will be spending all of your time hacking, but getting nothing done because you are working against all your teammates/customers.
It's quite difficult to find ways to keep the communication flow up while at the same time reducing the amount of time spent on communication. The best way is by building processes where the artifacts are obvious: well developed stories, prioritised backlogs, defined sprint commitments, visible code merges, visible acceptance test results, etc, etc. Then the manager must summarise the information in ways that allows all of the workers to coordinate easily without having to spend time searching for information.
More than complaining about overtime, developers should (IMHO) demand that management actually provide value for the premium salary that they receive. Don't accept 20 hours of screwing around in a 40 hour week (some people on HN swear up and down that more than 4 pomodoros a day is impossible -- they really need to find a better job!). Demand that your time is not wasted.