Industry News Details

How Agile Tames Tough Software Problems Posted on : Jul 20 - 2020

Software at its best is magical but when it goes wrong the problems that it causes can be horrible. The Economist in its Schumpeter column this week writes about “the recalcitrant problems of software” and cites some well-known examples of software problems such as VW’s new electric car—the ID.3, British banks, and Boeing’s 737 MAX aircraft.

The article goes on to suggest that more such major breakdowns are inevitable. Even “shiny new IT systems” will “rapidly devolve into rickety, half-understood contraptions held together with gaffer tape and a prayer.” Startups like Tesla with “no legacy systems to maintain, and fewer old bugs to root out” have an initial advantage. They “can spend more time on features that customers want.” But, according to Schumpeter, the advantage is at best temporary. “Bugs will creep in. Bodge jobs will go unfixed. Developers will leave, taking knowledge with them. Today’s feisty usurpers will become tomorrow’s clumsy incumbents, held back by their antiquated, unreliable IT—and ripe for disruption in turn.”

A worrying picture. But is it so?

Modern Software Is Different

The scene that Schumpeter depicts reflects the way that software used to be designed, built, and managed in the 20th century. And it’s the way firms still practicing 20th century management do software even today.

But it’s an anachronistic picture of modern software practices. Today, firms like Amazon, Netflix, and Microsoft, design, build, and manage software in a radically different fashion, precisely to avoid the problems described by Schumpeter.

Truly modern software is dynamic and constantly upgraded on a weekly, daily or even hourly fashion. Such software is often self-healing and designed to reconfigure itself if there are unexpected loads or events. Firms like Netflix make systematic efforts to try to cause the system to fail so that they can make it ever more robust.

Such software is not built, as The Economist article depicts, by lonely individuals, who make mistake after mistake in their coding and then spend vast amounts of time trying to correct their errors. Instead, modern software is built by Agile teams who test the software as it is being written, both in terms of its immediate function and in terms of how it will interact with the rest of the system. As a result, at the end of each short cycle, Agile teams are able to produce robust bug-free software that is ready to be deployed, even in very complex systems. View More