Technische schuld
Technische schuld maken we bijvoorbeeld als we een sprint onder druk staat. Eigenlijk hebben we meer tijd nodig om de programmacode te structureren, maar die tijd is er niet. Het halen van de deadline is belangrijker dan het opschonen van de code. Daarom stellen we het opschonen uit zodat we de sprint op tijd af kunnen ronden. We stemmen ermee in om een dergelijke schuld aan te gaan die we later moeten terugbetalen.
Als we nu deze sprint halen, wordt het echter moeilijker om de volgende te halen. We gaan steeds langzamer werken en als je niet oppast, vertraagt de ontwikkeling in de loop van de tijd. Het aantal user stories dat we binnen een sprint kunnen realiseren wordt namelijk steeds kleiner omdat we een last op onze schouders dragen.
Om technische schuld in een agile ontwikkeling te kunnen managen, moeten we concept “technische schuld” goed begrijpen. Anders verpesten we onze software. De vragen om een definitie voor technische schuld te vinden zijn:
Technische schuld is uitgesteld, maar noodzakelijk werk:
Het omvat die interne dingen die we nu niet willen doen, maar die de toekomstige ontwikkeling belemmeren als ze blijven zitten.
Technische schuld omvat geen uitgestelde functionaliteit, behalve mogelijk in randgevallen waarbij de geleverde functionaliteit “goed genoeg” is voor de klant, maar niet voldoet aan een bepaalde norm. Bijvoorbeeld een UI-element dat niet volledig voldoet aan een bepaalde UI-standaard.
Ongeacht de ontwikkelingsfilosofie die ons ontwikkelteam volgt, zijn er een aantal veel voorkomende fouten die leiden tot technische schulden:
We hebben een stuk functionaliteit dat we aan ons systeem moeten toevoegen. Er zijn twee manieren om het te doen:
Een puinhoop is geen technische schuld. Een puinhoop is gewoon een puinhoop. Technische schuldbeslissingen worden genomen op basis van echte projectrestricties. Ze zijn riskant, maar ze zijn nuttig. De beslissing om er een puinhoop van te maken is nooit rationeel. Het is altijd gebaseerd op luiheid en onprofessioneel handelen. De kans dat het hele project eens over moet is groot. Een puinhoop is altijd een verlies.
Als onze code rommelig is, is het altijd slecht. Als we echter noodzakelijk werk uitstellen, kan dat een slimme zakelijke beslissing zijn. Helaas leiden beide, het creëren van een puinhoop en het op ons nemen van een technische schuld, in de loop van de tijd tot vergelijkbare problemen.
Een typisch voorbeeld van technische schuld in programmacode is dat enorme bronbestand waar iedere ontwikkelaar bang voor is. Iedereen in het team weet dat we het moeten opdelen in meer beheersbare stukken. Dit zou de komende functies echter met minstens twee weken vertragen. Het wijzigen van deze module zonder deze te herstructureren, draagt bij aan de schuld van ons product. Iedere volgende wijziging maakt het uiteindelijke herstructureren echter moeilijker en gaat daarom later meer kosten. De rente die we moeten betalen, is de extra complexiteit van elke wijziging die we hebben toegevoegd. De module groeit met iedere codetoevoeging en dat maakt herstructurering (en de beslissing daartoe) steeds moeilijker.
Technische schulden beperken zich uiteraard niet tot Agile – SCRUM teams. Veel van deze punten zijn vast ook van toepassing op veel Waterfall projecten. Tegenwoordig moeten alle ontwikkelteams het hoe dan ook sneller doen. En als je sneller levert, ontstaat er technische-schuld.
Er zijn drie benaderingen om af te rekenen met technische schulden:
Welke strategie of strategieën we ook gebruiken, het hangt af van onze organisatie en de situatie:
Waar het om gaat is om zo snel mogelijk af te rekenen, wacht niet te lang!
Mogelijk is dit een vertaling van Google Translate en kan fouten bevatten. Klik hier om mee te helpen met het verbeteren van vertalingen.