2021 Software industry predictions
It is a cliché to do predictions for the coming year around New Year, but we are not beyond clichés if it lets us look forward. Let's make some predictions!
The Java Virtual Machine and its languages will lose in importance
The Java Virtual Machine and the Java language have ruled the enterprise for the last 20 years. Add to that the languages hosted on the JVM, like Scala, Clojure and Groovy, and the JVMs domination in the enterprise is almost total outside of a minority user base on the .Net runtime.
When Java first came out in the 1990s, it solved several big problems of the era: code & packaging portability between platforms, consistent runtime behaviour across platforms and an accessible garbage-collected high-level language. Now, almost 24 years after the Java 1.0 release, these problems are largely solved for every other major language in existence.
The JVM has lost its initial competitive advantages, while at the same time having a bloated runtime footprint. Yes, hardware/cloud resources are cheaper than developer cycles, but even those costs start adding up in the age of micro services, when a Golang or Rust service has a runtime footprint of 20mb, while the Java based one, will not even start with less than a 512mb allocation. Furthermore, Java the language, even with its updates in the last 5-10 years is starting to show its age and technical debt. Those developer cycles are getting cheaper on other runtimes.
Java and the JVM will likely outlast both me and most of the people reading this article, there is simply too much code out there, and too much familiarity with how to run JVM based systems. But there is no doubt Java and the JVM are going the way of Cobol: the systems will live on for decades to come, but for newly built systems, other runtimes are looking increasingly attractive.
As the JVM falls back, Golang & Rust will grow in popularity
Following our prediction of Java and the JVM becoming less influential, our next projection is a natural consequence of this: other languages and runtimes will become increasingly important for new projects. Our money is on Golang and Rust taking an increasing share of both the startup and enterprise software market, for slightly different reasons.
Both languages share blazing fast, low-footprint runtimes, amazing developer tooling and generally good developer ergonomics.
That's where the similarities end: Golang is an unapologetically simple and stripped down language, designed to be easy to pick up and be productive with quickly, work at scale and be less dangerous in the hands of inexperienced developers.
Rust on the other hand has most of the features you would expect from a modern language, designed to give developers ultimate control for performance and provably correct code. It has the "if it compiles, it is bug free and correct" feel of Haskell, but without the steep learning curve. However, it clearly has a higher learning curve than Golang, but maybe a learning curve that is rewarding, given the results.
Which one would we chose? It depends on the problem. Golang is perhaps a better Python or Java, with some type-safety, whereas Rust ergonomically feels like a cleaner, less messy Scala with superior tooling. Either is a fine choice, and we might return to the subject in a future post, giving more objective criteria for a choice. On a completely subjective note, personally, Rust fills me with more joy, perhaps due to my preference for pure, type-safe functional programming.
Serverless will become mainstream
Perhaps no surprise for those who have read some of our previous posts. We predict 2021 will be the year when Serverless enters the mainstream and gets adopted widely by larger organisations. We have already written about the benefits of Serverless, so we will keep this short.
The poorly kept secret of Serverless is that it allows us to shift our budget and efforts from ops work to innovation and new development. Ops doesn't go away, but it is radically reduced. Organisations that can move faster, innovate and run more experiments in the marketplace will get ahead. Competitive pressures will dictate a move towards increased Serverless adoption.
As a final part-prediction, don't be surprised if major big-name consultancies start calling themselves "Serverless experts" in 2021 despite having scoffed at it in 2020. Remember where you read it first when they start.
The "Cloud Native Landscape" will see a brutal shake-out
The Cloud Native landscape is, to put it mildly, a confusing mess. Check it out, then come back here, we'll be waiting.
Trying to make sense of it could be a full-time job (and probably is in some places). There are so many solutions, to so many problems, some real, some imaginary, that an organisation could be forgiven for being struck by analysis-paralysis, trying to decide upon a Kubernetes based stack. The situation is not helped by many of the projects clearly being subpar, despite promising premises and outlandish promises.
Given the back-drop of a pandemic and recession, it seems like the landscape is long overdue a brutal shake-out of projects and companies dying off and disappearing.
As a side-note, the complexity of the Cloud Native Landscape is another reason why we often recommend "just use AWS Serverless". While the AWS Serverless stack also has some duplication, there is a better blueprint for how to solve commonly occurring problems, with fewer decisions to be explored and made.
The workplace: "Back-to-office" will only be part-time
We are making a wild assumption here before our actual prediction: by late summer 2021 enough people will be vaccinated in most western countries to return safely to the office if they need to.
At Chaordic, we are big believers in remote working, it has many benefits for both employer and employee, benefits that others likely have enumerated better than we could. Therefore we will spare you the list of advantages.
But at the same time, some things get lost in a remote only word: serendipitous random conversations that spark new ideas, communication outside of our immediate bubble and comfort-zone. Additionally, it is clear that different people have different preferences and different things that work best for them. Some prefer remote-only, others prefer office-only. Trying to create one rule for all is pointless, when there is no one-size-fits-all solution that is the best for everyone individually.
Our belief is that the future will be more flexible: some may return to the office 80-100% of the time, while others may only do 20-40% in office. The pandemic has taught us that the office is not as important as it once was. The world may have fallen apart around us, but workplace productivity did not.
The return to office, once some semblance of normality returns will be partial, based on the individual preferences of employees, and needs of teams to occasionally interact more in person. Flexible working will finally be what the word promises to be.
Apples move to ARM will make them even more popular among developers
Before I saw the breathtaking results of Apples move to ARM processors I was fully preparing to move my personal workflows to Linux. Any transition like the one Apple has made will be painful for developers of tools. x86 simulation on Docker will be one of the key things to look out for.
But assuming the tools get translated and sufficient x86 emulation for developers gets done, I suspect even more developers will flock to Apple. The performance increases, at the energy profiles Apple has shown are too good to to pass up. Who wouldn't want an all-day laptop with 60-100% performance increases?
Even if the transition is less than smooth and takes longer, Tools like VS Code over SSH are now so good, that building for x86 in the cloud is a viable option without losing a step.