These are my notes on the talks “Simple Made Easy” by Rich Hickey.
Simplicity is a prerequisite for reliability - Dijkstra
We can only make reliable those things we can understand.
We can only consider a few things at a time. If a piece is intertwined with another we already have to keep both in mind. It’s combinatorial.
Complexity undermines understanding.
Ignoring complexity slows you in the long haul.
The simple route is slower at the beginning because it requires thought.
Benefits of simplicity:
Complect = interleave, entwine, braid.
Compose = place together.
Modularity != simplicity. Partition and stratification (modularity) != simplicity.
Modularity = simplicity; when we limit what those modules are allowed to think about.
Programming, when stripped of all its circumstantial irrelevancies, boils down to no more and no less than very effective thinking so as to avoid unmastered complexity, to very vigorous separation of your many different concerns - Dijkstra
Simplicity is the ultimate sophistication - Da Vinci
|Values||final, persistent collections…|
|Data||Maps, arrays, sets, JSON…|
|Polymorphism a la carte||Protocols, type classes|
|Declarative manipulation||SQL, Prolog|