InnocentZero's Treasure Chest

HomeFeedAbout MeList of interesting people

18 Oct 2025

Simplicity in software

Simplicity in Software

Rich Hickey

  • "Simplicity is a prereq for reliability" ~ Dijkstra.
  • Cardinaility is not simplicity. A simple thing may be large, in fact it is. What matters is how 'tangled' it is.
  • Simple is actually an objective notion. As in, it can be quantified based on how entangled the thing is.
  • Easy comes from the "ease of use" or the "familiarity" of the <insert x> that you're trying to use.
  • It's relative!
  • If you want everything to be familiar, you will never learn anything new because it can't be significantly different from what you already know and not drift away from the familiarity.
  • Separate the construct (code) from the artifact.
  • We have small context memories. Keeping large things in our heads is not our strong suit.
  • If you can't reason about your program, you can't make these decisions.
  • List of complex things:
    • State
    • Methods
    • Inheritance
    • switch statements
    • pattern matching
    • loops/fold
  • List of simple things:
    • Values
    • Functions
    • Namespaces
    • Polymorphism
    • set functions
  • If something depends on the private behavior of something else, things are complex.

Other posts
Creative Commons License
This website by innocentzer0 is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.