If you get some amount of work done in 8 hours, will you get done double if you work 16 hours? This is of course an extreme case, nobody can work for 16 hours and still maintain focus. But some manageres and developers do think that when in need they should work long overtime hours. The project is almost reaching its deadline, but it is far from being finished. Your boss or your client (or even yourself) urge you to get it done ASAP. So you decide to get up very early and go to bed very late, in order to write as many lines of code as possible. But does it really make sence? Are you really more productive if you work longer? Here is my summary why not follow this path.
Tiredness and loss of concentration
This should be obvious. You are simply not capable of maintaing concentration for too long. When you sit in front of a computer for too long, you get tired. Your body needs exercise, and your brain needs a brake. But you can’t rest because you are already in a hurry. As a result you will introduce more (possibly stupid) bugs in your code, which you would not do if you were fresh. You will have to fix them in the future, and you will be even more late.
Loss of joy from your work
You dream job has now became a nightmare. You now longer look forward to go to work to write beautiful code, you now go there because you have to. And doing something only because you have to is very bad motivation. You will probably feel need to compensate this suffering somewhere else. So when your shift ends, you try to switch off (Get high, get drunk, whatever). You try hard not to think about work .You are off balance.
No time for reflection
Because you are in a hurry, you don’t have time to stop for a moment and meditate about your work. You need to find some time to look at yourself “from above” and see yourself and your work in a broader context. Does it make sence what you are trying to achive? Does it make you happy? Does it worth the effort? Could it be done better? Is there something I have missed?
No time for learning
You don’t have time to learn about new language features, about new techniques, new ways of thinking. Even though you are always moving, you don’t get anywhere. You are stuck. You don’t progress, and if you do, then slowly. Then you tend to repeat your own mistakes and bad practises over and over again simply because you are not avare of them. You also miss new opportunities, which is the greates loss of all.
No time to refactor
You write some code and it works, so you move to the next step. But you have forgotten something important – to look back. There might be something rotten in your code. It works, yes… and, yes it does what it should do, but still it could be probably written better. Refactor. Try to keep the four elements of simple design. If you don’t then you risk that will face maintenance nightmare in the future.
No time for personal life
You girlfriend complains that you don’t pay enough attention to her and that you have become obssesed with your work (instead of being obssesed with her 😉 ) You have not time to actively relax and you don’t have time for your friends, who could probably give you some good advice before you burn out.
If you continue to work this way for long enough you will eventually burn out. The day will come when you will wish you have never started to work with computers. You will wish to do something completely different. Like having a goat farm or hitch hiking around the world 🙂
There might be various reasons why you “have to “work that hard. Your boss might have unrealistic expectations about how fast the company is able to deliver the project, or he might try to win the contract at all cost. Or it might be because of your own unrealistic excpetations – you might be simply not experienced enough to judge how long it will take you. Or you might be afraid to fail, you don’t want to admit that you are still a beginner. None of these reasons worths it… or does it?
Thanks to Petr Novák for inspiration for this post and reading a draft of it.