There are incentives to use the latest technology, just because it’s the latest, even if it’s no better than its predecessor. Being up-to-date makes it easier to
- Find a job
- Work on new projects
- Demonstrate enthusiasm for your profession.
In addition, there are advantages to staying with the mainstream. If most people think something new is better but you disagree, you might do well to acquiesce. When you’re in the mainstream, it’s easier to find parts, documentation, people to answer questions, etc.
That said, here are some bad reasons to adopt the latest thing:
- Believing marketing hype
- Not considering your particular circumstances
- Under-estimating learning time
- Fearing a technology will die
Not every new release of every product is an improvement. If a new product truly is an improvement for most people, that doesn’t mean it’s necessarily better for your particular needs. And if your are sure the new thing will make you more productive, you have to also ask whether you will use it long enough to repay the time you invest learning it.
Many programmers live in inordinate fear that a technology will die. But technologies seldom disappear. They may become less fashionable, less visible, less common, or less lucrative, but hardly anything ever goes away. Programmers may suffer more pain from technology that won’t die than from technology that does.
Technologies don’t drop out of use nearly as quickly as they drop out of fashion or out of sight.
Update: As an example, this podcast claims that 72% of financial transactions are still processed in COBOL.
Another reason to learn new technologies for the sake of learning new technologies is to improve your learning skills. I’ve learned many things I never used for real but I noticed that after learning more things is easier for me to learn even more.
It’s also hard for me to come with something I learned I said later it was a complete waste. I always find something worth in any new technology. For example, I’m trying to learn Haskell (not a new technology but it’s truly new for me), I still suck at it and can’t do anything real yet but by trying by learning Haskell I’m improving my programming skills in my day-to-day programming language: Python.
But further discussion about the topic is constrained by what it’s understood as learning. Is it play a bit with a technology? Is it mastering something so that you can do stuff you are paid for?
I agree that learning new things can be intrinsically valuable, even if you never directly use them. But some things are more valuable to learn than others. I think it would be more valuable, for example, for a C# programmer to learn Haskell than Java because the former is more of a contrast. Haskell would introduce new ways of thinking; Java would introduce new APIs.
Here are some of my thoughts about what is worth learning in advance and what is best to learn if and when needed: Just-in-case versus Just-in-time.
I agree some things are more valuable than others. For a C# programmer choosing to learn Haskell over Java would be more valuable. But if for whatever reason the programmer ends up learning Java I would say it has some value, it’s not a waste of time. I prefer that to not learning anything.
There are plenty of programmers out there that choose to stay with whatever they learned in their formal training and reject anything different.
Well, some technologies don’t die apparently – I got my start in 5-tube radios when I was in my early teens, (Yeah, I’m THAT old) and now tubes are all the rage, at least with a lot of rock bands. Since roadie is no longer a career option I need other venues to enhance my techno skills.
Dot net micro gives any programmer a chance to use reasonably familiar tools to work with a new generation of increasingly powerful microprocessors. At going on eleven, C# is almost venerable but now gives a programmer a chance to work with some very cool embedded systems without having to go through the living hell of c intermingled with assembler.
The new jobs are going to be at the interfaces where established technologies meet and merge to create something new. There are kids out there using Arduinos to control cool little vehicles. They will grow up with a mingling of hardware and software skills that will give them a head start for the hard times ahead.