10 Solve problems with tools you know
20 Learn new tools
30 GOTO 10 15 Find known tools to be insufficient
That's always been a big driver for my learning. If I could do the job with the tools I already know, my drive to learn new tools is somewhat diminished.I am glad I took some spare time to learn RoR coming from a .NET background. I had no problems to solve in RoR that I couldn't solve in .NET.
I just explored it and learned about different ways of doing things. I am sure it has made my .NET programming better too.
Also learning some RoR has got me also using Linux and Git. I learned a bit about Nginx etc. I went to some interesting RoR meetups. I gained a lot from it.
So I encourage programmers to learn other languages and techniques, for the sake of it!
--
10. Learn another programming language / framework tool
20. Have fun with it
30. Realize you can now solve problems you previously couldn't
40. Profit
I mean don't try solving novel problems in your day job with novel tools and techniques. Use known tools to solve problems. Lean new tools when not solving problems.
You must often hit the point where you think "surely there is a better way to do this, lets research it" - then find new tools, spike them and then use them? No?
However what I think you are getting at maybe is people who think stuff like "Node.js - that sounds funky, oh.. Hadoop - thats hip at the moment how can we use that?" perhaps for fun, or to enhance their CV. That is dangerous. You end up with completely the wrong tool for the job!
I mean like "I know, I'll do this client job in Lisp, I've never tried that" which is probably a bit of an extreme example but I have learned similar by experience :)
10 Solve problems with tools you know
20 Learn new tools
30 GOTO 10
Sure, but since learning new tools more than superficially means solving problems with them, that is equivalent to: 10 Solve problems with tools you know
20 Solve problems with tools you don't yet know
30 GOTO 10
And learning new tools -- programming languages specifically here -- often involves learning new techniques, that while not necessarily as natural and popular with your current language, can be applied there, which its good to have in your pocket for when the techniques that are most popular/natural with your current languages aren't great for solving a problem you run into.There are good reasons that the The Pragmatic Programmer includes the recommendation to learn a new language every year.