At Microsoft, a Sad Software Lesson

By Scott Rosenberg, a co-founder of and the author of “Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software” (THE WASHINGTON POST, 30/01/07):

Today, Microsoft finally offers consumers Windows Vista, the version of its operating system that’s been gestating for five years. When Microsoft’s engineers started this project, U.S. troops hadn’t yet invaded Iraq, Google was still a relatively small private company, and my now-7-year-old twins were just learning to talk in sentences.

Why did it take the world’s biggest and most successful software company so long to revamp its flagship product — the program that controls the basic operations of roughly 90 percent of the country’s personal computers? And what do Microsoft’s delays tell us about our growing dependence on balky software products?

The troubled saga of Vista’s development is a matter of public record. Microsoft began work on Vista (then called Longhorn) in 2002 and trumpeted ambitious goals in 2003, including a plan to revamp the file system — the innards of computers’ information storage — so we could actually find things.

A year later, the company announced it was scaling Vista back, dropping the file-system upgrade and delaying the release. At that point, we now know, Microsoft essentially pressed “reset”: It threw out most of its work on the operating system and started over.

“In my view, we lost our way,” Vista’s manager, Jim Allchin, wrote in an e-mail (later posted online) to Microsoft founder Bill Gates and chief executive Steve Ballmer. “I would buy a Mac today if I was not working at Microsoft.”

Ballmer swears that there will never again be a five-year gap between versions of Windows. Perhaps, as some observers predict, Vista will turn out to be the last ever big release of Windows as we know it, and Microsoft will embrace the software industry’s new orthodoxy of small upgrades delivered via the Web.

But Vista’s tale is not just a headache for Microsoft’s managers or a source of delight for the company’s legions of critics; it’s a portent for all of us who rely on software to manage our financial dealings, our public business, even some aspects of our private lives. The sad truth is that Microsoft’s woes aren’t unusual in this industry. Large-scale software projects are perennially beset by dashed hopes and bedeviling delays. They are as much a tar pit today as they were 30 years ago, when a former IBM program manager named Frederick P. Brooks Jr. applied that image to them in his classic diagnosis of the programming field’s troubles, “The Mythical Man-Month.”

The tar pit has regularly engulfed large corporate efforts to introduce comprehensive software “solutions.” Private firms aren’t the only ones getting trapped. Both the IRS and the FBI, for instance, have failed in multiple attempts to modernize the software they depend on, at a cost to taxpayers of hundreds of millions of dollars.

The software business remains full of optimists who, bless them, think they know how to fix their field’s problems and overcome this dismal record. Their confidence springs from the computer industry’s experience of the exponential growth in the capacity of its semiconductor-based hardware. Computer chips have reliably doubled in capacity every year or two for the past few decades, and that has made the increased power (and decreasing cost) of personal computers feel like magic.

But unlike computer hardware — the microchips and storage devices that run programs — software isn’t rooted in the physical world. It’s still written, painstakingly, line by line and character by character; essentially, it’s all made up. Software straddles the wide-open realm of the imagination, where it’s created, and the fixities of everyday reality, where we expect it to work. And so far, it has proved uniquely resistant to engineering discipline.

Without that discipline, too often, software teams get lost in what are known in the field as “boil-the-ocean” projects — vast schemes to improve everything at once. That can be inspiring, but in the end we might prefer that they hunker down and make incremental improvements to rescue us from bugs and viruses and make our computers easier to use. Idealistic software developers love to dream about world-changing innovations; meanwhile, we wait and wait for all the potholes to be fixed.