Simplicity is the Most Important Software Design Consideration

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.

Leave a Comment
(formrobin.com)

JoelDare.com © Dare Companies Dotcom LLC

Terms - Privacy