Simple made easy ⚡️

Go check out the talk here: Simple Made Easy - Rich Hickey

Simple != Easy Simple means opposite of complex and easy means being at hand. Simple means having non-intertwined pieces working together which basically is the opposite of complex. Easy, on the other hand, is fast and introduces accidental complexity everywhere it goes.

While building and working with a software system the important question to ask at each step is, "Is this thing reliable and can it be changed?" Change to a software system involves analysis and decisions. To make any meaningful change a system must be understood by whoever is changing it.

Simple systems are easy to reason about. By that, a system is easy to understand, change debug and flexible. This does not mean you can change a system because "it passed the tests".

We say, “I can make a change because I have tests.” Who does that? Who drives their car around banging into the guard rails!?

Ignoring complexity slows down development in the long run. It adds slight complexity with every change and becomes its own artifact rather it should be a construct you reason about. A simple assignment is easy but the effects are profound.

Code organising != Simplicity. Things may not call each other but they know about each other, they should rather know the abstraction. Abstraction is key in dealing with simplicity.

Complect - intertwining, braiding. Compose - place together

More about the role of State here. ps: DON'T USE IT!

Here's an image that should be thought out before building a language. For the rest of us just use Clojure :P

Last updated