The lack of skilled IT workers is hurting the deployment of emerging technology, according to a new survey from Gartner. In areas from cloud to cybersecurity, this crisis is expected to last for years to come.
If you want to stay ahead of the pack, though, and be able to take your pick of the plum jobs of the future, then it may be worth looking beyond Java, Python and these other languages.
What about gaining skills and experience in up-and-coming languages that aren't in demand yet - but may well be soon? It's a career strategy that worked for programmers who spotted the potential of Java when it was introduced in the 1990s. Those who got in there early could walk in to any Java programming job they wanted a few years later - and demand the very highest rates as well.
The problem is picking the right language to learn, as there are plenty of new ones to choose from. "Almost all new languages are coming from open source projects," says Mark Driver, a research director at Gartner. "That means there are no barriers to entry, so thousands of new languages are coming on to the scene. Most disappear quickly, and only a few ever catch on."
Driver says he believes the reason is that, for most organizations, the "incumbents" such as Java, C++ and C# are just too entrenched to replace, "and there's very few enterprises that want to expand the languages they use too much."
But the signs say a few new languages are catching on. Here are six of the most promising ones, in no particular order:
Why learn Dart? Google's backing ensures that Dart has a good chance of succeeding.
Opa: Simple, Secure Web Apps
Although Opa hasn't yet been adopted by enterprises in any significant way, there are a lot of discussions about the language on the Internet at the moment, Driver says.
Why learn Opa? Web applications are going to get more complex and prevalent, and there's unique value in having the server-side/client-side distribution of code happen automatically.
Scala: Scalable Language in More Than Name Only
Scala is short for "scalable language," and it's designed to be exactly that: Scala can be used for tiny programs or very large-scale applications. It's not particularly new, as it was introduced in 2003, but interest is on the rise. One key reason for that is that you can optimize code to work with concurrency. Another is simply that many developers like using it.
A key advantage for companies considering Scala is that it interoperates with Java. It runs on JVMs (and Android), while integrated development environments (IDEs) such as Eclipse, IntelliJ or NetBeans, and frameworks such as Spring or Hibernate, all work with it. "The ability to adopt it on top of existing JVMs is really significant," says Jeffrey Hammond, a principal analyst at Forrester.
Why learn Scala? It appeals to enterprises that have already invested in Java and don't want to have to support anything new in their production environments.
Erlang: With Concurrency Comes Availability
Erlang is another language gaining momentum because of concurrency. Originally developed in 1986, Erlang was open sourced in 1998. It's designed for building large-scale, highly available applications. Erlang's runtime system supports hot swapping, so code can be modified or updated without having to stop a running system.
Language-level features are provided for creating and managing processes to simplify concurrent programming. Meanwhile, processes communicate using message passing, removing the need for explicit locks.
Why learn Erlang? Both Gartner's Driver and Forrester's Hammond suggest Erlang is likely to proliferate in the coming months and years.
Ceylon: Modular Java Killer
Based on Java, Ceylon has been designed as a Java killer. Developed as a language for writing large programs in teams by Red Hat, the first stable release became available at the end of 2013.
Modularity is a key feature. Code is organized into packages and modules, then compiled to module archives. The tooling supports a system of module repositories, with every module published in a central repository called Ceylon Herd.
Since Ceylon is based on Java programming and comes with an Eclipse-based IDE and command-line tools (with built-in modularity support,) Ceylon shouldn't be too difficult to get up and running if you're already skilled in Java programming.
Go: Language for the Cloud
Go, another open source Google language, first appearing in 2009. Also known as Golang, Go is a traditional language like C, but it's written expressly for the cloud, with concurrency and other features such garbage collection built in. Large Go applications can be compiled in a few seconds on a single computer.