For the tenth year running, Bill Gates gave a keynote address at the Consumer Electronics Show (CES) in Las Vegas. As usual he was bubbling over with demonstrations of how Microsoft-fueled technology is going to make our lives better in a few short years: lay your cell phone down on a special table and have it turn into a tablet PC, take video with you from device to device while you're computing, fancy three-panel wide monitors, biometric security and other gosh-wow gizmos. And naturally there's a neatly-digested sound bite to to along with all of this: "the company is delivering on its vision for a digital lifestyle" where we'll all get "more connected and richly personalized experiences."
Meanwhile, back in the real world....I've just had to repave the Windows XP box that I use for chat because it wouldn't boot any longer. I know three other developers who've gone through the semi-annual machine repave in the past week or so due to "ring around the Windows" syndrome: if you keep installing and using software, after a while Windows just gets slower and slower and does flaky things. Another prominent .NET developer is pulling out his hair in public, having discovered a set of circumstances where Visual Studio 2005 won't give him stack traces to help find bugs in a 100,000-line codebase. I've got one set of older relatives who just replaced a computer because that was easier than figuring out what was wrong with the old one, and some teenaged acquaintances who just had to wipe and reinstall everything after clicking on the wrong link in an instant messenger window and installing some virulent rootkit worm.
Nor is the trouble limited to computers. Digital cameras that no longer take pictures, cell phones that can't remember a number to call, satellite TV receivers that need to be rebooted on a regular basis. Most of us can name multiple examples of cantankerous technology in our lives, and those of our family and friends, almost endlessly. I suspect Bill Gates doesn't see much of this stuff, because he probably has a staff of eager gnomes who are well paid to try to keep his toys working smoothly. But when I open the box, I'm more likely to find a 10-page manual poorly translated from some Far Eastern language than an eager gnome with my new product.
See the disconnect? Everything in the future may be shiny and bright and flawlessly integrated, but the stuff on our desktops and in our living rooms today doesn't seem to come from the same universe.
Part of the problem, I think, is that computer programming really does seem like a magical activity much of the time. We sit down at the keyboard and produce value using very little other than the power of pure thought. This seems so wonderful that it's not surprising that we developers fall into a sort of collective hubris, where our pride in our achievements makes us believe we can accomplish anything we put our minds to in no time at all. The reality, of course, is that in most cases our user interface designs could be improved, our software's feature sets are incomplete and confusing, and the implementations are riddled with bugs. But rather than spend time dealing with these issues and polish code, we rush on to the next challenge. It will, after all, all be better in release 3.0.
Certainly the commercial pressure of events like CES plays a part in this cycle as well. It's not at all clear that a company devoted to releasing polished software on a slower timescale could actually compete in a world where the latest bells and whistles are so forcefully shoved at consumers. To survive as a software company you need to actually ship software, even knowing that it's not perfect.
But that simple fact does not absolve the individual developer of all responsibility. One reason there are so many lousy technology experiences out there is that you and I -- and all our colleagues in this industry -- have done a slipshod job of designing, writing and testing software. There's no reason why that situation has to continue unaltered forever. The evidence is very strong that some developers write better software than others, and that some industries have come up with techniques for shipping high-quality software. If you don't want to be a part of the problem (and I hope you don't!) then it's up to you to improve your own development practices. Maybe, if enough of us do this, that fabled digital lifestyle won't be so bad after all. Otherwise, I fear we're all doomed to a lifestyle of endless reboots.
Mike Gunderloy is the Senior Technology Partner for Adaptive Strategy, a Washington State consulting firm. You can read more of Mike's work at his Larkware Web site, or contact him at MikeG1@larkfarm.com.