Simplicity Is a Prerequisite for Reliability

Humans are not good with complexity.

We can’t hold much information in our working memory which makes us more likely to fail when working with complex systems. That’s also one of the reasons why complex systems are, in the long term, bound to fail.

Simplicity is a prerequisite for reliability.

by Edsger W. Dijkstra

But why is it that systems get complex? Well, it’s usually by accident.

Complexity creeps in on its own when you’re not paying attention. It happens when you introduce a new tool that solves your problem, but that same tool introduces 10 new problems. It happens when a new feature is implemented that is used by 1% of the users, but makes your system 2x more difficult to maintain.

It happens for thousands of reasons. The point is that keeping things simple doesn’t happen on its own - it’s a deliberate choice that you make and then you keep fighting for it.

I rewatched the talk Simple Made Easy by Rich Hickey that he made 13 years ago and I must say that the points he made back then are still very much valid today.

Interestingly enough, many of these points apply not just to software development, but to most areas of our lives - whether it is our habits, lifestyle, or our laws.