Simple made Easy - Rich Hickey
Easy vs Simple
-
Easy: fast, near our understanding, familiar
-
Simple: does one thing
-
Complex: intertwined. Requires knowing or thinking about more things at the same time.
-
Easy is relative
- Easy for who? Hard for who?
-
Complex is objective
- e.g. This function does N things, requires N dependencies, involves N subsystems, etc
Simple does not mean "I already know what it means." It means it can be understood with less effort.
Lego castle (simple) vs knitted castle (complex)
- The lego castle can be taken apart at many locations to be altered
- A knitted castle can only be altered from the outside-in. To change the center, you have to unknit a whole side to just to expose the area you want to change.
Simplicity often results in more things. This is okay – good even – because simplicty is not about the number of things. It's about the number of things they do. It is better to have many simple things that don't intertwine than to have a few complex things knotted together. It is easier to change out those simple things.