In what ways should software be like a house? In a recent issue of STQE magazine, Technical Editor Brian Marick's musings about the concept of "tinkerable software" generated some interesting discussion about the very nature of software design. This week's column runs a portion of that piece so that our Sticky-minded readers can sink their thoughts into the concept.
Last night, I dreamed I'd just bought my ideal house-enough bedrooms, a nice lawn, fully furnished, the works.
The first thing I noticed was that some electrical outlets were out of place. Not being handy with electrical work, I found an electrician in the phone book and called him in. A few minutes after he set to work, he came to me with a puzzled look. The walls…well, what looked like ordinary drywall was, in fact, painted steel plate. Thick painted steel plate. He didn't have the tools to work with that, and he didn't know any electrician who would. I might try contacting the builder.
I realized another problem. The living room was the only room with a cable jack, but I didn't want to watch television in there. I'd wanted to put the TV in the spare room, but how would I run cable up there? Was I only allowed to watch TV in the living room?
While I was mulling that over, my wife came down from upstairs. Did I know that the picture frames were welded to the walls? It looked as if we could replace the pictures, but we couldn't move them. And any new pictures would have to be the same size as the old ones.
In my dream, I had a long and surprising day. (Who would have thought that it would be impossible to dig out part of the lawn and put in a garden?) Wearily, I decided to call it quits. I pulled my car into the garage…or tried to. The garage was incompatible-irreparably incompatible-with Fords.
I woke up screaming. After I realized it was all a dream, I showered, had breakfast, sent the kids off to school, and went to work on my computer. Within minutes, I was screaming again. But this time I was awake.
Software should not be different from houses
A situation like that of my dream would be intolerable in houses. We expect houses to be "tinkerable": ordinary people, not the original builders, can modify them in both small and large ways. Even those who don't want to tinker expect some degree of tinkerability from physical products. If our lawn mower breaks, we expect it can probably be fixed by the handy guy down the street, or by a small engine repair shop listed in the phone book.