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 |