1. The code that gets written is the code that’s easier to write.
  2. Anything not forbidden by the language semantics will be done as a “temporary fix”.
  3. Codebases decay along the gradient of expedient hacks.

Programming languages have syntax, semantics, and pragmatics: how the language is used in practice. The latter is harder to design for. Language pragmatics is tooling, best practices, and the code you see in the wild. Pragmatics matter because they determine the shape of the efficient frontier between expedience and engineering quality, and from then on it’s gradient descent. In an API, every bug is a feature.

Language Pragmatics Engineering
from Fernando Borretti favicon