The computer revolution has been in full swing for at least 20 years now (maybe 50 years, depending on when you want to start counting). In some ways, the advances have been incredible, and in some ways they've been incredibly disappointing. But all things, good or bad, must come to an end.
During the revolution, the software industry has been allowed to ignore some basic rules of how business is done. One of the most fundamental of these rules is this: It has to work.
Consumers expect everything from automobiles to consumer electronics, to medicine, to plumbing to follow this rule, but they don't expect it from software. This will change.
Many people in our field laugh at this idea. Few companies even try to write bug-free code anymore, and for good reason. For decades, the buying public has allowed the software industry to ignore this rule. Time to market is everything. No one will wait for a working product if it's possible to get a feature-rich (if buggy) product today. We currently have the software we deserve. This will change.
Many programmers argue that software, by its very nature, is simply too complex to work. They argue that because there are no real-world limitations on component interactions, software is free to transcend these limitations and create ever more flexible systems. With this flexibility, they argue, comes complexity. The programmers are partially correct: Software is too complex. This will change.
This will change because the revolution will end. Software will stop being an art and will join other technologies as a manufactured product. The software manufacturing industry will be expected to obey the same rule that every other manufacturing industry follows: It has to work.