Factoring Knowledge


To learn is to factor your knowledge. You split a big, fuzzy, opaque idea into smaller, crisper pieces. You’ve now taken a piece of knowledge and split that into factors.

As software developers, we often talk about refactoring. According to Martin Fowler,

[Software] refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior.

We refactor code by changing a composite structure to extract different factors. We combine, then factor. The “re” prefix means just that – the code is already a composite of pieces, and we intend to split that code into different pieces.

I want to dig into this bit:

altering its internal structure without changing its external behavior

When we work in the realm of knowledge, “changing structure without changing externally observed behavior” gets harder. The work of factoring knowledge tends to improve that knowledge. We move from a weak explanation to a stronger explanation.

Following David Deutsch, the quality of an explanation is determined by the reach of the explanation, and how hard it is to vary the explanation.

Let’s bring back factoring and refactoring. We can change the structure of an explanation in order to improve its reach, or decrease its variability. I propose two ways to refactor an explanation:

  1. Remove explanation dependencies
  2. Rebase the explanation on stronger terms.

Removing dependencies from an explanation increases its reach. Mathematicians generally call this generalization.

We might realize that we have been vague in the way we formulated our explanation. Vagueness lets variability slip in, and explanation variability is bad.

continuing on 2023-03-11.

altering its internal structure without changing its external behavior

Another formulation:

altering its components without changing the domain

For knowledge, we factor / refactor an explanation by keeping the problem constant, but moving the domain.

Vary solutions under invariant problems. 🤔