It’s well-known that you must “always be learning” to survive in this industry over the long term. Far too many people have found a comfortable niche, stayed in it for years, and then found themselves struggling to find a new job after the inevitable end of the job. It doesn’t matter how good you are when the company goes out of business, the company shifts shuts down your department because of declining sales, etc.
The demand for the old technology doesn’t go away, of course, but it can be seriously reduced. It’s not fun when there’s only two jobs for every three people looking and the others are willing to work for less.
Survivors also know that half of the battle is figuring out what to study. It looks like the average lifetime of a technology is about 15 years. That doesn’t mean C or Java (or Fortran or Cobol) goes away after 15 years but greenfield development starts to move into new technologies. Sometimes it has a new name (e.g., C morphing into C++), sometimes it does not (Java becoming functional or Cobol becoming object-oriented). It takes 3-5 years to really understand a technology so it sounds like you have plenty of time to prepare but you never know which technologies will take off and which will be stillborn. It’s tempting to stay close to what you know, e.g., learning Groovy in addition to Java, but the real game changers take off in entirely different directions. Maybe the industry stays with functional Java instead of moving to Scala but I’m glad I studied the latter since it makes the former a lot clearer.
This is my long-winded way of saying that I’m currently studying the GIS, R and Python triplet. Well, the first two at the moment. Many of my contracts over the past few years have involved a spatial component and it’s a natural extension to ask what more can be done. R is widely used for analysis and presentation. Python, for whatever reason, keeps coming up in connection with the first two techologies.
I’ve found a good resource for learning R – the Data Science specialization at Coursera. Don’t be misled by the fact that only one course has ‘R Programming’ in the title – of the three substantial courses I’ve taken all have required learning R in more depth in addition to learning how R is actually used in practice.
Coursera also has classes on GIS, e.g., From GIS to Google Maps to Spatial Computing, but they don’t appear to be offered on a regular basis. That makes it hard to give recomendations.
(Udemy has introductions to Python but they appear to be intended as introductions to programming in genral. I haven’t found a good resource for people who already know how to write software in other languages.)
R is… interesting. It clearly comes from a different perspective than every other language I’ve used, including PostScript. That doesn’t mean it’s bad, it just uses a very different conceptual framework. And that’s a Good Thing since it’s forcing me to look at problems from a new perspective – and maybe I’ll how I can solve problems with a quick call to an R script instead of days of effort in Java et al. It’s not “travel broadens the mind” but I would like to think it will make me a better developer overall.