Is it better for software to be simple or consistent? Richard P. Gabriel suggested that simplicity was the most important aspect of software design, more than consistency, correctness, or completeness. He called it “worse is better.”
I use a lot of software in my job, so I think I get where this is coming from. Many programmes try so hard to be consistent and complete that they end up being a bit of a mess. Sure, it follows a standard structure, but you have to dig through a complex and nested interface to find even the most basic repetitive functions. (I hope I’m not making a mess of explaining this. Meh, if I am, “worse is better,” right?)
The “worse is better” approach ranks these four aspects: simplicity, consistency, correctness, and completeness. Simplicity comes out at the top, and completeness is only a worthwhile target if it doesn’t affect the other three aspects. According to Gabriel, software created in this way will be more successful with its users, and therefore in the market.
2 Replies to “Worse is better”
I think I need an example of something that’s more simple than it is consistent. How does the user have a simple mental model of inconsistent elements?
Likewise if the user has to handle complex workarounds for incorrectness, that’s hard to be simple.
In practice “worse is better” I only ever see used on the simplicity/completeness tradeoff, where it makes a lot more obvious sense.
Well, I’ll admit to not being an expert in this matter (or hardly any matters to be honest!), but the exact wording in Gabriel’s description is “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.” I wonder which cases he had in mind?