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:
- Simplicity
- Correctness
- Consistency and
- Completeness
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
That is a very interesting distinction, and it makes me think about "She'll be right, mate!" By and large modern Kiwis interpret that as jury rigging, but the way I learned it on the farms many years ago, it was WorseIsBetter, and that is still how I see it. -- BrettShand
The whole concept of WorseIsBetter has really changed a lot about the way I deal with the world. At PersonalTelco I used to talk about WorseIsBetter community building, in a lot of ways I think this is where I failed with PersonalTelco and MattWestervelt succeeded with SeattleWireless. Matt was willing to to let things be sub-optimal long enough that the "right" solution could emerge, where I was always trying to fix things. -- Adam.
And this is like D.W.Winnicott's idea of the "good enough" mother. Good enough to provide love, continuity of care and reassurance, but not so good that the child is denied mistakes and frustrations. Sub-optimal motherhood is best! -- BrettShand