Rich Hickey is known as the creator of the Clojure, a Lisp dialect on top of the JVM.
- Build simple system to have robust system
- Simple: sim- plex ; one fold, one braid ; vs complex
- Easy: ease < aise < adjacens ; lie near ; vs hard
- Simple, one fold:
- one role
- one task
- one concept
- one dimension
- simple is an objective and can be explored
- Easy, near, at hand:
- near to our understanding
- near to our skill set
- familiar
- easy is relative
We should ask ourselves these questions: does the software do what is supposed to do? Is it of high quality? Can we rely on it? Can problems be fixed along the way? Can requirements change over time? The answers to these questions is what matters in writing software not the look and feel of the experience writing the code or the cultural implications of it.
🚨 LIMITS
- 📚 we can only make reliable what we understand
- 🔬 we can only consider a few things at a time
- 🧩 intertwined things must be considered together
- 🤯 complexity undermines understanding
- Emphasizing ease gives early speed
- Ignored complexity will slow people down over time
- On throwaway or trivial projects, nothing much matters
- Ease understanding
- Ease of change
- Easier debugging
- Flexibility
- policy
- location
- etc.
LISP programmers know the value of everything and the cost of nothing. — Alan Perlis
Complexity | Simplicity |
---|---|
State, Objects | Values |
Methods | Functions, Namespaces |
vars | Managed refs |
Inheritance, switch, matching | Polymorphosm à la carte |
Syntax | Data |
Imperative loops, fold | Set functions |
Actors | Queues |
ORM | Declarative data manipulation |
Conditionals | Rules |
Inconsistency | Consistency |