I was just listening to Joel Spolsky and Jeff Attwood on an old podcast of stack overflow (from after Christmas I think), one of the questions was a very interesting one which was how a lot of developers burn out because of the pace of programming and the changing languages (i.e. the numerous flavours of ruby, the latest version of .NET, or the latest ecommerce platform), which essentially boiled down to how do you maintain enthusiasm for coding?
I think this is a really important question and relates to everyone in every profession not just programming although in programming it is more extreme. I can only speak personally but for me, in order to have a fulfilling life it is REALLY important to have a balance between learning new things and practising old skills. Any skew to either one of these will leave me feeling unfulfilled and frustrated.
Learning new things is great. If you aren’t learning you feel your brain getting lazy and fat, the same thing happens to your brain as happens to your body if you don’t do any exercise, leaving you feeling like an invalid human being.
Pushing yourself to get control over something you don’t understand and slowly making it conform to your will is ultimately satisfying and is inherent in all pursuits, however it is incredibly frustrating and involves a lot of trial and error. Which is why it’s vital to balance this with practising something your already talented at, this way you can balance your failures with successes and keep things in balance and you motivated to continue.
This is why in a more practical sense it’s important that you have enough time to learn new things, so if you work in a super busy job that keeps you on your toes 9-5 doing the same thing then you need to make sure it gives you enough spare time to learn some new things. Conversely if you work in a job where everything’s constantly shifting and nothing’s ever the same, you need to make sure you have a constant in your personal life, that you can be successful at.