worse-is-better

Two design philosophies:

The Right Thing (MIT/Lisp): correctness first. The interface should be clean even if implementation is complex.
Worse is Better (New Jersey/Unix): implementation simplicity first. The interface can be rougher.

“Worse” wins in practice: simple implementation → easy to port → spreads → users iterate. “The right thing” never ships because implementation keeps growing to satisfy the perfect interface.

The question is where you put the complexity: “the right thing” hides it in the implementation to shield the user.
“Worse is better” pushes some to the user to keep the implementation tractable.

Gabriel argued both sides, but never settled. In “Worse is Better is Worse” (written under a pseudonym, rebutting himself): “worse is better” isn’t really a philosophy, it’s pragmatic tradeoffs dressed up as a principle. The historical examples don’t hold up (Unix won because PDP-11s (minicomputer it was originally developed on) were cheap, not because of design philosophy). Pragmatic compromise is fine; aiming low on purpose is not.
The advice of intentionally aiming for 50% is “corrosive. it warps the minds of youth.” “Aim high but make sure you shoot.”

In “Is Worse Really Better?” he leans the other way, sharpening the evolutionary argument: a system that establishes territory and molds its environment before rivals arrive has the advantage. C++ will beat Smalltalk and CLOS for the same reasons C beat Lisp. “The future will be in the hands of the worst of our fruits.”