Today every business is a software business. As companies try to rush to build new software, push updates, and test code along the way, many find 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, using new advances in AI and automation. AI can be used to fix bugs and help write code, but unit testing may be where every unit of code is checked, which is tedious and time-consuming work. Using automation here can free up developers for other (more profitable) tasks, but it can also allow companies to test more extensively and thoroughly than they previously would have done, by processing millions of lines of code – including the legacy systems they were built on – that may have been overlooked.
Speed is king in software development – whoever can deploy updates bug-free the fastest wins the deal. While tech companies already know it, the rest of the business community quickly picks up on it. Senior business executives recognize that their business, whether their primary industry is automotive manufacturing, catering, or finance, is also becoming a software business. The software now controls factories, manages inventory, negotiates inventory and is increasingly 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. Automating time-consuming tasks is the fastest way to do it.
Take a look at the user interface of newer car entertainment systems – most look pretty much like they were in cars five years ago. Most drivers prefer Google Maps to their own car mapping system for its superior user interface and second-to-second accuracy. Catering companies continue to waste food because they are unable to forecast demand. Examples like this are everywhere, but not because there are no better solutions. Projects are on hold and subject to triage as developers struggle to keep pace.
However, as businesses rush to catch up, they also quickly learn a difficult second lesson: there aren’t enough software developers available to write all the code needed, and demand is only increasing. Writing software not only takes many hours of painstaking work to handcraft millions of lines of code, but also time to test that code. Developers surveyed in 2019 said they spent 35% of their time testing software. As more companies move through digital transformations, developer workloads increase and qualified staff are harder to find. Because companies can’t just talk about more developers, they have only one choice: find a way to do more with the staff they have.
Perhaps this is easier to achieve than it looks. Few of the C suite executives understand the inefficiencies buried in their software development processes and how addressing these inefficiencies can dramatically enhance their competitive advantage. With advances in artificial intelligence and greater automation of the software creation process, it is increasingly possible to relieve developers of important but routine and repetitive tasks that currently take up to half of their time – tasks like writing unit tests, which verify that the code behaves as expected.
CEOs and CTOs should ask how often their organization deploys software. If it’s just a few times a year or less, they probably need an automated software pipeline to stay competitive. And competitive companies understand that parts of this pipeline are ripe for automation every year. Now is the time to automate testing.
AI can create bottlenecks, but it can also solve them.
Not all software development workflow can be automated, but incremental improvements in technology have made it possible to automate increasingly important tasks: Twenty years ago, a developer at SUN Microsystems created an automated system. – eventually named Jenkins – who removed many bottlenecks. in the continuous integration and continuous delivery software pipeline. Three years ago, Facebook rolled out a tool called Getafix, which learns from code repairs done by engineers to recommend bug fixes. Ultimately, these advancements, which save developers significant time, will limit outages and downtime, and ensure reliability and resiliency, which can have a direct impact on revenue.
But as AI speeds up software creation, the amount of code to test builds up faster than developers can handle effectively. Fortunately, automation – and new automated tools – can help, too.
Historically, the key tasks that require developers to manually write code have been more difficult to automate. For example, unit testing – in which the smallest discrete pieces of code are checked – have become the cornerstone of enterprise software, and another common bottleneck that until recently had become possible to solve. with automation tools. Unit tests are written and executed by software developers to ensure that a section of an application behaves as expected. Because unit tests run early and quickly, at the time of writing the code, developers can troubleshoot issues as they write the code and thus ship the finished software much faster.
But writing unit tests is a tedious, error-prone, time-consuming exercise that robs them of their more creative work – work that also makes money for the company – as testers comb through the process. work of their colleagues. And testing is, in many ways, more laborious than building software. For each unit of software, tests should be written for performance, functionality, security, etc. It’s a $ 12 billion industry, but almost all of that money is spent on manual efforts, much of it outsourced.
This is where automation comes in. Algorithms, whether developed in-house or in out-of-the-box tools, can write tests exponentially faster than human developers and automatically maintain tests as code evolves. Additionally, automated tests can be written in a way that humans can easily understand. This represents a remarkable opportunity to save skilled labor when applications today can involve tens of millions of lines of code.
Adopting this type of automation offers companies some important advantages.
First, it allows for testing that simply wouldn’t have happened before. Much more than just replacing job automation, job automation can accomplish necessary work that many companies are currently neglecting because it is too labor-intensive. Many of the services and applications that are now powering the world are massive. No one has a complete picture of everything that is going on. Businesses have tons of legacy code that has never been properly unit tested. As code evolves, quality issues develop, but companies can’t afford to rewrite or start over. Without good tests that run early on, it’s very easy to introduce new bugs while iterating and upgrading the software, which requires a considerable and time-consuming effort to find and fix them later. which limits how often the code can be published.
Take a banking case. Hundreds of millions of lines of code, for example, run the world’s largest banks. For banking applications that are fully developed in-house, conflicts can arise as the software evolves, especially as companies ship new versions faster. Consumers now expect automatic updates and increasing functionality over time, so many banks are embracing continuous integration and continuous delivery, thereby reducing the time it takes to develop a new functionality or of code modification from a few months to a few minutes. To address this issue, banks like Goldman Sachs have started using AI to automate unit test writing, and other financial institutions are likely to follow suit.
Second, it allows them to push new software and updates more often. The data collected by the authors of Accelerate, the bible of this model of software development, showed that organizations that push code more often also have a fifth of the failure rate and are 170 times faster to recover from software downtime.
Finally, the time saved by developers can be spent solving more complex problems and finding new ways to make users happier. A less obvious benefit is that it gives developers the space to deal with unscheduled work, plan changes to meet customer needs, or improvement work. This helps employers retain engineering talent, but also means developers can respond faster.
The future of software development is automation.
Automation is happening to all parts of the software development process, some sooner than others – as AI systems become more powerful, the options for automation will only increase. OpenAI’s massive language model, GPT-3, can already be used to translate natural human language into web page designs and can eventually be used to automate coding tasks. But eventually, large parts of the software construction, delivery and maintenance supply chain will be run by machines. Eventually, AI will completely automate writing application software.
For now, however, CEOs and CTOs should look to areas that can currently be automated, such as writing unit tests and other low-level but critical tasks. And, they need to stay on the lookout for other areas where they can possibly do the same as technology advances. Finally, leaders need to incorporate these expectations into long-term business plans, as companies that fail to do so are heading into a very tight bottleneck.