BJARNE STROUSTRUP, the designer of C++, the most influential programming language of the last 25 years, has said that “our technological civilization depends on software.” True, but most software isn’t much good. Too many programs are ugly: inelegant, unreliable and not very useful. Software that satisfies and delights is as rare as a phoenix.

All this does more than frustrate computer users. Bad software is terrible for business and the economy. Software failures cost $59.5 billion a year, the National Institute of Standards and Technology concluded in a 2002 study, and fully 25 percent of commercial software projects are abandoned before completion. Of projects that are finished, 75 percent ship late or over budget.

The reasons aren’t hard to divine. Programmers don’t know what a computer user wants because they spend their days interacting with machines. They hunch over keyboards, pecking out individual lines of code in esoteric programming languages, like medieval monks laboring over illustrated manuscripts.

Worse, programs today contain millions of lines of code, and programmers are fallible like all other humans: there are, on average, 100 to 150 bugs per 1,000 lines of code, according to a 1994 study by the Software Engineering Institute at Carnegie Mellon University. No wonder so much software is so bad: programmers are drowning in ignorance, complexity and error.