Let us bring some balance to this argument.
For the record, I am a 9-5 programmer in the strictest sense of the word. I have coded for many many years and I will probably be coding for many more. I do have a strong passion for development and love seeing all those classes giving each other hugs and kisses. I'm all for fluffy bunny designs and FOR loops....
BUT...and it's a big but...
I refuse to sacrifice my other responsibilities as a husband and father to become better at one thing...software development. You see, when you lie on your death bed, you will look deep into your wife's eyes, and think of all those lovely moments you spend in Visio drawing UML diagrams and writing clean, simple and maintainable code...I think not.
It's not about balance. If I have to choose, I WILL be poor and be with my family. It's not about the money or job satisfaction or the stuff I want.
Agreed, my answer is probably only relevant to some of the married devs out there but for what it's worth, I'll try to represent those of us who are compelled to look after our families as real men do. Taking responsibility.
Don't give me the excuse "My wife married me as I am, she knows my passion for programming and willingly sacrifices every last second of my free time for the computer because she loves me". Dude...I won't even go there.
SO, to cut a already long story short.
I code from 9-5, I occasionally read articles on software development at home. I value time with my family and will not be an absent father or husband. The world has enough of those.
You only have 80 odd years to live on this planet, what do you want your scoreboard to look like once you're done. Like this:
Software developer - 8/10 Husband - 2/10 Father - 3/10
Go for it. Not me.
In fact, I go as far as to not work for companies that expect regular overtime. I am willing to do overtime on occasion although still see it as a lack of managing expectations. Period. A delivery date can in most cases be flexible if issues are detected/reported ahead of time.
Companies tend to start with the "crunch time" excuse which conveniently turns into a regular occurrence. It makes business sense, unpaid effort. If you give me time in lieu (yay! You know where I'll be spending mine!) I would do crunch time, any time.
If not, go get yourself one of those developers who think software development is all there is to life. There are many of them.
Regrettably this appears like some sort of rant, which it isn't.
Summary: Review your current working hours. Look at your other responsibilities in life and give them appropriate attention. Do not waste your life on becoming great at only one thing in life, it's too huge a sacrifice with too small a pay-off.