I was talking to a co-worker the other day and I mentioned that I am teaching myself Python and Lisp. He immediately tensed up as if I had uttered a blasphemy. He replied, Why waste your time doing that, you'll never use them? All you'll ever really use in the real world is C#, PowerShell and maybe some VBScript.
I think that the crux of the matter comes down to the size of one's own comfort zone. In order for me to be a better programmer, I believe I need to keep my comfort zone really small. When I only use C#, Visual Basic, PowerShell and VBScript my comfort zone is large because these languages all have the same background: Microsoft and the .Net framework.
Large Comfort Zone
I think that a programmer needs to ask himself: Are all of these programming languages really different? They are all turing-complete after all, aren't they? Programming languages are not what really matters; What matters are the concepts they are made of.
I'm glad I'm learning Lisp because I now know more about macros, scope and the meta-circular interpreter. I'm glad I'm learning Python because I now know more about generator expressions and list comprehensions. I'm glad I'm learning both languages because now I know a lot more about functional programming.
The key thing is that the knowledge you had before and the new knowledge must overlap a little, otherwise you can't bridge that knowledge and make the connections among past, present and future knowledge.
Small Comfort Zone
In order to improve your skills, you got to shrink your comfort zone without letting it disappear completely.