Software is automatic.
By its very nature, software is an automated and autonomous entity that we establish, develop, build, create and instantiate in order to execute a series of pre-defined instructions so that we can derive a function from it.
When the run, compile, execute command goes down, we (as humans) don’t have to be around for the most part (okay, there’s cloud monitoring and application performance management, but that’s another story) because software has entered its state of automatic operations.
But that’s not how we use the term automation these days.
We have extended our notion of what the word itself is supposed to mean in software application development circles to encompass the last quarter century’s advances in software automation… at the software level and at the human user workflow level.
So let’s take each, in turn, to examine what we mean.
Software automation, for software
When we think about software automation, for software itself, we are talking about everything from reference architectures to code snippets on Stack Overflow. We are also of course talking about the new breed of Low-Code (LC) software accelerators and their No-Code (NC) second cousins twice-removed, all of which serve to complement the coding process with automation advantage.
Software automation works at a specific functional level on individual applications and services, but it also works at a more system-wide level, looking for wider network operational anomalies and outliers that could point us towards areas where misconfiguration exists.
In a world of Infrastructure-as-Code in a cloud-native universe and in a software-defined galaxy orbiting around an abstracted solar system where every constellation is fundamentally virtualised, system misconfigurations are among our most pressing concerns i.e. these are the aspects of architecture that can break our code and lead to us running out of air.
Automation graduates to autonomous
Where automation can look and help mitigate the risk of misconfiguration is where automation graduates to wider autonomous self-healing controls.
Rather like your own pancreas and the autonomic system in the human body, many ailments are rectified by the intelligence of the system itself i.e. you. When problems get beyond our natural control we call in the systems engineer and ask for help i.e. that’s the doctor.
Analogies notwithstanding, automation’s big brother/sister is sometimes thought of as autonomous control in this sense, which obviously leads us into the allied world of Robotic Process Automation (RPA) and all the things that software robots (bots) can do for us when we’re not around.
If a third-cousin were attached to the LC/NC world of software automation then we might also point to the so-called ‘industry accelerators’ offered by major enterprise software vendors.
These often industry-specific chunks of intelligence are designed to deliver a payload of ready-composed and pre-populated application structures that have been built in an almost generic style for a particular given definable and repeatable use case i.e. for want of a random example, let’s suggest a retail Point of Sale (PoS) system application with Spanish translation and integrated with smartphone digital wallet payments.
Software automation for humans
We have already touched on software automation for humans because we’ve mentioned RPA. Where we use RPA bots and all the allied efficiencies that come from technologies like Optical Character Recognition (OCR) that feed into document management and document capture, we can then step into process intelligence, process mining and process management.
Once we accelerate our applications with automation focused on process management, we can then translate that insight (and dovetail it with business logic) to identify and streamline manually-intensive processes in order to optimise workflows, reduce inefficiencies and cut costs.
Let’s also include the practical application of newer technologies such as ChatGPT i.e. we can envisage scenarios where software application development projects make use of Application Programming Interfaces (APIs) to call a technology such as ChatGPT in order to automate helpdesk responses to streamline customer support. This zone of automation (arguably) touches all sides of our story here and impacts the developers who implement it, the company stakeholders who depend upon the technology and the end users who interface with it.
The end result of all this automated is faster software, faster and more efficient work and faster systems performance overall – well, if the bots behave themselves and we don’t need to step in with some of the (somewhat fruitily named) human hand-off functions needed to take automation back into our own hands.
Whether users have been subject to a human hand-off process or been able to enjoy the benefits of software automation at any of the above levels, we have probably all understood automatic code in a new way at this point.
A CWDN series
The Computer Weekly Developer Network team now embarks upon a guest writer series where we call upon software engineers, evangelists and advocates to tell us about how automation is acceleration and what the future holds for a more autonomously engineered stack.
We welcome your views, but as abstracted as this all is, let’s keep it real please.