YAGNI
expressionprogramming
Stands for: You Aren't Gonna Need It
The principle that you should not build functionality until it is actually required.
A staple of Extreme Programming, YAGNI pushes back on speculative generality - the features and abstractions added 'just in case' that add cost and rarely get used. Build for today's real need and let tomorrow's requirements, when they arrive, drive tomorrow's code.
You aren't gonna need it is an extreme programming principle, and it is a claim about probability and cost rather than about ambition. Most speculative features are never used, every one of them must be maintained and understood by everyone who reads the code afterwards, and building for imagined requirements usually produces the wrong abstraction because the requirement, when it arrives, is not shaped the way you guessed.
The economics are the argument. Code that is not written has no bugs, needs no tests, and does not constrain future design. Adding a feature later, when the requirement is real and specific, is often cheaper than adapting a generic mechanism built for a guess, and it is always more likely to fit.
The honest boundary is that YAGNI applies to features, not to structural decisions. It is not an argument against security, error handling, or choosing an architecture that can accommodate growth, and it is frequently misused as one. Some decisions are genuinely expensive to reverse, and for those the correct instinct is the opposite: think ahead. The skill is telling the two apart, and the rough test is whether the thing is easy to add later or has to be designed in from the start.
Also known as: You Aren't Gonna Need It, You Ain't Gonna Need It