We, as an industry, are going to a dangerous place when we don't just expect, but require people to keep working after work.
Neglecting candidates for a position because they don't contribute to open-source projects; choosing who to fire on the basis of who has a pet project and who doesn't; expecting employees to keep up with new technologies, frameworks and languages entirely on their own; etc.
This happens because somehow the belief that only people who code (for free) after work are passionate and/or good developers has become a "truth".
Here are more realistic truths, however:
- Only a very specific demographic can afford to work for free after work.
- It's in the interest of companies that their employees keep learning and are up-to-date. Companies should provide resources for this to happen.
- There are excellent developers who have a life outside work.
- There are excellent developers who have responsibilities outside work.
- There are excellent developers who didn't teach themselves programming when they were 12 years old.
Life happens. People meet other people who become partners. People have kids. People build families. Developers are people.
One could think that having kids or building a family is a choice. Even assuming this is true (it really isn't), life still happens. A parent grows old and needs daily care. You might develop a mental illness, like depression, and have zero energy after a long day at work to do more work. You might suffer a traffic accident and must spend 2 hours a day on rehab for a year.
Who can afford to keep coding after an 8-hour work day of coding? Who doesn't get harassed in the open-source community? 20-year-old white guys with no responsibilities and/or with enough income to "buy" more free time (i.e: nannies, cleaners, good healthcare, a car to commute, etc.).
EDIT: If the previous paragraph has made you feel uncomfortable or outraged, do read this article: ["The Ethics of Unpaid Labor and the OSS community"](https://www.ashedryden.com/blog/the-ethics-of-unpaid-labor-and-the-oss-community), by Ashe Dryden.
And this leads to the question…
How can I be a good developer without coding 24/7?
First, we have to realise that we perform our best at work when we are happy and not stressed.
Cutting off hours of needed sleep to study a book? Bad idea. Sleep is paramount to your health (and performance!) and not having enough will take its toll.
Neglecting your partner and kids in order to build a pet project? Seriously? Is a pet project more valuable than seeing your kids grow or sharing your life with people you love?
Destroying your social life, abandoning all your hobbies, quitting working out just to contribute to open-source? Will this make you happy in the long term?
So what can we do?
What I've been doing so far is to take full advantage of my working hours: pair programming with colleagues, reading other people's code, asking lots of questions, answering lots of questions, code reviews, etc.
Ask your employer to pay for a conference and give you company time to attend. If the company is small and doesn't have enough resources, you can ask to attend local workshops, meetup's, etc. As I said, it's in their interest that their employees are up to date. If they don't allow that to happen, it means that they think employees are disposable and easily replaceable, so you might want to start looking for a new gig.
You can read technical books or blog articles in the lunch break or in the commute. You can try new technologies or languages if you need to develop a small tool to assist you to do something, or a prototype. Don't be afraid to try new stuff!
Don't feel guilty for having other hobbies besides coding. Doing other activities, or working out, will improve your mood, your energy levels, and your creativity –in short, it will make you a better developer.
And if you can manage to have a bit of free time to devout to coding, try to make it count. What I've found most helpful is to put a hard limit on the hours spent on a pet project. It can be a game jam weekend, or it can be something you impose to yourself: "I will spend 20 hours on this". By having a deadline you will have something finished: it is a huge moral boost, it will allow you to publish it online or in a store, and it will be more impressive in your CV.