Software, as Marc Andreessen says, is eating the world. Everything we do is mediated through someone's code -- running on a smart thermostat, a smartphone, the old familiar PC, or as a microservice in an ever-expanding cloud.
We're finally delivering on the decades-old promise of a ubiquitous computing world. But more than that, from the developer's standpoint, the tools available to us are better and more sophisticated than ever. We're also seeing monolithic applications break apart into services and platforms, ready to become part of your applications.
At the heart of the current wave of change are new design patterns suited to a highly distributed, asynchronous computing world. Yes, we're still building n-tier MVC and MVVM apps -- and we'll carry on building them for a long time to come. But new microservice-focused design patterns give us a new set of tools to help us build highly scalable, concurrent applications that can handle the eventual consistency that comes from working with asynchronous services.
Languages like Erlang embody many of these principles, as do PaaS tools such asAWS's Lambda or Microsoft Azure's Service Fabric. You can also roll your own actor-based microservices using the open source MQTT messaging framework and the Seneca microservice toolkit for Node.js. Microservices are ideal for implementing actors, as they are at heart switching engines that take in inputs, process them appropriately, then send the results on to other services.
Node.js is only one example. The darling of disruptive technologies, Docker, was developed using Google's Go, a modern systems language from some of the same developers who originally created C. Like many new languages, Go has features that are designed to help manage concurrency and to support parallel computation, helping developers take advantage of current processor architectures as well as distributed computing models.
Let's not forget the cross-platform tools and frameworks that make it easy to build apps that run on, well, nearly anything. Some, like Apache's Cordova, are hybrid HTML environments that use a runtime to deliver near-native performance. Others, like Xamarin, provide tooling that compiles familiar code into native applications on multiple OSes, while others like the iOS and Java tooling built into Microsoft's Visual Studio make it easier to manage your code in a single environment and a single project.
Sign up for CIO Asia eNewsletters.