Coding after work

I posted an answer to this question on Hacker News but I feel like there's more I need to explain.

My original answer

You will probably have a higher chance of developing technical skills if you take some time to study and code during your free time. You shouldn't depend on your job to train you on new languages or frameworks. There are a lot of things you and I don't know and we won't have time to learn about them while at work.

Also being a developer isnt just purely coding. There's the ability to write legible code, write tests, know what to use when, know how to read code that you didnt write (or even in a language you arent a master of), find the cause of a bug in an efficient way. You need to be able to talk effectively to non-technical people to figure out why they think X is a bug or how Y is really supposed to work. Those type of skills kinda evolve during your work hours but you have to be aware about improving on them.

I think if you don't spend some extra time programming you very well might grow stale. Years will pass by and youll realize you want to get a new job but you dont really know that much beyond what you did at work.

The first part of my answer I bring up the point of not relying on your employer to train you. There are mulitple ways an employer can train you, they can pay for tuition/conferences, hire talent to come in for training sessions, pay for books. I've come to believe that any of that is gravy and not something you are entitled to. Of course it benefits the employer to spend money training you but some places don't consider that factor at all. If you really want to get better at what you do then take the time to learn. Don't just sit around thinking:

Assume a developer puts in about 40 hours a week. In most places those hours are spent fixing bugs in a legacy product. That's realistic because there is a ton of legacy code out there which works but needs some maintenance. If all you know are the patterns you've seen in the legacy code and the approaches it takes to solving problems than you probably know only one way to solve those problems. There are other platforms/patterns/tools you can use but you won't know about them unless you program/learn during your free time. Being a great developer or just a good developer doesn't mean you refuse to work on legacy code, it can mean that you know how to improve it and you know why it's rotting. Being a smart developer means you know how to successfully migrate that legacy code out to something more stable/usable/modifiable.

The second part of the question relates great development strictly to programming. Personally I think that development is more than just churning out lines of code. Not everyone can be the Michael Jordan of programming so you have to be a good teammate and make sure you work well with others. There's a kind of greatness that comes out of developers who can bring their whole team +1 a level.

The final point I want to raise is that for many people being a developer means being an employed developer. You might have a great time working on something right now but will you be able to find a good job doing that same thing in another city, or for better pay, or for a better employer? It's risky to assume that you'll always be able to get a job for that one thing you're midly good at. You don't need to jump on the next newest language or framework but you should be learning what everyone else is doing in case you need to make a move.