YAGNI staat voor “You Aren’t Gonna Need It”, een principe dat zegt dat je alleen bouwt wat het project nú nodig heeft, niet wat het ooit misschien nodig heeft. Het komt uit agile ontwikkelen, en met name uit Extreme Programming, en het gaat in tegen de heel natuurlijke gewoonte om extra features toe te voegen, voor het geval dat. Dat instinct voelt verantwoordelijk. In de praktijk kost het meestal geld.
Stel je voor dat je voor een weekendje weg inpakt en sneeuwlaarzen, een tent en drie reserveopladers meeneemt voor situaties die zich vrijwel zeker nooit voordoen. De bagage wordt zwaar en vertraagt je zonder dat het iets oplevert, en de helft gaat ongebruikt weer mee terug. Software werkt net zo. Speculatieve features voegen gewicht toe, kosten tijd om te onderhouden en worden vaak geschrapt voordat iemand ze ooit gebruikt. Erger nog, ze maken de code moeilijker leesbaar voor de delen die er wél toe doen. YAGNI staat naast KISS, dat dingen simpel wil houden, en het DRY-principe van jezelf niet herhalen.
De winst is een kleinere, helderdere codebase. Als je alleen bouwt wat nodig is, valt er minder te testen, minder kapot te gaan en hoef je minder te gokken waarom een stuk code er staat. Een developer die het een half jaar later leest, ziet alleen code die zijn plek verdient. Verkeerd gokken over de toekomst is ook een veelvoorkomende bron van technische schuld, want die half afgebouwde feature “voor het geval dat” moet je alsnog meeslepen, patchen en omzeilen.
Bij TopDevs passen we YAGNI toe om klantbudgetten scherp te houden, en bouwen we de features die zichzelf terugverdienen in plaats van het project vol te stoppen met misschienen.