Template:Short description "You aren't gonna need it"<ref name=XPi/><ref name=XPe/> (YAGNI)<ref name=OOC/> is a principle which arose from extreme programming (XP) that states a programmer should not add functionality until deemed necessary.<ref name=XPA/> Other forms of the phrase include "You aren't going to need it" (YAGTNI) <ref name=Ref/><ref name=LSD/> and "You ain't gonna need it".<ref name=DPiR/>
Ron Jeffries, a co-founder of XP, explained the philosophy: "Always implement things when you actually need them, never when you just foresee that you [will] need them."<ref name=RJef/> John Carmack wrote "It is hard for less experienced developers to appreciate how rarely architecting for future requirements / applications turns out net-positive."<ref name="Carmack">Template:Cite tweet</ref>
ContextEdit
YAGNI is a principle behind the XP practice of "do the simplest thing that could possibly work" (DTSTTCPW).<ref name=XPe/><ref name=OOC/> It is meant to be used in combination with several other practices, such as continuous refactoring, continuous automated unit testing, and continuous integration. Used without continuous refactoring, it could lead to disorganized code and massive rework, known as technical debt.Template:Citation needed YAGNI's dependency on supporting practices is part of the original definition of XP.
See alsoEdit
Template:Portal Template:Div col
- Don't repeat yourself
- Feature creep
- If it ain't broke, don't fix it
- KISS principle
- Minimum viable product
- MoSCoW method
- Muntzing
- Overengineering
- Premature optimization
- Single-responsibility principle
- SOLID
- Unix philosophy
- Worse is better