Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
You aren't gonna need it
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{short description|Software engineering principle}} "'''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">{{cite tweet |last=Carmack |first=John |author-link=John Carmack |user=ID_AA_Carmack |number=1405932642005041153 |date=18 June 2021 |title=It is hard for less experienced developers to appreciate how rarely architecting for future requirements / applications turns out net-positive. https://t.co/lusGdzkfd3 |language=en |access-date=2 December 2022 |archive-url=https://web.archive.org/web/20220816030942/https://twitter.com/ID_AA_Carmack/status/1405932642005041153 |archive-date=16 August 2022 |url-status=live}}</ref> ==Context== 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 [[Code refactoring|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]].{{Citation needed|date=February 2020|reason=Reliable source needed for the whole sentence}} YAGNI's dependency on supporting practices is part of the original definition of XP. ==See also== {{Portal|Engineering}} <!-- Please keep entries in alphabetical order & add a short description [[WP:SEEALSO]] --> {{div col|colwidth=20em|small=yes}} * [[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]] {{div col end}} <!-- please keep entries in alphabetical order --> == References == {{Reflist|30em|refs= <ref name="XPi"> ''Extreme Programming Installed'', [[Ronald E. Jeffries|Jeffries, Ronald E.]]; Ann Anderson, Chet Hendrickson (2001). 265 pages, p. 190, webpage: [https://books.google.com/books?id=l4zO3OWkdIsC&pg=PA190&dq=%22you+aren't+gonna+need+it%22&hl=en Books-Google-dIsC], quote: "YAGNI: 'You Aren't Gonna Need It.' This slogan, one of XP's most famous..., reminds us always to work on the story we have, not something we think we're going to need." </ref> <ref name="XPe"> ''Extreme Programming examined'', Succi, Giancarlo; Michele Marchesi, 2001, 569 pages, webpage: [https://books.google.com/books?id=VSChTNjn_O0C&q=%22you+aren't+gonna+need+it%22 Books-Google-VSCh], quote: "XP says 'do the simplest thing that could possibly work ' because 'you aren't gonna need it'." </ref> <ref name="XPA"> {{cite book |editor1=Lindstrom, Lowell |editor2=Carmen Zannier |editor3=Erdogmus, Hakan | title =Extreme Programming and Agile Methods β XP/Agile Universe 2004: 4th Conference on Extreme Programming and Agile Methods | series=Lecture Notes in Computer Science | publisher=Springer | location=Berlin |year=2004 |page=121 |isbn=3-540-22839-X}} </ref> <ref name="OOC"> ''Object-oriented & classical software engineering'', Schach, Stephen R. (2007). 618 pages, p., webpage: [https://books.google.com/books?id=hWwhAQAAIAAJ&q=%22you+aren't+gonna+need+it%22 Book-Google-hWwh], quote: "Two acronyms now associated with extreme programming are YAGNI (you aren't gonna need it) and DTSTTCPW (do the simplest thing that could possibly work)." </ref> <ref name="RJef"> {{cite web | url=http://ronjeffries.com/xprog/articles/practices/pracnotneed/ | title= You're NOT gonna need it! | access-date=2007-11-07|date=April 4, 1998 | author=Jeffries, Ron }} </ref> <ref name="Ref"> [[Martin Fowler (software engineer)|Fowler, Martin]]; [[Kent Beck]] (8 July 1999). ''Refactoring: Improving the Design of Existing Code''. Addison-Wesley Professional, 431 pages, p. 68, webpage: [https://books.google.com/books?id=1MsETFPD3I0C&pg=PA68 BGoogle-1M]. {{ISBN|978-0201485677}}. Quote: "you aren't going to need it". </ref> <ref name="LSD"> Poppendieck, Mary; Tom Poppendieck (2003). ''Lean Software Development: An Agile Toolkit'', p.59, webpage: [https://books.google.com/books?id=hQk4S7asBi4C&pg=PA59 BGoogle-hQ]. Quote: "[[Kent Beck]], ''Extreme Programming Explained'', Chapter 17, uses the acronym YAGNI (You Aren't Going to Need It) for this practice and explains its rationale." </ref> <ref name="DPiR"> Olsen, Russ (2007). ''Design Patterns in Ruby'', p.13, webpage: [http://www.informit.com/store/design-patterns-in-ruby-9780321490452]. {{ISBN|9780321490452}}. Quote: "This design principle comes out of the Extreme Programming world and is elegantly summed up by the phrase You Ain't Gonna Need It (YAGNI for short)." </ref> }} [[Category:Programming principles]] [[Category:Extreme programming]] [[Category:English phrases]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Citation needed
(
edit
)
Template:Cite tweet
(
edit
)
Template:Div col
(
edit
)
Template:Div col end
(
edit
)
Template:Portal
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)