These days, every business is a software business. As companies try to keep up with the rush to create new software, push updates, and test code along the way, many are realizing that they don’t have the manpower to keep pace, and that new developers can be hard to find. But, many don’t realize that it’s possible to do more with the staff they have, making use of new advances in AI and automation. AI can be used to address bugs and help write code, but it’s greatest time saving opportunity may be in unit testing, in which each unit of code it checked — tedious, time-consuming work. Using automation here can free up developers to do other (more profitable) work, but it can also allow companies to test more expansively and thoroughly than they would have before, addressing millions of lines of code — including legacy systems that have been built on — that may have been overlooked.
In software development, speed is king: whoever can roll out bug-free updates the fastest wins the market. While tech companies already know this, the rest of the business community is quickly catching on. Senior leaders at companies are recognizing that their businesses — whether their primary industry is car manufacturing or food service or finance — is also becoming a software business. Software now controls factories, manages inventory, trades stocks and increasingly is the most important interface with customers.
But if software is the key to staying competitive, companies need to maximize the productivity of their expensive and scarce software developers. Automation of time-wasting tasks is the quickest way to do so.
Take a look at the user interface of new car entertainment systems — most look pretty much the same as they did in cars from five years ago. Most drivers prefer Google Maps over their own car map system for its superior user interface and up-to-the-second accuracy. Food service companies continue to waste food because they are unable to predict demand. Such examples are everywhere, but not because better solutions don’t exist. Projects are backlogged and subject to triage as developers work to keep up.
As companies race to catch up, however, they’re also quickly learning a hard second lesson: there are not enough software developers available to write all the necessary code, and demand is only going up. Writing software requires not just many hours of painstaking work handcrafting millions of lines of code, but also time to test that code. Developers surveyed in 2019 said they spend 35% of their time testing software. As more companies move ahead with digital transformations, workloads for developers are rising and qualified staff is harder to find. Because companies can’t simply conjure more developers, they’re left with one choice: find a way to do more with the staff they have.
That may be easier to accomplish than it sounds. Few C-suite executives understand the inefficiencies buried in their software development processes and how addressing those inefficiencies can significantly sharpen their competitive edge. With advances in artificial intelligence and greater automation of the software creation process, it’s increasingly possible to relieve developers of the important but routine and repetitive tasks that currently take up as much as half their time — tasks like writing unit tests, which verify that code behaves as expected.
CEOs and CTOs should ask how often their organization deploys software. If it’s only a few times a year or less, they likely need an automated software pipeline to stay competitive. And competitive businesses understand that parts of that pipeline are ripe for automation every year. Now, the time is ripe to automate testing.
AI can create bottlenecks — but also resolve them.
Not all of the software development workflow can be automated, but gradual improvements in technology have made it possible to automate increasingly significant tasks: Twenty years ago, a developer at SUN Microsystems created an automated system — eventually named Jenkins — that removed many of the bottlenecks in the continuous integration and continuous delivery software pipeline. Three years ago, Facebook rolled out a tool called Getafix, which learns from engineers’ past code repairs to recommend bug fixes. Ultimately these advances — which save developers significant time — will limit failures and downtimes and ensure reliability and resilience, which can directly impact revenue.
But as AI speeds up the creation of software, the amount of code that needs to be tested is piling up faster than developers can effectively maintain. Luckily, automation — and new automated tools — can help with this, too.
Historically, key tasks that require developers to manually write code have been harder to automate. For example, unit testing — in which the smallest discrete pieces of code are checked — has become a cornerstone of enterprise software, and another common bottleneck that until only recently has become possible to address with automation tools. Unit tests are written and run by software developers to ensure that a section of an application behaves as intended. Because unit tests run early and quickly, at the time the code is being written, developers can fix problems as they write code and ship finished software much faster as a result.
But writing unit tests is a tedious, error-prone, and time-consuming exercise that takes away from their more creative work — work that also makes money for the business — as testers comb back over their colleagues’ work. And testing is, in many ways, more labor intensive than software construction. For every unit of software, tests must be written for performance, for functionality, for security, and so on. It’s a $12 billion industry, yet nearly all of that money is spent on manual effort, much of it outsourced.
Here’s where automation comes in. Algorithms — whether developed internally or in readymade tools — can write tests exponentially faster than human developers and automatically maintain the tests as the code evolves. What’s more, the automated tests can be written in a way that humans can easily understand. This represents a remarkable opportunity to save skilled labor when applications these days can involve tens of millions of lines of code.
Adopting this kind of automation offers companies a few significant advantages.
First, it allows for testing that simply wouldn’t have happened before. More than simply replacing labor automation can do necessary work that many companies are currently overlooking because it’s too labor intensive. Many of the services and applications that now power the world are massive in scale. No one person has a complete vision of everything that’s going on. Companies have reams of legacy code that has never been properly unit tested. As the code evolves, quality issues develop, but the companies can’t afford to rewrite or start over. Without good tests that run early, it is very easy to introduce new bugs when iterating and upgrading software, requiring a huge, time-consuming effort to find and fix them later on — which limits how often the code can be released
Consider a case from banking. Hundreds of millions of lines of code, for example, run the biggest banks in the world. For banking applications developed entirely in-house, conflicts can arise as the software evolves, particularly when companies are shipping new versions faster. Consumers have come to expect automatic updates and increasing functionality over time, so many banks are adopting continuous integration and continuous delivery, shrinking the turnaround time for developing a new feature or making a change to the code from months to minutes. To address this, banks such as Goldman Sachs have started using AI to automate the writing of unit tests, and other financial institutions will likely follow.
Second, it allows them to push new software and updates more often. Data collected by the authors of Accelerate, the bible for this model of software development, showed that organizations that push code more often also have a fifth the failure rate and are 170 times faster at recovering from software downtime.
Finally, the time saved by developers can be spent solving more challenging problems and thinking up new ways to make users happier. A less obvious benefit is that it gives developers the breathing space to deal with unplanned work, changes to the plan to meet customer needs, or improvement work. This helps employers retain engineering talent, but also means developers can react more quickly.
The future of software development is automation.
Automation is coming to all parts of the software development process, some sooner than others — as AI systems become increasingly powerful, the options for automation will only grow. OpenAI’s massive language model, GPT-3, can already be used to translate natural human language into web page designs and may eventually be used to automate coding tasks. But eventually, large portions of the software construction, delivery, and maintenance supply chain are going to be handled by machines. AI will, in time, automate the writing of application software altogether.
For now, though, CEOs and CTOs should look to the areas that can currently be automated, such as the writing of unit tests and other low-level but critical tasks. And, they should stay on the lookout for other areas where they can eventually do the same as technology advances. Finally, leaders need to build these expectations into long-term business plans, because companies who don’t are headed for a very tight bottleneck.