Java is the new COBOL

technology that you should be using or familiar with now or soon

No one programming language is prefect for every situation, but some are perfect for specific situations. How do you choose what to know or learn in 2024.

What programming languages you need to know.

You must know Java!

Note that I did not say you must write Java, but you must know it. Just like in the early 2000's, I knew CORBA but I did not write CORBA, it got me plenty of work, porting CORBA "Orbs" from C++ to Java. I also knew C++, but at the time I only wrote C++ for game mods/side projects.

The world runs on Java today, like it or not, trillions of lines of code have been written in Java since 1.2 was released in 2000. You will have to deal with a Java system at some point, and you may need to integrate with an existing Java system so you will have to read through JavaDoc to know how it works. You may need to port Java source code to a new language. Just like those that came before you had to know COBOL to port a COBOL application to Java, this is the way.

You also must know Java to write Groovy, Scala or Kotlin because it all ends up in the JVM so you must know how the JVM works and what it does not do.

I have not written any significant Java code in about 7 years. I wrote a good bit of Groovy code about 6 years ago, but the most significant amount of code I have written in the last 6 years has been Go, JavaScript and Rust.

You must know JavaScript!

The web runs in a browser and the browser runs JavaScript.

You also must know JavaScript if you want to write programs for the browser in languages other than JavaScript for the same reasons you must know Java and I had to know COBOL. You still must interact with it at some non-trivial level to not use it.

If you want to use Web Assembly instead of JavaScript you still need JavaScript to load the Web Assembly to begin with.

You use another language that cross compiles to JavaScript, you still need to know JavaScript to debug why the cross compiled code is breaking and map it back to whatever you cross compiled from.

I really like using JavaScript for actual scripting the last few years. NodeJS and its other runtime competitors as well as having mature dependency management tools.

ZX is the obvious conclusion for every developer that already has to deal with JavaScript in their toolchain.

Even if you are not doing JavaScript development directly, some tooling or support tool you rely on is going to be written in JavaScript, which means you are going to have to have NodeJS install and all the tooling around it, so ZX is just one more package to install, is managed and updated by your package manager. Why bother with switching to Python when you must already deal with JavaScript.

You should know Go!

You must know a relevant general purpose programming language.

Go is an obvious choice for a modern, relevant general purpose programming language in 2024. There are plenty of articles about why Go an S tier general purpose language so I do not need to waste time or space writing about that here.

You should know Rust!

If you must know a relevant programming language to do high performance, resource constrained or system level programming. You should know Rust.

Rust is an obvious choice for a modern, relevant high performance, low level, purpose programming language in 2024. There are plenty of articles about why Rust an S tier modern language for all the constraints listed above, but also as a general purpose programming language, but you still must know C++.

C++ has not lost its relevance and will not for a significant number of years for the same reasons that Java will not. The trillions of lines of code and the momentum that goes along with that kind of mindshare. C++ continues to be developed and adopt more modern approaches to its language and runtime libraries, this is what keeps it relevant. It is not going anywhere anytime soon.

Rust would not be my first choice for DOM manipulation in the Browser, but for network libraries for accessing a server endpoint, a Rust based Web Assembly client would not be the worst choice. It would be more work than JavaScript, but if it needed to do some advanced high performance operations it is the S tier language for Web Assembly.

Conclusion

I ignored platform specific languages because if you are writing for iOS or Android you know what your options are already. The same is true if you are targeting Windows only applications, you have that constraint and your options are limited or obvious for them.

Regardless of your platform, to be a well rounded programmer, you must know a good general purpose language, Go is my platform agnostic recommendation. You must know JavaScript if you want to do anything browser related or work with any JavaScript based tools in your toolchain. You should know at least one low level systems language like, Rust is my platform agnostic recommendation. C or C++ will be the obvious winner in some cases which will be obvious.