Simple vs easy

June 26, 2017

In one of my most favourite software development talks of all time - Make software development simple, Rich Hickey (famously known as the creator of Clojure) drew a clear distinction between simple and easy.

“Simple” should not be correlated to “easy”.

“Simple” means having or composed of only one thing, element, or part. “Complex” means consisting of interconnected or interwoven parts. Simplicity and complexity are objective.

“Easy” means capable of being accomplished or acquired with ease. “Easy” and “difficult” are subjective.

In many cases, it is tempting to follow the easy path - throwing another expert at the problem, using a bloated product even when we don’t need all of its features, hiring more people, penetrating new market segments. The tradeoff is more moving parts over time, which Rich refered to as the Complexity Elephant.

The difficult path is working with constraints, bringing the best out of scared resources. This approach will unlikely to produce immediate returns, but will likely steer us away from the Complexity Elephant further down the road.

It is then important to decide if we are only running a short sprint or a marathon.

Maintaining simplicity is hard. Yet, since “easy” and “difficult” are subjective, the difficult path will turn easier as we get good at it.