YAGNI: The engineering principle that tells you "Don't do it! Save time for the future"

Don't spend time on unnecessary things, have you already achieved this? Meet Yagni, a principle that helps you to keep your time and resources productive.

YAGNI: You Ain’t Gonna Need It

YAGNI stands for "You Aren't Gonna Need It". It is one of the Extreme Programming principles, which specifies that if you are a developer you should NOT add extra features until they are not needed.

The principle helps us to be based on facts and not assumptions, good requirements management, and also avoid delaying the initial scope of the task. If you still do not know this concept, here we tell you what things you should not confuse and why it is so important to be clear about the end of the YAGNI principle…

YAGNI Principle


There are known cases of projects where a super work is generated that overflows the MVP and its basic requirements, so much so that it can become undeliverable, that is, there are so many things and all pending to finish that is never finished.

This is the result of wasting time on unnecessary things.

The progressive featurism leads to code bloat; the software will get bigger and much more complicated (and refactoring will be a headache).

You should also keep in mind that not everything can be measured with Yagni. Yes, it's true that if you don't need it you shouldn't waste time with it (it also applies in life), but at the same time the principle invites you to foresee what you will need in the future, it is mostly about making the right decision without discarding being able to consider the larger context.

No matter what task you perform, the goal is to make the system easier to understand and use, also more maintainable, cleaner, and more robust. If that means writing more lines of code, then we'll make use of the YAGNI practice.


Lack of simplicity sometimes leads us to let our tasks spread with our inspiration and we end up using a proverbial bazooka 🔫 to clobber a fly 🪰. YAGNI can help us avoid this, but it's only really relevant when we're talking about things that can take a lot of time, money, or work: big features, direction changes, technology changes...


It is one thing to be able to anticipate what the project requires in the near future, and it must be now because for the time being the team has the experience that will not be available later.

And another thing is when we talk about finer-grained features (i.e. capabilities) that should always take priority, maintainability, testability, usability, readability, etc...


Whatever the outcome, you will incur a series of costs that can be either avoided or deferred.

  • Cost of the Building: All the effort spent on analyzing, programming, and testing a feature.

  • Cost of Delay: The lost opportunity to build and release another feature now.

  • Cost of Carrying: The complexity added, making the app harder to modify and debug.

  • Cost of Repair: The effort spent on modifying a feature, that is not what you need now.

We leave you an explanatory video with some more details about YAGNI:

If there is an error with the player, you can watch the video at the following LINK.


¡Thanks for reading!



Join our newsletter to receive information about latest technologies trends and job offers

Thanks for subscribing!