Terug naar begrippenlijst

YAGNI (You Aren’t Gonna Need It)

YAGNI staat voor You Aren’t Gonna Need It en is een principe uit de softwareontwikkeling die stelt dat je geen functionaliteit moet implementeren die je op dit moment niet nodig hebt. Het is een kernprincipe binnen Extreme Programming (XP) en Agile development. Het idee achter YAGNI is simpel: ontwikkelaars verspillen vaak tijd en middelen door code te schrijven voor functies die mogelijk nooit gebruikt zullen worden. Dit leidt tot complexiteit, onderhoudsproblemen en hogere kosten.

Geschreven door Thijn de Haas

Zwaaiende emoji

Thijn Lead developer

Meer over Thijn

Inhoudsopgave

YAGNI behoudt de focus

YAGNI helpt ontwikkelaars om zich te focussen op de huidige vereisten en niet op hypothetische toekomstige behoeften. Het principe voorkomt dat projecten onnodig complex worden en zorgt ervoor dat teams sneller kunnen aanpassen.

Veel ontwikkelaars denken: “Laten we alvast deze extra functionaliteit toevoegen, dat bespaart later werk.” Maar in werkelijkheid leidt dit vaak tot:

  • Code die nooit wordt gebruikt.
  • Moeilijker onderhoud en debugging.
  • Onnodige complexiteit, waardoor nieuwe teamleden langer nodig hebben om de code te begrijpen.
  • Verspilling van tijd en middelen.

Voorbeelden die je wél nodig hebt

In softwareontwikkeling is het verleidelijk om alvast extra functionaliteiten te bouwen voor toekomstige behoeften. Maar vaak blijkt dat deze functies nooit worden gebruikt, wat leidt tot verspilling van tijd en complexiteit in de code. Bij deze voorbeelden komt het YAGNI-principe dan ook uitstekend van pas:

  • Extra configuratie-opties die niemand gebruikt
    Een ontwikkelaar voegt een geavanceerd configuratiesysteem toe voor een app die slechts één instelling heeft. Niemand gebruikt de extra opties, maar de code moet wel onderhouden worden.
  • Generieke oplossingen voor specifieke problemen
    Een team bouwt een extreem flexibele API, terwijl de applicatie slechts één specifieke functionaliteit nodig heeft. Dit zorgt voor onnodige complexiteit.
  • Vooruitwerken op toekomstige functies
    Een webshop ontwikkelt een uitgebreid loyaliteitssysteem terwijl er nog geen klanten zijn. Wanneer het eindelijk nodig is, blijkt dat de vereisten veranderd zijn en moet het systeem opnieuw gebouwd worden.

Hoe YAGNI zich verhoudt tot andere principes

YAGNI staat niet op zichzelf, maar maakt deel uit van een bredere filosofie binnen softwareontwikkeling die gericht is op eenvoud en efficiëntie. Het principe sluit nauw aan bij andere bekende richtlijnen zoals KISS, DRY en Lean Development. Hoewel deze concepten verschillende focuspunten hebben, delen ze een gemeenschappelijk doel: het vermijden van onnodige complexiteit en het maximaliseren van productiviteit:

  • KISS (Keep It Simple, Stupid): Beide principes streven naar eenvoud, maar YAGNI gaat specifiek over het vermijden van onnodige functies.
  • DRY (Don’t Repeat Yourself): DRY focust op het vermijden van dubbele code, terwijl YAGNI voorkomt dat je onnodige code schrijft.
  • Lean Development: YAGNI sluit aan bij de lean-filosofie, die verspilling minimaliseert door alleen waarde toe te voegen die echt nodig is.

Veelgestelde vragen over YAGNI

Altijd wanneer je overweegt een functie toe te voegen die niet direct nodig is. Vraag jezelf af: “Heb ik dit nú echt nodig?” Zo niet, dan wacht je ermee.

YAGNI betekent niet dat je nooit vooruit mag denken, maar dat je alleen code schrijft voor wat nu noodzakelijk is. Agile ontwikkeling maakt het makkelijk om later functionaliteit toe te voegen als het echt nodig blijkt.

Door een goede balans te vinden. Focus op de huidige vereisten, maar houd je code flexibel en uitbreidbaar zonder meteen alles te bouwen.

Nee, YAGNI kan in elke ontwikkelmethode worden toegepast. Maar het past wel perfect bij Agile en Lean Development, omdat deze methoden iteratief werken en verspilling willen minimaliseren.

Thijn de Haas Lead developer

Meer over Thijn

Mijn programmeeravontuur begon rond mijn twaalfde, toen ik ontdekte dat je met code vrijwel alles kunt maken. Ik begon met het bouwen van kleine projecten en startte al snel mijn eigen hostingdienst, wat me veel leerde over maatwerkcode, serverbeheer en het koppelen aan websites. Deze kennis pas ik nu dagelijks toe in mijn werk aan websites en applicaties.

Als student Applicatieontwikkelaar liep ik drie stages bij Wux, waarbij ik tijdens de eerste stage mijn eerste bedrijf startte, deels op advies van Bo. Deze ervaringen vormden het fundament van mijn rol als lead developer en mede-eigenaar van Wux. Met een constante interesse in nieuwe technieken en het meedenken naar de beste oplossingen, zet ik mijn expertise dagelijks in om complexe vraagstukken op te lossen samen met mijn team.

Twee mannen in overleg tijdens het werk achter hun computerschermen
Zwaaiende emoji

Thijn Back-end developer

Op zoek naar slimme software-oplossingen die jouw bedrijf efficiënter maken?

Het team van Wux ontwikkelt maatwerk software die aansluit bij jouw behoeften. Neem vandaag nog contact op en ontdek hoe we jouw bedrijf elke dag succesvoller kunnen maken.

Meer over software