Skip to main content

When nothing can be removed ✂️

French pilot and author De Saint-Exupéry wrote in his biography:

Perfection is finally attained not when there is no longer anything to add, but when there is no longer anything to take away.

He wrote this in the context of airplane engineering, but I think the step to software development is not too far fetched.

I believe the right software design is not the one where you have accounted for every possibility and added every option. Rather, it is the one that does what it needs to, and no more, without being so restrained that it is impossible to maintain or extend.1

An almost perfect illustration of this principle is the evolution of SpaceX’s engine Raptor. Each version has been simpler than the one before, and the third version seems to have little unnecessary parts.

SpaceX Raptor engine evolution

If you’re anything like me, a solution will pop into your head whenever you hear a problem. But be aware, that first solution that pops into your head is rarely the best. You often need to work a bit with the problem to gain a better understanding.

Iterate and you’ll likely see that a better solution is available.

And probably a simpler one too.


  1. Building small solutions that can be extended later is the essence of my earlier posts Plan for tomorrow and Design for today↩︎