Managing software complexity through intent-based programming

Software is losing its magic. We simply demand too much from the current approaches. As a result, software developers are losing the battle with complexity, often without realizing it. More often than not, little failures pile on top of other little failures, and life for the consumer, as well as the business, becomes more frustrating rather than easier.

For example, Apple’s products have become buggy, travel is still a nightmare and call center experiences make us doubt both artificial and human intelligence.

To bring the magic back into software, developers will need to stop walking systems through each step to ensure the desired outcomes. Instead, as systems grow more voluminous and complex by the minute, developers will need to make software itself more autonomous through the use of layers, intent-oriented algorithms and artificial intelligence (AI).

If we take a step back, it’s not a huge surprise some of the magic has been lost. We’ve greatly raised our expectations of software, while simultaneously broadening our expectation of who should be able to command it. More and more is expected to “just work” automatically, and more of us expect to be able to control the automation of our digital life and work.

It’s hard enough to meet these expectations when the problems the software is addressing are static. But this automation is also expected to address real-time needs — ones in which the parameters change rapidly, even while the automation is executing.

Car navigation from point A to point B is hard enough in the face of traffic, weather and construction. But what about optimizing for passengers’ phone meetings during the commute, or for physical and digital commerce along the way? How about doing that for millions of cars simultaneously sharing the same roads? How about doing that for trips that combine cars, trains, planes, hotels, restaurants and more.

These factors are starting to mandate a different programming model: a declarative one. In this alternative model, we declare an intent — a desired goal or end state — and the software systems autonomously figure out how to simply “make it so.” Humans set the boundaries and constraints, but it’s too much to expect humans to always figure out the solution to get there. So, computers step in and do it themselves.

The new programming model will leverage computers to solve their own issues of complexity.

An illustrative analogy is well understood in the corporate world: management by objectives (MBO). A strong MBO approach has employees being told which objectives they’ll be measured by versus how precisely to achieve them. The objectives might be centered around sales results, customer engagements or product adoption. It’s then up to the employees to figure out the path to get there. It’ll often require adapting, as conditions change unexpectedly, and learning in the process so it gets easier over time. So, in a sense, this alternative programming model is one that manages software by objectives: MBO for machines.

Examples of this need are everywhere. One of the hottest areas right now is bots, or interfaces that accept voice or text commands. While today’s bots are often command-oriented (e.g. find Jane Doe on LinkedIn), they will need to become intent-oriented (e.g. find me a great job candidate).


Related posts

Leave a Comment