I always listen to the story that person cannot become an excellent developer if he/she only work at his/ her job and do not do any side-projects or read at ones free time at home. So let us analyze if that is correct.
The argument is that in order to become great software developer it is not enough to just do your daily job. You should also write applications in other languages and contribute to open-source projects as well.
This is not a dilemma if you should do side-projects or contribute to open-source. Please do. I encourage you. The question would be if this make you better developer? Sure you are going to get more experience which you can use later on, or maybe you will learn a new language, but we have one crucial thing that you should be careful about.
You productivity will get worse with each day that you spend working more than eight hours. Eventually, that will lead to a burnout and you do not want to be in that kind of state.
Tony Schwartz wrote a nice blog post called For Real Productivity Less is Truly More in which he mentions sleep researcher Nathaniel Kleitman study which deals with humans after working at high intensity for more than 90 minutes begin to lose focus, feel hunger and are in desperate need of break time.
So in order to be able to use those skills you can acquire during that side-project, you need to be careful and take a rest.
Another argument against this is that most of the people who think that we should work after the period of work from nine to five , have awful and unsatisfying jobs. As we mentioned before, working more in your spare time can be bad for that day-job because you will lose focus and be tired all the time, so you will not be able to do your primary job as good as you would like to.
Second thing is that if you have bad job, do something about it. Change the culture, change the process, change the code, make it more challenging, introduce new technology, create something out of nothing if you must.
If you try everything and you have obstacles that you simply cannot overcome, than change the job. Life is too short to be spent on lousy jobs.
What if you have to work more on your day-job. That is also the situation a lot of developers are finding themselves in.
There are two types of overtime, the paid one and unpaid one.
First one is rare, because since it is payed and it is usually paid more than regular hours, companies try to avoid it if possible. But even if it is payed you should be very careful. Sometimes free time is worth more than money.
Second one represent free hours you are giving to your company.
Imagine if your boss comes to you on Friday and tells you that you really need this new feature until Monday or you will lose big client.
You will probably help out. And you should. Especially if that is one-time thing, whole team should come together and save that client. Also if you were working on a project for couple of months, and especially if you were lead developer or team lead, you would want to work more hours when time comes for a big release just so you can make sure everything works. It is an obligation you have, not just towards your employer but to the project and code itself.
Problems start when this becomes a norm, when it is expected of you to work every day two or three hours more, when you have working weekends and so on. If there are often emergencies and if often you need to put off fires, then you have to set up some boundaries. Either you get paid for overtime hours ( remember to be careful about this ) or just refuse to stay.
There is also one more angle to this story in which developers are to blame entirely and these ares unrealistic estimates. When we estimate that some feature is going to take five days, and it turns out not to be that easy, than we tend to work crazy hour to deliver on an estimate that we gave.
Always estimate conservatively and double the days you think you can solve the issue. That can have double positive impact, first on customer if you end up finishing before deadline and secondly you will not have to work overtime if the unpredicted things happen.
What is your story? Did you have to work crazy hour? Does doing side-projects help you on your day-job or not? I would love to hear your opinions, so please leave a comment.