Skip to content

Taxonomy

Twenty-five ways code is wrong.

One lesson per class: what it looks like, why it survives review, and the reading habit that catches it. The vocabulary is deliberately language-neutral — these are the categories a reviewer thinks in, not TypeScript features.

Boundaries

Where does the range actually stop?

Conditions

Is this test asking the question it looks like it is asking?

Failure handling

What happens when this goes wrong?

Time and concurrency

What else can happen between these two lines?

State and ownership

Who owns this value, and who is allowed to change it?

Trust

What is this trusting that it has not checked?

Data and representation

Is this the same value it was a moment ago?

Dependencies

Does this API do what its name says?