Sojin Park
Sojin Park

Worse is better

https://www.jwz.org/doc/worse-is-better.html

Two approaches to software design.

  • “The right thing”: Common Lisp
    • Simple interface
    • Always works correctly
    • Behaves consistently
    • Covers as many use cases as possible
  • “Worse is better”: C & Unix
    • Simplicity of implementation is the top priority.
    • Implementation should be simpler than the interface
    • Must work correctly, but simplicity of implementation matters more
    • Consistency is nice, but simplicity of implementation is preferable. As long as it’s not too inconsistent, that’s fine.
  • Cover use cases to a practical extent. If an implementation becomes too complex, just don’t implement it.
  • Programmers tend to want “the right thing,” but looking at the case of Unix & C, worse is better can actually be superior.
  • Unix & C were ported to all kinds of devices because their implementations were simple, and their market share grew like a virus.
  • As market share grew, a natural desire to improve them emerged => more people and capital were invested.
  • Common Lisp tried to do everything right from the start, but never gained momentum.
  • In general, if something covers roughly 50–80% of use cases well and is easy to use, people tend to adopt it.