Meta-analysis of three different notions of software complexity

https://news.ycombinator.com/rss Hits: 9
Summary

I want to discuss three different notions of software complexity: Rich Hickey’s notion of complexity, as explained in his talk Simple Made Easy. John Ousterhout’s notion of complexity, as explained in his book A Philosophy of Software Design. Zach Tellman’s notion of complexity, as explained in his newsletter Explaining Software Design. I’ve picked these three because I’ve found them to be at least somewhat coherent, and the former two to be (relatively) well-known; this blog post is not meant to be exhaustive of all different definitions of complexity that have been offered over the years. The definitions summarized (Formatting note: exact quotes are taken from the above-mentioned work.) Hickey complexity Hickey defines something as being simple as having some kind of oneness - he uses the phrases “one fold/braid, one role, one task, one concept, one dimension.” Hickey states, “When you’re looking for something simple, you want to see it have focus in these areas. You don’t want to see it combining things.” Hickey contrasts ‘easy’ with ‘simple’. For ‘easy’, the central idea is proximity – in terms of access (e.g. already having something be installed, being able to easily install something), in terms of existing skills and capabilities, and so on. Hickey points out that ‘easy’ is subjective, because it is relative to the person making the judgement. As one example here, Hickey states that the parentheses in Clojure are hard (i.e. the opposite of easy) but simple, and that it is users’ responsibility to fix this. On the other hand, Hickey states that this notion of simplicity is objective, “we can probably go and look and see, I don’t see any connections, I don’t see where this twists with something else.” Hickey stresses the difference between simplicity and low cardinality (“But not: One instance, one operation.”). He points out that the important thing is “lack of interleaving, not cardinality.” Hickey sums up his argument against complexity as follows: “We can o...

First seen: 2025-06-15 09:01

Last seen: 2025-06-15 17:04