notes provisional

YAGNI

YAGNI as engineering principle and when it becomes a thought-terminating cliché

software-engineering principles

YAGNI

YAGNI (“You Aren’t Gonna Need It”) is a software engineering principle stating that a programmer should not add functionality until deemed necessary.

While originally a useful corrective against speculative generality, it frequently devolves into a thought-terminating cliché. When deployed as a slogan, it smuggles a prediction about the future under the cover of a design axiom, ignoring the asymmetry of reversibility:

  • Cheap to reverse: Leaving a hook or a narrow interface.
  • Expensive to reverse: Flattening a core domain concept that later requires a months-long migration.

The antidote to YAGNI as a cliché is to state the underlying model explicitly. Instead of saying “YAGNI”, say: “I don’t think we’ll need this because our roadmap keeps us single-tenant for a year, and adding it later is a one-day change. Do you agree?” This invites falsification and actual engineering judgment.