Monday, October 2, 2017

The coming software apocalypse

I have railed on occasion in this blog about crappy software. The software I most often use, whether on my phone, my PC, or even in the cloud, is not life critical. The sometimes buggy, sometimes horribly designed, apps may frustrate me -- but they don't endanger me.

Down the rabbit hole
But what if mission- and life-critical apps are as buggy and as poorly designed as the stuff we use every day? The truth of the matter is: most apps are. We're talking about apps with millions of lines of code, too complex for any individual to fully understand. Apps that now (or soon) drive cars. Control power plants. Diagnose cancers. Fly planes. (What? You think that even today pilots fly planes? Often not. Pilots interact with computerized controls to specify intentions. Networked computers do the actual flying.)

Leading me to an excellent and thought-provoking -- and, be forewarned, lengthy -- recent essay in The Atlantic: "The Coming Software Apocalypse: A small group of programmers wants to change how we code -- before catastrophe strikes."

(Before offering a select few observations from this article, allow me to reminisce that I didn't always write SF for a living. I spent 30 years in information technology, at such marquee companies as Bell Labs, Honeywell, Hughes Aircraft, and Northrop Grumman. I designed and built software [and also sometimes hardware], led projects, and managed development teams of up to 300 engineers and scientists. Many of the systems I worked on were mission-critical. Most had to operate in real time, be fault-tolerant, accommodate many concurrent users, withstand hacking, or be widely distributed geographically -- or even do all those things at once. In short: I like to believe I know something about development of complex software. And yes -- the conventional practice of software development needs improvement.)

Now on to a few choice quotes from the essay:

The software did exactly what it was told to do. The reason it failed is that it was told to do the wrong thing.

Software engineers don’t understand the problem they’re trying to solve, and don’t care to.

Talk about your accident(s) waiting to happen ...
Computers had doubled in power every 18 months for the last 40 years. Why hadn’t programming changed?

... the idea that people were trying to understand cancer by staring at a text editor was appalling.

We already know how to make complex software reliable, but in so many places, we’re choosing not to.

In the world of the self-driving car, software can’t be an afterthought.

For a thoughtful analysis of the epic problem(s) -- and, possibly, a solution, read the whole article.


AReichl said...

We should write programs in ADA ( i myself are a C++ guy ).

AReichl said...

We should write programs in ADA ( i myself are a C++ guy, so i know what i am talking about ).

Edward M. Lerner said...

Ah, Ada. I studied it once or twice, but never used it. But ask me about Fortran IV ;-)

As in the article, I think some form of proved correctness is becoming essential for many apps. And for any complex app, that will be HARD.