After weathering a pandemic that fundamentally altered the shape of global society, we find ourselves in the middle of 2022. One of the most notable changes of the past two years has been our reliance on digital infrastructure, driven by the necessity. The system held up admirably, even as those who maintained it struggled to invent new ways of working.
We’ve learned that the web can provide everything from PPE to virtual weddings. While nothing else was comforting, many of us retreated deeper and deeper into our digital cocoons. As web usage skyrocketed, we discovered new fault lines and areas for improvement. Today, a new wave of technologies is emerging to upgrade and expand the online experience. Let’s take a look at the trends at play in current efforts to rebuild the Internet as we know it.
Code for fun and profit
You can ask almost any software developer if the program they just developed is good enough, and they’ll tell you it could be better. It’s similar to how a musician will eventually release an album, even though they don’t consider it finished. Or, as John Lennon once said of the timeless Beatles, “there’s not one I wouldn’t love to re-record.”
From this, we can understand one of the main motivators of continuous improvement: software engineers are driven by something akin to artistic spirit, an irrepressible urge to build something great. . This is called the state of the art, after all. We often say that it’s all about code readability and maintainability. In truth, many of us are also driven by an innate desire to create something of inherent value.
Of course, excellence is not the only motivation. Profit is another factor. Despite the fierce odds against innovators, when lightning strikes, the financial rewards can be astounding. Although the coder mindset is notoriously difficult to associate with business acumen, bringing the two together can potentially capture that lightning bolt in a bottle.
Software Development Trends Merge
As these powerful driving forces take effect in the crucible of the industry, we get a rapidly changing development landscape. Let’s take a look at some of the most influential trends in software development and how they currently come together.
Cloud adoption and next-level infrastructure
There’s no denying that cloud-related spending continues to rise. In fact, cloud spending recently exceeded half of all IT spending. The reason is simple: virtualized infrastructure and tools provide a more agile solution to many needs. What is fascinating is the evolution of cloud usage.
The idea of dynamic virtual machines hosted in the cloud (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 next logical steps. We are also witnessing a diversification and specialization of solutions, an evolution that is both vertical and horizontal.
Virtualized infrastructure enables innovators to develop higher-order solutions. The players in this field fall into two main camps: API hosts and API providers.
Serverless deployments and API providers
Services like Vercel and Netlify are two good examples of state-of-the-art API hosts. They represent a kind of serverless infrastructure that sits on top of the IaaS and PaaS layers. Moreover, they represent a specialization of this infrastructure, targeted at a certain universe of use cases.
Anyone who has sat down in front of the Vercel dashboard and deployed a complex front-end application with the click of a button knows what I mean: Vercel is no more server. That is to say, it is a serverless server that has been refined and exploited to meet a specific need.
In the meantime, a good example of a modern API provider is MongoDB Atlas. This is an API that primarily provides 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 little work – harnessed for a specific set of needs. They are built on top of the modern virtual layer. Deploying datastores in virtual infrastructure is the traditional model, only moved to the cloud. Using something like MongoDB Atlas is more like having a specialized data store partner dedicated to making it easy 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, support for in-code integration, and a management console based on the website.
What about API builders?
So, we can see that the era of cloud platforms has paved the way for something new, but it’s hard to predict precisely what. It is about discovering where the needs of users, often unknown to themselves, meet in new ways the capacities implicit in these new tools.
Interestingly, the world of API building remains relatively unchanged. There have been incremental improvements, but nothing like the disruptions we have seen in hosting and provisioning. A movement that unites API building activity with the achievements of hosts and providers will represent a disruption full of opportunities.
Next, let’s take a look at some of the areas where software building is actively evolving.
Front-end tools and frameworks
Much of the work in the cloud involves integrating existing tools and uniting APIs, which will always involve humans doing some amount of custom work at the middleware level. Indeed, the ultimate goal of all automation is to meet the changing needs of humans.
Server-side languages like Rust and frameworks like JHipster are interesting developments, but overall the field is changing. Like the front part, the rear part awaits further development.
Existing solutions such as Java, Node.js, and Python (and their associated frameworks) are all well-suited to the environment and are constantly evolving in response to real-world demands. I believe they will remain a critical area 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 prove to be merely additional tools in the developer’s toolbox. Builder is a great example of innovative low-code thinking. To see how machine learning can help with coding, we can turn to GitHub Copilot.
Decoupled architectures, aka microservices
Then, the transition to remotely decoupled architectures, also known as microservices, will continue to grow and become better understood. The monolithic architecture paradigm was clearly unable to fully capitalize on the inherent potential of the cloud. The alternative, the microservices architecture, involves taking on a devops burden that is far from trivial. Microservices are both a process scaling enabler and a complexity magnifying glass.
Any innovation that seeks to encompass new technology directions, such as APIs as a service, front-end scaling, and custom middleware, will need to consider the complexity of microservices architecture.
Process automation, that is, the coordination of processes used by teams to build and deliver software, is increasingly critical to its ability to aggregate and deliver best practices. In this area, we see an emphasis on customized solutions. Every organization is unique, so it’s helpful to distill what works well, as discovered in big box stores like Google and Microsoft, and capture it into 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 where process automation tools focus 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 role in the future of software.
A new kind of developer experience
As the coalescence diagram at the beginning of this article shows, each of these software development trends is a force for change. Together, they point to a new kind of developer experience that’s compelling, but not yet manifested. We can see the forces at play and how they are evolving, but the future is not yet clear. It’s an exciting time to be a software developer.