Having weathered a pandemic that fundamentally altered the shape of global society, we find ourselves at the midpoint of 2022. One of the most notable shifts of the past two years was how much we relied on digital infrastructure, driven by necessity. The system held up admirably, even as the people maintaining it struggled to invent new ways of working.
We’ve learned that the web can provide everything from PPE to virtual weddings. When little else was comforting, many of us retreated ever deeper into our digital cocoons. As web usage skyrocketed, we discovered new fault lines and areas for improvement. Now, a new wave of technologies is emerging to upgrade and build on the online experience. Let’s take a look at the trends at play in current efforts to rebuild the internet as we know it.
Coding for fun and profit
You can ask almost any software developer if the program they just finished developing is good enough, and they will say it could be better. This is similar to the way a musician will finally just release an album, even though they don’t consider it done. Or, as John Lennon once said of the Beatles’ timeless oeuvre, “There is not a one of them I wouldn’t like to re-record.”
From this, we can understand one of the chief motivators for continuous improvement: Software engineers are guided by something akin to the artistic spirit, an irrepressible urge to build something excellent. It is called the state of the art, after all. We often say it’s all about code readability and maintainability. In truth, many of us are also motivated by the inborn desire to create something of inherent worth.
Of course, excellence is not the only motivator. Profit is another factor. Despite the ferocious odds against innovators, when lightning strikes, the financial benefits can be astounding. Although the coder mindset is notoriously hard to unite with business acumen, bringing the two together can potentially capture that lightning in a bottle.
Software development trends coalesce
As these powerful motivating forces work their effects in the crucible of industry, we get a rapidly changing development landscape. Let’s look at some of the most global trends in software development and how they’re coming together right now.
Cloud adoption and higher-order infrastructure
It is indisputable that cloud spending continues to increase. In fact, cloud spending recently overtook half of all IT spending. The reason is simple: Virtualized infrastructure and tooling offers a more agile solution to many needs. What’s fascinating is how cloud use is evolving.
The idea of cloud-hosted, dynamic virtual machines (also known as infrastructure as a service, or IaaS) was powerful, but it turned out to be the first sketch on an evolving canvas. PaaS and serverless functions are the logical next steps. We are also seeing a diversification and specialization of solutions—a vertical as well as horizontal evolution.
Virtualized infrastructure lets innovative players develop higher-order solutions. Players in this arena fall into two broad camps: API hosters and API providers.
Serverless deployments and API providers
Services like Vercel and Netlify are two good examples of state-of-the-art API hosters. They represent a kind of serverless infrastructure that rides on top of the IaaS and PaaS layers. Moreover, they represent a specialization of that infrastructure, targeted at a certain universe of use cases.
Anyone that has sat in front of Vercel’s dashboard and a complex front-end application with a button click knows what I mean: Vercel is serverless plus. That is, it’s serverless that has been refined and harnessed to fulfill a precise need.
Meanwhile, a good example of a modern API provider is MongoDB Atlas. This is an API that happens to primarily provide data persistence. At its heart, MongoDB Atlas is a remotely available API as a service. Services like Sentry.io and Auth0 are similar.
The key is that, like Vercel for hosting, these solutions offer a high degree of abstraction—lots of power with a little work—harnessed to a specific set of needs. They are built on top of the modern virtual layer. Deploying datastores into virtual infrastructure is the traditional model, only moved to the cloud. Using something like MongoDB Atlas is more like having a specialized datastore partner, devoted to making it easier to integrate what you have with what you need.
Another interesting observation about successful tools in this space is that they tend to have three aspects: an API that applications connect to, in-code integration support, and a web-based management console.
What about API builders?
So, we can see that the era of cloud platforms has paved the way for something new, but it’s difficult to predict exactly what. It’s a process of discovering where the needs of users—often unknown even to them—meet in novel ways the capabilities implicit in these new tools.
Interestingly, the world of actually building APIs remains comparatively unchanged. There have been incremental improvements, but nothing like the disruption we’ve seen in hosting and providing. A movement that unites the activity of API construction with the achievements of hosts and providers will represent an upheaval rife with opportunity.
Next, let’s look at a few of the areas where software construction is actively evolving.
Front-end tools and frameworks
Much of the work in the cloud is integrating existing tools and uniting APIs, which will always involve humans doing a certain amount of custom work at the middleware level. That’s because the ultimate purpose of all automation is to serve the changing needs of humans.
Server-side languages like Rust and frameworks like JHipster are interesting developments, but overall the field is in flux. Like the front end, the back end awaits a more thoroughgoing evolution.
Existing solutions like Java, Node.js, and Python (and their related frameworks) are all well-suited to the environment and constantly evolving in response to real-world demands. I believe that they will remain a critical realm of activity. Just as IaaS continues to be a vital layer in serverless, middleware code will be important for the foreseeable future.
Low code and machine learning may threaten to compete with human developers, but will ultimately be revealed as simply more tools in the developer’s toolbox. An excellent example of innovative low-code thought is Builder. To see how machine learning can assist in coding, we can look to GitHub Copilot.
Decupled architectures, aka microservices
Next up, the shift toward remotely decoupled architectures, also known as microservices, will continue to grow and become more well-understood. The monolithic architecture paradigm was clearly incapable of capitalizing on the potential inherent in the cloud. The alternative, microservices architecture, involves shouldering a devops burden that is far from trivial. Microservices are at once a process-scaling enabler and a complexity magnifier.
Any innovations that seek to encompass new directions in technology—such as APIs as a service, front-end evolution, and custom middleware—will have to account for the complexity of microservices architecture.
Process automation—that is, coordinating the processes teams use to build and deliver software—is central for its ability to package and deliver best practices. In this realm, we see a focus on customized solutions. Every organization is unique, so there is value in distilling what works well, as discovered in big shops like Google and Microsoft, and capturing it in solutions that work for teams of all sizes and types.
The many CI/CD solutions, build and dependency management tools, and testing frameworks are examples of where process automation tools are zeroing in on developer activities. Version control and related services like GitHub also fall into this category. Process automation is another key area that will play a part in the future of software.
A new kind of developer experience
As depicted in the coalescence diagram at the start of this article, each of these software development trends is a force for change. Together, they point to a compelling, but not yet manifested new kind of developer experience. We can see the forces at play and how they are moving, but the future is not yet clear. It is an exciting time to be a software developer.