I have a hard time understanding this: programming skills are extremely transferable and learning the hot language/platform of the month isn't extremely difficult. Is it just inertia that prevents them from doing this?
I have a hard time understanding this: programming skills are extremely transferable and learning the hot language/platform of the month isn't extremely difficult. Is it just inertia that prevents them from doing this?
I don't think it's just inertia, at least not in my case. I know that my example it's just anecdotical, but I'll write it down anyway.
I'm in my early '30s, I've been programming in Python for 7 years now (and during the last 6 years I even got paid for the privilege), along with other languages (PHP, JS etc.)
The thing is there's only so much that you can learn about the world around you by focusing on only learning programming- or tech-related subjects. Of course that, for example, learning Erlang or Caml are extremely interesting things to do, intellectually speaking, but when I realized that by learning to speak Arabic of Farsi I could potentially be able to interact with and to better understand the culture of tens if not hundreds of millions of people then my interests slightly changed.
Of course that it wouldn't help me one bit if I were to tell my potential future interviewer "hey, I learned to speak Farsi so now I can really read Hafiz's poetry the way it's supposed to be read", but as long as that experience enhances my understanding of the world around me it's all for the best.
Re-reading what I wrote I realize maybe it doesn't make much sense, anyway, what I wanted to say it's that most of us, programmers, are (really) smart people, it comes a point in one's life when you realize that there are other things in life worth spending your time on.
"If we really want to become smarter, we will have to resort to the hard work of building more effective representations within the existing processing capabilities of our brain. Modern neuroscience backs me up here (e.g. summary in nice NPR interview); the process of compiling our experience into higher and higher order patterns that we use to structure future experience is what makes the judgement of experts more efficient than that of a novice (not always more effective, as the higher order patterns can also limit our generative abilities)."
You can be a very effective developer (at least in certain contexts) without building robust mental representations which allow you to assimilate newer techniques easily. And there can be cases where this is an advantage.
So more concretely, people recommend learning tools like Lisp, to give your mind mind practice with a more abstract, meta way of working. (So you can explore and rejigger new ideas without necessarily writing a classical compiler and idiosyncratic language from scratch.)
I think one of the things that's hard for people is that thinking along a particular type of technology for people creates a type of mental rut that means subsequent thinking tends to go down the same rut.
By this, I don't mean it so much as the 'stuck in a rut' sense of being unable to escape, but more of the fact that it's hard to approach a problem without using an existing mental pathway you've spent years using.
It's like trying to learn a new (spoken) language - you tend to try and think in your old language and do the conversion, rather than think in the new language. The people who can pick up new languages quickly apparnetly have a good ability to skip over these mental ruts and embrace new types of thinking quickly.
So people struggle initially to understand new technologies because it might require a different type of thinking. And they may also have no chance to practice these skills without leaving their existing job, which might involve a significant cut in income and/or a relocation.
Of course the end-run around this is to be involved in an open source project in the new technology, and try and pick up work through those avenues.
The other issue is that, as a technology gets mature, as long as it is still being used, the dollar rewards tend to go upwards as time goes by. I personally know of guys who still work on database systems written in the 1980s which predate relational databases. They are the only ones who know it, and are pretty much untouchable for both domain and technical knowledge. They get to work from home for large money and are off-limits as far as cutbacks and layoffs. Of course, this all happens up to the point a new system is put in place, but, as the article says, old systems are geographical layers, so businesses can tend to build on top of the old layer and glue it together with middleware, rather than do a bottom-up rebuild.
So if you're making big money doing something you can do with your eyes closed, and are indispensable, there's not a lot of incentive (beyond intellectual curiosity) to switch out into a new stream. The people I know are financially set anyway, and they just see it as a revenue stream that will one day dry up, but are happy to keep taking it while it comes in.
I've already mastered an x-number of technologies in my 25 years as a developer, I'm 100% certain I can deal with the umpteenth new one (albeit a bit slower than I used to). I already know I can program, and what my strengths and weaknesses are in that area. I'm more motivated to take on challenges I might actually fail at, or learn something new about myself.
Those who are good at it just don't get how hard it can be for those are not quick learners in this sense. This is part of not knowing their own value -- claiming that learning new languages is "easy." It is. For them.