Good Enough, the software design philosophyTo caricature good enough, the only measure of success in design is "How many people are using the software?" This means that good enough for most people today is better than perfect tomorrow. In fact, that is the genesis of the name. Given that, the characteristics of the good enough philosophy are:
This is an intentional caricature, to show that this design philosophy is clearly not as good as either alternative. The primary goal of designers of this philosophy is to get something into the hands of as many users as possible, without regard to quality. This is the attitude that drives Windows and the popular software that runs on that platform. To make comparing this school with the others easier, here are their characteristics (the other two quoted with permission):
The worse is better philosophy is also a caricature. What's a bug?As an example of the philosophies at work, consider what happens when some other program - not one being discussed - misbehaves. The right thing and the worse is better philosophy both believe that it is unacceptable for an errant program to cause problems in other programs; they should be unaware that anything is wrong. The good enough school doesn't believe this - after all, program errors are the exception, not the rule, and its even rarer for those errors to cause other programs to fail. As a result, when faced with a bug report of the form "Doing X in application Y crashed my system!", good enough designers will say "Y is broken, so don't do that". Designers from the other two schools will fix the system so that it doesn't crash, so that if you forget and do X by accident, only application Y will crash - or possibly not, if it was written to do the right thing. As a related example, the internal clock on a system rolls over to zero every so often - usually with rather nasty results. On most systems, this will happen sometime in the mid 21st century. On Windows, it happens every 49.7 days. However, due to the approach to system crashes mentioned in the previous paragraph, it's rare for Windows systems to be up this long, so this is an acceptable limitation. Cheap hardware?Gabriel argues that software from worse is better designers will spread further than software from designers who do the right thing. His argument is that this happens because worse is better software is simpler, and so takes less computing resources to run quickly - so that it will start to appear everywhere. While history has proven this argument to be correct, the prediction was not. The reason the prediction was not correct is that software from the good enough school appeared, and ran on hardware that wasn't sufficiently powerful to run Unix. The most popular OS for that hardware was DOS, and those systems appeared everywhere. DOS was later improved - first by adding windowing systems, then by replacing DOS with an integrated OS/Windowing system - so it now has much of the functionality of Unix. In an ironic twist, the results of the good enough philosophy now require more resources than the worse is better. It is not at all uncommon to find a computer that has been discarded as too slow/small/old for Windows happily running Unix, and doing the job assigned it faster than a Windows system running on the fast/large/new system would. That Windows continues to add users shows that, while running on cheap hardware helps when hardware is expensive, being able to run on hardware that most people can afford is good enough. So, contrary to Gabriel, I don't conclude that Unix and C are the ultimate computer viruses. Windows is the ultimate computer virus. The bad newsThe bad news is that good enough software is getting so widespread that people assume that everyone has it available. Further, software that's good enough tends to work only with itself. After all, the authors want you to use their software, not someone else's! This means that people for whom good enough isn't - for instance, those who were exposed to either the right thing or worse is better software early on, and are used to those standards, find themselves having to choose between software they think is good enough, and software that works with things they get from other people most of the time. Web pages are a particularly nasty example of this, as their authors only support browsers that they consider good enough. Some good newsThe good news is that the good enough philosophy is incapable of producing systems suitable for being network servers. Systems that need to run twenty four hours a day, seven days a week, for hundreds or thousands of days must deal with unusual and rare conditions. So at least worse is better isn't doomed. Further, the rise of Open Source Software means that people who have never been exposed to software that was built to be better than just good enough can try such software cheaply. Enough of them see the point and switch that one of these systems - Linux - has been doubling it's market share every six months. Software vendors have noticed, and are now selling commercial software for that system, some of which interoperates with good enough software - albeit no better than that software works in the first place. So the good news is that there is now a viable alternative to simply good enough for a desktop system, and using it should be getting less painful as time passes. Originally written in March of 1998. |
Writing >