By Joel Dare - Written September 7, 2026
I was reading about Richard P. Gabriel’s labels for two schools of thought about software design. They are quoted from his essay The Rise of “Worse is Better”.
Describing the MIT/Stanford style:
Simplicity – the design must be simple, both in implementation and interface. It is more important for the interface to be simple than the implementation.
Describing the New Jersey style:
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.
I was thinking about how I apply these to my own software design. I do believe that simplicity is one of the most important considerations, but it also crossed my mind that it’s more important for the interface to be simple than the implementation.
I think I generally lean toward the New Jersey / Worse-is-Better philosophy. I very much dislike large software. I don’t think massive effort should be spent accommodating edge cases and preserving abstractions. But I also want the interface to be as simple as possible.
I think a good way to paraphrase the rule I live by is:
Simplicity is the most important consideration in a design. Prefer simple implementations, but don’t achieve them by making the user’s mental model more complicated.
I’m still not sure about “more complicated”. That feels like a really low bar. Sometimes I will side with “more complicated” if it’s only slightly more complicated while reducing a lot of complexity. So, there’s a balance.
JoelDare.com © Dare Companies Dotcom LLC
(formrobin.com)