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.


Comment on the blog!

Create a comment by emailing me.
I will then add the comment to the post.

Open an email to start writing.

Related texts

If F map X to Y the inverse of F map Y to X.

Defining domain boundaries

Water colours in a box

IT-stress, part 2 — change