Concept

Reversibility

Definition

Reversibility is the design property of keeping decisions changeable. It rests on the recognition that there are no final decisions: requirements shift, vendors change, assumptions about performance and scale prove wrong, and a design that hard-codes today's choices becomes a liability tomorrow.

A reversible design treats key decisions as parameters rather than facts welded into the structure of the system, so that revisiting one is a contained edit rather than a rewrite.

Why it matters

How it works

Reversibility is achieved by isolating the decisions most likely to change behind abstractions. A database choice sits behind a data-access layer; a third-party service sits behind an adapter; a deployment target is governed by configuration rather than scattered assumptions.

The principle pairs closely with orthogonality: when components are independent, reversing one decision does not cascade into the others. The aim is not to abstract everything, which adds its own cost, but to identify the few decisions whose reversal would be expensive and protect exactly those.

Where it goes next

Continue exploring

Tags