In 2010 I wrote a blog post called “Node.js, is this the next big thing?”
Combine this with the progress of Scala.js and ClojureScript and I think we can conclude that node.js was very much an indicator of direction with simplification, unification and a return to an event driven model. All for good reasons. Look at job postings and you’ll find plenty of companies looking for the full-stack engineer. It’s difficult to be a full-stack engineer, especially a good one, if each tier in the stack is very different. It makes both economical and technical sense to have our tools reach across both server-side and client-side, while still maintaining a healthy separation of concerns with a 3-tier (or N-tier if N >= 3) system.
I also very much feel the JVM is a safe and solid bet on the server side for a long time to come, especially for anything with a GC. But I want to dedicate this post mainly as a shout-out to a relatively fresh lower-level programming language called Rust. Soon to reach final 1.0, from what I’ve seen of this language I like it a lot.
Essentially a programming language is a management layer between the human creating the software and the computer running it. Very few people can, relatively speaking, with quality, manage anything more than the simplest of tasks in machine/assembly code. And C/C++ has never been far removed from assembly, and neither was it meant to be. But as concurrency, security and quality requirements keep on pushing, it’s becoming more and more difficult to ensure proper management of these tasks using the dated tools available. Rust is a breath of fresh air in this space, one I feel is strongly needed.
It will be interesting to see 5 years down the line how Rust (or a similarly inspired language, to hedge the bet slightly) measures up, but I’d be surprised if a bunch of recruiters wasn’t posting jobs requiring 10 years of Rust ninja skills.