With regards to being a passionate about hacking though, there's another problem: the pace of technological change. Take the guitar example: you invest a couple of years learning to play the guitar and perhaps develop a passion for it. That's something you can continue to nurture for a lifetime.
On the other hand, take the example from the article: the bored web developer spends "a few years" mastering Ruby on Rails. Oops, by then RoR is yesterday's news, now it's Clouds and Hadoop and Clojure and [insert technology/language/architecture du jour here]. So I think what you need to work on is not mastering something like "Ruby on Rails" but something at a higher level of abstraction... skills and habits that let you remain proficient and passionate about your craft even as the technological sands shift under you. I'm not sure how to really articulate what these are.
Yes and no. There are underlying truths to programming that you can and should carry with you from environment to environment. Some are very difficult to put into words, but some are not. One example that is now considered trivial and well-known is "shun global variables"... but then, just today I was fighting with code that's hard to work with because it uses global variables. This stuff is always news to somebody....
Another more recent example that may pass into that peculiar state of "everybody agrees its common sense but by golly I sure see an awful lot of violations of it every week" is being suspicious of mutable state. I'm not quite 100% sold on the "never use mutable state" idea (getting closer every month, though...), but I sure am 100% sold on being suspicious of it. Doesn't matter what your environment is, that carries over. A lot of stuff does.
In a sense, global variables and mutable state are much the same. Even if the scope of the mutable variable is local, if it maintains state beyond any specific call, it has a global lifespan. I think using mutable variables within a function that don't live beyond the function is generally fine (for loops, etc).
On the other hand, take the example from the article: the bored web developer spends "a few years" mastering Ruby on Rails. Oops, by then RoR is yesterday's news, now it's Clouds and Hadoop and Clojure and [insert technology/language/architecture du jour here]. So I think what you need to work on is not mastering something like "Ruby on Rails" but something at a higher level of abstraction... skills and habits that let you remain proficient and passionate about your craft even as the technological sands shift under you. I'm not sure how to really articulate what these are.