May 22, 2006
"Collapse" Idea #3: Software Quality as EnvironmentalismA final quote from Collapse by Jared Diamond, from page 503-504, discussing the dismissive quote 'The environment has to be balanced against the economy':
This quote portrays environmental concerns as a luxury, views measures to solve environmental problems as incurring a net cost, and considers leaving environmental problems unsolved to be a money-saving device. This one-liner puts the truth exactly backwards. Environmental messes cost us huge sums of money both in the short run and in the long run; cleaning up or preventing those messes saves us huge sums of money in the long run, and often in the short run as well. In caring for the health of our surroundings, just as of our bodies, it is cheaper and preferable to avoid getting sick than to try to cure illnesses after they have developed.
Now think about Steve McConnell's General Rule of Software Quality, from chapter 20 of Code Complete: "Improving quality reduces development costs." Do you see? He's saying exactly the same thing that Diamond is saying about the environment. It's NOT a tradeoff; where spending more time/money on the environment (or software quality) is a luxury that increases costs in favor of some nebulous "moral good"; it's a straight up wise business decision.
Diamond gives numerous examples of environmental disasters that cost hundreds of millions or billions of dollars to clean up, when mere hundreds of thousands or millions of dollars would have prevented them. But Microsoft has had its Bhopals, its Chernobyls, its Exxon Valdezes: they are Code Red, Slammer and Nimda, and they also caused hundreds of millions or billions of dollars of damage to the "environment" of the Internet. Diamond points out that in our connected world, there is no longer any us vs. them; environmental problems around the world affect us in the United States. Software quality problems exhibit this effect even more directly.
He also has a great map on page 497, showing how political trouble and environmental trouble are linked in various countries. The same is true of software development: groups with management issues are the ones with software quality issues, because they are the ones that try to test in quality rather than bake it in, the ones that don't schedule time to do proper design, the ones that view "code complete" happening the instant the developer checks in the code, the ones that think that programmers working 80-hour weeks produce code as good as those working 40-hour weeks.
The good news is that Microsoft really is serious about software quality. That's why there is an Engineering Excellence group, and that's why I work in it. No, we're not perfect, but we are trying hard. Still there is much that remains to be done.
So next time you think about software quality, don't think about it as an abstract concept. Think about it as a preventable environmental disaster. Think of birds with oil on their feathers, and clearcut forests, and silted up rivers, and damaged coral reefs. Now think of what we can do to prevent it. What will be our equivalent of Silent Spring? What will be our equivalent of Greenpeace? What will be our equivalent of "Reduce, Reuse, Recycle"? How will we grow a software quality movement the way the world grew an environmental movement? That's what we need to think about.
Posted by AdamBa at May 22, 2006 10:56 PM
TrackBack URL for this entry:
"Reduce, Reuse, Recycle"
Hey, this does sound like Free-Open Source. Some of the biggest and popular project are actually recycled one : Mozilla, OpenOffice, Blender.
Posted by: Ivan at May 23, 2006 01:30 AM
It's true that these do have some resonance for software. Reduce could mean don't make bloated software, reuse means don't rewrite everything yourself, recycle means pick up the useful pieces of failed projects. I'm not sure that's quite the right slogan/focus however.
Posted by: Adam Barr at May 23, 2006 09:06 AM