Software might be eating the world, but most businesses are sitting out the feeding frenzy because they can’t release software fast enough to meet changing customer needs.
No matter what kind of business you’re in — technology, consumer goods, manufacturing — companies are driving engagement with consumers through applications across web, mobile, point-of-sale and more. The faster an organization can improve its software, the more it can drive loyalty for itself and build switching costs for the competition. According to one study, high-performing IT units with faster software releases are twice as likely to achieve their goals in customer satisfaction, profitability, market share and productivity.
Acknowledgement of this has fueled a headlong rush toward what software developers call “continuous delivery.” Whereas in the past organizations would spend months or even years perfecting a release full of new features, continuous delivery allows teams to make incremental changes to software and send them live as each improvement is made.
It’s a process most technology departments aspire to but only a fraction have achieved. According to a recent survey by Evans Data, 65 percent of organizations are using continuous delivery on at least some projects, but only 28 percent are using it for all their software. Among non-SaaS companies, that proportion is just 18 percent.
These leading organizations recognized years ago that they needed to speed up the development process and made organizational changes accordingly. Now they’re eating the competition’s lunch while everyone else is catching up.
The small percentage of organizations that are continuously delivering software lean heavily on automation to speed development and simplify handoffs between developers, QA testers, operations staff and so on. But continuous delivery isn’t an end-state — it’s a process of constant improvement, meaning even the highest performing teams can’t rest on their laurels.
So what comes next?
The future of application development depends on using artificial intelligence (AI) within the continuous delivery model. As a data scientist, I see automation and AI as being on the same spectrum, with automation referring to simpler, rule-based solutions and AI being more complex. A basic automated system might observe something relatively static that a human does over and over, record that action and then repeat it automatically. An AI engine, on the other hand, can generalize a range of actions, learn and anticipate necessary behavior to improve a system.
For example, current automation technology can make it easier to deploy and automatically choose from a set of website modifications for A/B testing. AI could not only do that faster, but also use semantic understanding of page structure to suggest its own novel changes that make the most sense for the user.
We’re at the precipice of a new world of AI-aided development that will kick software deployment speeds — and therefore a company’s ability to compete — into high gear.
“AI can improve the way we build current software,” writes Diego Lo Giudice of Forrester Research in a recent report. “It will change the way we think about applications — not programming step by step, but letting the system learn to do what it needs to do — a new paradigm shift.”
The possibilities are limited only by our creativity and the investment organizations are willing to make. As Lo Giudice notes, using AI within the development tool chain is largely “still science fiction.” But progress is afoot.
At my company, our goal is to help developers test their code more swiftly. We do that by crowdsourcing QA testers, and we use AI both to manage those workers and to rank their reputation, so we can prioritize work for clients based on those findings. Other examples are cropping up every day. Take the progress we’ve seen in AI-powered project management assistants, which prod developer teams to make better decisions based on current activities and deliverables.
The industry should expect more of this process-oriented AI with the recent release by Amazon Web Services of Lex, the natural language processing framework that powers Amazon Alexa. Lex enables developers to build conversational interfaces for their applications. It’s not a stretch to think that creative teams could use Lex within the internal tools developers use to make those applications.
But that’s just the tip of the iceberg. AI could play a bigger role in test automation, for example. And for security stress testing, Netflix made a huge contribution by releasing to open source an automated engine called Chaos Monkey, which it uses to randomly close down application environments to see how well its systems failover and keep things running. What if something similar were powered by an AI engine that explored stress tests more systematically? AI could also be used to configure servers, making small changes that optimize performance based on the applications and workload.
AI could also play a huge role in software documentation. The more incremental an organization gets about improving features and components, the harder it is to keep track of those changes and how they’re made. The same kind of natural language processing used by Google to automate news writing could be used to document feature change lists, API technical details and processes used by DevOps teams.
As with automation, AI won’t put developers out of a job, but it will force them to evolve their skillsets to make better use of machine learning in the development process. To achieve get closer to that future, businesses need to invest in the data science brain trust required to support it. And they need to start collecting the data necessary for training effective AI systems.
There’s a long road to achieving these efficiencies, but smart businesses are moving now to incorporate AI in their software development. The pace of technology continues to accelerate, and consumers have come to expect the best and latest experiences a business can provide. If software is eating the world, automation and AI will be the stakes for a seat at the table.