This is interesting. It's new to me and I think it looks like this.

The idea that "worse is better" was promoted by Richard P. Gabriel. It says that when designing something four things really matter:

The WorseIsBetter or New Jersey approach, is contrasted to the right-thing or MIT approach. The two approaches are very similar, the distinction being that with the WorseIsBetter approach simplicity in the interface is always sacrificed for simplicity in the implementation.

The WorseIsBetter approach says that:

Simplicity
The design must be simple, both in implementation and interface. It is more important for the implementation to be simple than the interface. Simplicity is the most important consideration in a design.
Correctness
The design must be correct in all observable aspects. It is slightly better to be simple than correct.
Consistency
The design must not be overly inconsistent. Consistency can be sacrificed for simplicity in some cases, but it is better to drop those parts of the design that deal with less common circumstances than to introduce either implementational complexity or inconsistency.
Completeness
The design must cover as many important situations as is practical. All reasonably expected cases should be covered. Completeness can be sacrificed in favor of any other quality. In fact, completeness must sacrificed whenever implementation simplicity is jeopardized. Consistency can be sacrificed to achieve completeness if simplicity is retained; especially worthless is consistency of interface.

It's this last one, completeness, which I think is very interesting, because it develops a (backward?) hierarchy. At the base of everything is simplicity and it seems to me that elegance has to be included with that. That fits well with my knowledge of biological design too, and in mathematics you often know you're getting somewhere when the equations begin to look simple and beautiful.

So, simplicity first, then correctness. I am not sure what RPG means by correctness in this sense. Does is just mean error free? I think it must mean more than that but what I don't know as I am not a programmer. And then consistency - "drop those parts of the design that deal with less common circumstances" And finally completeness. You are better to have something that does some things, or perhaps one thing, very well, than something that does everything but often poorly.

-- BrettShand

See also: WorseIsBetter, WorseIsBetter, ExtremeProgramming, SoftSecurity


WorseIsBetter is one of the tenets of ExtremeProgramming which is a "new" methodology for developing software, especially developing software with an AgileLanguage. I think it fits just as well, and just as importantly, with system and network design.

The basic premise is that an incomplete, but simple and working, solution is almost always better then trying to figure out how to build the "correct" solution. Incomplete in this context can mean anything from having bugs to missing some essential features. There are two main reasons for this, the first is that understanding what the "correct" thing is for any complex problem is really hard. The second reason is that at the beginning of the problem solving cycle you almost always misunderstand the problem.

It's useful to differentiate between WorseIsBetter and jury rigging. Jury rigging is about solving a problem in a sub-optimal manner due to time or resource constraints (in and of itself it isn't a bad thing but often gets abused into a bad thing through laziness). WorseIsBetter is about learning how to build the best possible system over time. WorseIsBetter suggests you break your big problem down into small understandable problems and solve them one at a time. When programming this means writing small modules which are easy to understand, easy to test and simple to debug.

For me the idea of WorseIsBetter goes very well with the concept of VoluntarySimplicity. It doesn't provide answers but when you're trying to figure out how to design something, it's an useful way to learn to think. I've noticed that every time I don't consciously consider the WorseIsBetter solution to a problem, I regret it later. :-) -- AdamShand


CategoryGlossary CategoryWriting

WorseIsBetter (last edited 2003-12-07 21:45:36 by AdamShand)