I’ve seen this video by Rich Hickey: “Simplicity matters”, taken from Manuel Rivero’s google plus' site
here are my notes:
- the software is the elephant
- do more, do it differently, do it better
- complexity of the elephant is going to dominate what you can do
- your ability to reason about your program is critical
- design is about pulling things apart
- become familiar by learning, trying
- “We can be creating the exact same programs out of significantly simpler components”. Rich Hickey
Complexity vs simplicity:
| Complexity | Simplicity |
|---|---|
| state, objects | values |
| methods | functions, namespaces |
| variables | managed refs |
| inheritance, switch, matching | polymorphism à la carte |
| syntax | data |
| imperative loops, fold | set functions |
| actors | queues |
| ORM | declarative data manipulation |
| conditionals | rules |
| inconsistency | consistency |
- he does not agree on “simplicity” on the agile manifesto
- simplicity is not about you. simplicity is a lot of hard work
- clicked with paul graham’s LISP startup
- simplicity is not an objective
Order is all over the place:
| Complex | Simple |
|---|---|
| positional arguments | named arguments or map |
| syntax | data |
| product types | associate records |
| imperative programs | declarative programs |
| prolog | datalog |
| call chains | queues |
| XML | JSON, Clojure literals |