At work you're often focused on completing tasks on time. Good employers understand that you need to develop skills and will allow you to do so on the clock. Many people are not fortunate enough to work at such places and if they don't sharpen their skills outside of work then their skills dull with time. Novices that work at such places will have a very hard time progressing in such an environment if they don't take the initiative in their spare time.
Working with developers that are more skilled than you are is also a good way to learn and improve. If you don't get that at work then you better find or start an OSS project or something to contribute to.
When most of us use the word "good" in this context we mean significantly better than average. I think it comes across as an implication that if one isn't a "good" dev then they're bad but that's not what I intend at all. In fact what many of us mean by "good" is probably closer to "best".
> [...] a lot of bashing of programmers that don't code outside of work and/or [...]
The thing is, that for a young, smart person, mechanically giving up 50, 60, heck, 100 hours per week is not that hard, but it gives the nice “hero” feeling, social kudos.
Empirically, in full-time scenario (30+ hours per week), there is no difference in velocity of development work with more time spent; yet, there are toxic social effects.
Basically: what do the people who bash “undertimers” think?