Illustration of sewed-on facing, from a 1921 dressmaking publication.

When talking about software quality we should separate internal and external quality. What is the user experience and what is the developer experience?

Internal quality is a codebase where the functionality is easy to change without unexpected side effects.

External quality is software that behave as expected by the user, demanding as little effort as possible.

Sometimes the two are related. Code forced into new purposes without prior refactoring might behave clunky or erratic.

A lack in internal quality can still be prevented from showing to the user. This is where we do endless manual testing, extensive monitoring in operations or add a lot of extra computational resources.

On the other hand, software with high internal quality might still have poor external quality. If the behaviour of the application is hard for the user to navigate and predict, it will still not be perceived as working correctly.

If the software has internal quality it is easier to change. This makes it easier to do user research and update its behaviour, so that it works well for the user.

Internal quality makes it easy to write software that do what we expect. External quality is software that does what the end users expect.

Related texts

A single frosted leaf with clear contours and veins.

TDD in the context of writing code to be read

Wunder Baum hanging from a car window (Known as Little Trees in most English-speaking countries)

Wunderbaum testing