I work as a software developer. Instead of working more hours I found another approach quite useful for productivity which is almost quite the opposite. The idea is that every day you have to call it a day at a certain hour. Let's say your bus leaves at 5:30pm and if you're late, the next bus is only at 6:30pm. So you'd better get all your work done by 5:30pm to catch the first bus. Amazingly, this is quite a productivity boost for me. I don't want to waste any time at work, because if I do, I'll either have to stay late, or not get things done. It also allows me to prioritize tasks better. For example, at 5:00pm I'll try to wrap up my current tasks and I don't start any new tasks that can take more than 10 minute to complete. Another positive aspect of this approach is that each day I go home with a clear picture of what I have accomplished that day. And that feeling of accomplishment makes me want to come to work the next day.