Evaluating 'simplicity'

❝How to answer the question: 'Can we make it any simpler?'❞

After a lot of talk about simplicity, let us make things practical. This post is intended to highlight the concerns of each of “the components of simplicity” as I previously defined them. We make things practical with questions and examples, instead of abstract descriptions.

Simplifying is a two-step process that may loop around as long as the question itself can be improved based on further insights, i.e. goal is an absolutely simple answer.

Step 1: question the question

In this step, we assume that we are allowed to rephrase and fine-tune the question itself. If the question is a given, only step 2 is relevant.

As discussed in Questioning the scope of simplicity, to make an answer as simple as possible, you will need to ensure that the question is of equally high quality. The question determines the base of the answer.

You can do this either at the start, or at any later point in time while answering the question. Phrase the question such that it is as specific as possible to what you want to answer. The answer sometimes hints at how the question could better be expressed. Each time the answer is changed, you will need to reconsider whether the answer that is formed can now be further fine-tuned.

Step 2: considering each property

Previously, we defined three properties:

Each of these properties can be questioned independent of the others. Each of these propeties contributes to complexity or – if done right – to simplicity in a distinct dimension. Having each dimension as simple as possible, presumably results in a simplest answer.

Sometimes one is not looking for the simplest answer, though. Sometimes, there is more priority for a highly optimized answer, or a need for platform-specific features. These needs, however, imply a deliberate choice to shift priority away from the simplest answer.

Note: you can think of the question as the problem or problem statement, and the answer as the solution.


In the dimension of generalization, we question whether or not the answer is described in unnecessarily general terms, which makes it more challenging to comprehend.

Note that specialized assumes that we operate in the same level of abstraction, i.e. the domain in which the question is expressed is also the domain in which the answer is expressed. This means that someone who understands the question, should be able to comprehend the answer.


In the dimension unoptimized, we consider if the answer is expressed at the same level of abstraction, i.e. in the same domain, as the question. If not, this implies that there is a (hidden) cost of additional knowledge in order to comprehend the answer. That is, knowledge that the reader needs to be aware of, and a level of abstraction that the reader needs to comprehend.


In the dimension reduced, we consider if parts can be removed. If there are less parts to the answer, the answer becomes easier to comprehend.

Step 3: iterate

Sometimes, simplifying the answer gives you additional insight in how to improve the question? If so and if fine-tuning the question itself is allowed, loop back to step 1 and iterate once more.


We have discussed each of the components that there are to simplicity. Each representing a different dimension on the answer. Through a number of questions, we illustrate what aspect of simplicity each dimension represents.

The questions help you to evaluate each component of simplicity individually. They give insight. They allow you to evaluate if further simplification is feasible. Or whether a choice was already made for a certain priority. It is up to the reader to determine if they want to improve in the direction of simplicity, or rather choose to improve one of the dimensions instead. Choosing for a particular dimension (specialized, unoptimized, or reduced) leads to making sacrifices in the other directions, and consequently to simplicity itself.

This post is part of the Defining simplicity series.
Other posts in this series: