DEV Community

Cover image for Apply YAGNI to More Than Just Software
Simon Mannes
Simon Mannes

Posted on • Originally published at mannes.tech on

Apply YAGNI to More Than Just Software

You aren't gonna need it.

That's a programming principle from extreme programming. It states that functionality should not be added until deemed necessary.

Let's explore how YAGNI is useful in software development, and as a general productivity tool.

YAGNI For Feature Selection

Using YAGNI is a great idea.

There are infinitely many features you could add to your software. And infinitely many improvements to your code or infrastructure. But no project has infinite time or infinite resources, so we always need to choose what to work on and what to ignore.

The question is: what are we optimizing for?

As always, that depends.

But in most projects you'll want to optimize for user perceived value. Some call that Customer Perceived Value.

That's the perceived benefits your application brings, minus its perceived cost to the user.

Notice that we're talking about perceived benefits and costs. You can increase the perceived benefits to the user in two ways. You either increase the direct benefits of your solution, or you make the benefits more clear to your users, e.g. with more and clearer metrics about the value your solution brings. Same for perceived costs.

YAGNI as a Productivity Tool

I find YAGNI is not only great for software development, but for individual productivity as well.

Here are some things you don't need:

  • You don't need to respond immediately to instant messages or emails from your coworkers.
  • You don't need to act immediately when you notice a shortcoming in your project or organization. Most times, doing nothing at first is the better option. Wait until that issue appears more often, and until you know about its impact and frequency before jumping to action.
  • You don't need to be always available. Take your time for focused work.

What To Do Next

The next time an urgent matter comes up, ask yourself (and the rest of the room) how urgent that matter really is.

“Simplicity – the art of maximizing the amount of work not done – is essential.” – Agile Manifesto

Follow me on Twitter @simon_mannes

Top comments (0)