June 2nd, 2006
Roughly 10 years ago, I wrote a chapter on “good enough software” in a book titled Rise and Resurrection of the American Programmer. The message in that chapter was that American software companies were thriving because they had figured out that they didn’t need to strive for “perfect” software. We all want zero-defect software in the systems that control our nuclear reactors, airplane navigation systems, hospital patient monitoring systems, and other safety-critical applications; but as the marketplace has clearly demonstrated with its love of Microsoft products, the software we put on our laptops and desktop machines doesn’t have to be perfect. (And I’m not picking on Microsoft here; they just happen to be the example everyone knows about. The same could be said about virtually every software product company.)
What the marketplace wants, I argued in my book, is software that’s “good enough” — i.e., cheap enough, feature-rich enough, available soon enough (if you give me perfect software ten years from now, whatever opportunity I had for using it has disappeared), and delivered with only “enough” bugs. No show-stoppers, please; no bugs that make my computer crash, no bugs that corrupt all of the files on my hard disk. But I’ll tolerate a few user-interface glitches and flaws. I’ll grumble, but nevertheless accept, some attractive but non-critical functionality that doesn’t work, even though the user manual says it should work. And I’ll even tolerate a few program crashes, as long as it doesn’t crash the whole system; after all these years, I still have my files (including the text of this blog entry!) every two or three minutes.
Of course, none of this static: what we consider “good enough” today may not be good enough tomorrow — especially if a competitor suddenly offers us a comparable product that costs less money, has more features, and has fewer bugs. That doesn’t happen every day, but if there is such a thing as technological progress, it should be visible over periods of, say, five years or so.
All of which made me think about what was “good enough” on my recent driving trip through the American West (see blog entries for May 20th through May 31st), as compared to the driving trip I took five years ago (see “Travels With David,” elsewhere on my web site). For example, the price of gas certainly wasn’t “good enough”: it was roughly $3 a gallon wherever we drove, as compared to $1.71 per gallon back in 2001. But what’s interesting is that I could even find the historical figures; all it took was typing the phrase “price of gas in 2001″ into Google. The search produced 54,700,000 hits, including a series of spreadsheets from the Department of Energy, and this nice little chart from the state of California:
From a high-technology perspective, the biggest change in my perception of what’s good enough, as I traveled around the country, was the speed, the depth, and the pervasive reach of the Internet and the Web. In 2001, I was able to access the Internet in every little town where we stopped for the night; but it was always via a slow-speed, dialup, 56K phone line. This time, as noted in one of my recent blog entries, I had free high-speed wireless and/or Ethernet Internet access everywhere. What wasn’t good enough was the quality of the connection; the wireless signal was often weak, unreliable, or simply unavailable. On the other hand, my Verizon EVDO wireless modem card worked flawlessly wherever I went; that definitely was good enough. If I take another driving trip in, say, 2011, I would expect super-high-speed Internet access to work as well as the telephone service we all take for granted.
Speaking of telephone service: that, too, was basically good enough. In 2001, there was only one small town (Fortuna, California — see “Travels With David, Part VII“) where my cell phone didn’t work at all; this time, too, the problem occurred only once: in Vernal, Utah. That’s okay with me, since I spent only one night in each town; and aside from Vernal, cell phone service was absolutely fine wherever I went. There may still be some problems of dropped calls and weak signals in some parts of the country, and I know that American cell-phone users don’t have the full range of high-speed services as European and Asian customers; but all in all, I think we’ve reached a “good enough” plateau with our cell phones. Yeah, maybe I’ll expect to download the latest episode of Desperate Housewives onto my cell phone when I take my next driving trip in 2011; but if it’s not available, I don’t think I’ll complain very much.
One bit of technology that was better than “good enough” was Blackberry access. I didn’t even have the device in 2001 (though apparently it was available; see this page on geek.com); this time, it allowed me to stay in touch with friends, family, and clients all through the trip. I was amazed to see how strong the Blackberry reception was in even the most remote places we visited; it was an unexpected gift this time, but I’m sure I’ll take it for granted five years from now.
What wasn’t good enough, surprisingly, was the Internet facilities for reserving hotel rooms. In 2001, we didn’t bother with such things: we simply stopped wherever we got tired, and walked into whatever hotel looked reasonable. But over the past few years, I’ve become more and more accustomed to planning the details of a trip at least one day in advance, so I can be reasonably sure of finding a hotel with a fitness center, a restaurant (as opposed to a “breakfast buffet”), and, yes, a high-speed Internet connection. I won’t bore you with the details, but I felt badly misled by Travelocity on this trip; and I was surprised to see that going directly to a hotel’s reservation website was error-prone (Best Western), user-hostile (Hilton), and/or confusing (Fairmont). I’m not sure what I’ll do about this on my next driving trip, but for now it’s pretty clear that a direct phone call to the hotel’s front desk is the only way to ensure that they’ve got the right details, and that their hotel actually does provide the services advertised on the web site (”What? Fitness center? What’s that? Oh, no, sir, we don’t have anything like that…”)
One bit of technology that I wish I had asked for in our rental car was a GPS navigation device. Again, such things basically weren’t available five years ago; now they’re common, but you do have to ask for them when you make a car reservation. I’ve only had GPS navigation in my own car for about six months, and I’m only now beginning to appreciate how truly useful it can be. We had a fairly easy time navigating through the highways of the Western states, but there were a few places where we encountered long stretches of highway-construction delays; it would have been nice to know if there were alternate routes. I have a feeling that GPS may be a “standard” feature in rental cars five years from now; in any case, I won’t consider a car “good enough” unless it’s available.
I was going to write something about “good enough” fast food selections at places like Burger King and McDonald’s, but decided that it’s entirely a matter of personal preferences. But I still think McFlurry’s are the best thing in the universe, and I’m delighted to see that there’s a legitimate entry for the tasty treats on Wikipedia…

August 15th, 2006 at 10:38 pm
[…] If you haven’t heard of this concept before, you may well have a strong negative reaction to it. I first started writing about good-enough software about 10 years ago, and I posted a blog entry about it a couple months ago; you can even find a Wikipedia article on the “principle of good enough.” Bottom line: mediocre software survives because society tolerates it, and believes (rightly or wrongly) that it really is good enough. […]
September 10th, 2006 at 9:34 am
[…] The second most impressive thing Zuckerberg and his colleagues did was to fix the mistake, muy pronto. Of course, they could have retreated completely by removing the code, and reverting to the previous version of their software; but instead, it appears that they introduced some user-controllable options that should have been there in the first place — i.e., options that allow each Facebook customer to control which of his personal attributes (likes, dislikes, single/”involved” relationship status, etc.) can be shared, and which ones cannot. I don’t know how much code was involved, and I don’t know how well it was written, and I don’t know how well they tested it - but getting all of that specified, designed, coded, tested, and deployed in two days is pretty good. Well, in any case, it’s probably “good enough,” from the perspective of the 700,000 grumpy users who thought the whole thing was a bad idea. […]
January 11th, 2008 at 9:59 pm
[…] (see, for example, this recent post about the “good enough” nature of Twitter, and this somewhat older one of a more general nature), but it occurred to me that I should acknowledge the opposite end of the […]