Technical debt kan voor organisaties een forse belemmering zijn bij het bereiken van hun doelen. Het is een term die bij softwareontwikkeling wordt gebruikt en is te omschrijven als het resultaat van verkeerde beslissingen in het verleden, vaak vanwege het prioriteren van een snelle oplevering ten opzichte van de perfecte code. Soms ontstaat technical debt ook omdat best practices van vroeger worden achterhaald. Technical debt is niet per definitie slecht. Soms is het snel uitbrengen van een nieuwe feature belangrijker dan de onderhoudbaarheid van de code.
Wendbaarheid
De prijs van technical debt betaal je altijd in tijd. Wanneer organisaties onvoldoende tijd besteden aan het wegwerken van technical debt kan die prijs zo hoog worden dat het doorontwikkelen van software onredelijk lang gaat duren. Dit heeft tot gevolg dat organisaties minder wendbaar worden. Ze kunnen hierdoor minder snel reageren op veranderingen in de markt, waardoor ze achterop raken ten opzichte van de concurrentie. Het grote probleem van technical debt is dat het vaak onzichtbaar is. Developers kunnen vaak wel aangeven dat de technical debt bestaat, maar vinden het moeilijk om er een echte kosten-/batenanalyse van te maken. De wall of technical debt is een hulpmiddel dat kan helpen om deze analyse te maken.
De wall of technical debt is een idee van Mattias Verraes.
Het doel van de wall of technical debt is:
- Technical debt visueel maken
- Een kostenplaatje berekenen voor ieder stukje technical debt
Het is een verrassend simpel concept waarbij je een bord gebruikt waarop iedereen sticky notes kan plakken met zaken waardoor tijd verloren is gegaan. Het hoeven niet per se zaken te zijn die direct gerelateerd zijn aan code. Alles wat ervoor zorgde dat jij als developer vertraging opliep is valide: gebrek aan documentatie, incomplete tests of een vreemde bug die alleen voorkomt op 31 februari.
Stippen op sticky notes
Daarnaast is het van belang te noteren hoe veel tijd er verloren is gegaan. Dit betreft tijd die besteed had kunnen worden aan het implementeren van andere software als dit stukje technical debt niet op je pad was beland. Verraes benadrukt in zijn uitleg dat het belangrijk is om als team een eigen meeteenheid af te spreken voor tijd. Een enkele stip op de sticky note zou bijvoorbeeld kunnen staan voor een halve dag verloren tijd. Zo wordt ieder stukje technical debt visueel.
Naast een omschrijving heeft het nu ook een kostprijs. Deze kostprijs zou interessant moeten zijn voor iedereen binnen een organisatie die belang heeft bij snelle softwareontwikkeling. Het oplossen van technical debt heeft een concrete opbrengst in de vorm van tijd. Teamgenoten die tijd verliezen aan dezelfde issues kunnen hun stippen toevoegen aan bestaande sticky notes.
Meten van verloren tijd maakt technical debt objectief
Het belangrijkste voordeel van het meten van verloren tijd is dat het technical debt objectief maakt. Een stuk software kan gebouwd zijn op de meest vreselijke manier, wat doorontwikkelen bemoeilijkt. Maar als er praktisch nooit iets aan hoeft te worden veranderd, is het dan wel daadwerkelijk technical debt? Dergelijke zaken krijgen terecht geen aandacht op de wall, omdat ze niet relevant zijn.
De andere helft van de formule
Met het berekenen van de opbrengsten hebben we echter nog maar de helft van de formule opgelost. De andere helft betreft het schatten van de kosten voor het oplossen van technical debt. Door een inschatting te maken van de inspanning die het kost, wordt het mogelijk een kosten-/batenanalyse te maken. Het inschatten van wijzigingen aan software is nooit exacte wetenschap, dus helemaal kloppend zal je schatting niet zijn. Toch wordt het evident dat het oplossen van bepaalde technical debt makkelijk een investering rechtvaardigt:
De afgelopen vier weken hebben X en Y gewerkt aan een nieuwe feature voor hun organisatie. Daarbij liepen zij tegen technical debt aan. Na vier weken staan er acht stippen (iedere stip is een halve dag werk) op de sticky note. Tijdens het ontwikkelen van de feature is er dus vier dagen aan tijd verloren gegaan. X heeft geschat dat het oplossen van de technical debt ongeveer twee dagen in beslag gaat nemen. X en Y leggen de situatie voor aan de product owner. Zij willen graag weten of op de roadmap nog veel werk gepland staat in hetzelfde domein als waar de technical debt gevonden is. De product owner geeft aan dat dit het geval is.
Een simpele berekening leert hen dat de investering zich snel terug zal betalen:
- Verwacht werk in domein: 12 weken
- Verwacht tijdverlies: 24 stippen (12 dagen)
- Verwachte tijdsinvestering oplossing: 2 dagen
12 dagen - 2 dagen = 10 dagen aan tijd gewonnen.
Een impact/effort-matrix kan helpen om de prioriteit van de technicaldebt-issues te bepalen.
BHet is gereedschap om mee te overtuigen van de noodzaak om technical debt weg te werken
ovenstaand voorbeeld is een illustratie van hoe technical debt door de wall of technical debt onderhandelbaar wordt. Het wordt op deze manier makkelijk om technicaldebt-issues op waarde te schatten. In zijn algemeenheid zijn issues die veel impact hebben maar relatief weinig moeite kosten de beste kandidaten om op te lossen (zie impact/effort-matrix). Product owners of andere stakeholders binnen een organisatie kunnen op deze manier kennisnemen van de belemmeringen die developers hebben tijdens de uitvoering van hun werk. Dit is de verantwoordelijkheid van de developers zelf. Als professional is het je verantwoordelijkheid om de juiste keuzes te maken voor de organisatie waarvoor je werkt. Zowel op de korte als lange termijn. De wall of technical debt geeft je een stuk gereedschap om belanghebbenden te overtuigen van de noodzaak om technical debt weg te werken.
Bij Tweakers hebben we vlak voor de lockdown in maart besloten een wall of technical debt te introduceren. Nog voordat we daadwerkelijk een bord hadden ingericht moesten we plotseling allemaal gaan thuiswerken. In eerste instantie hebben we een digitale variant gemaakt in een Google Sheet. Het bord verliest dan echter een belangrijke functie: de zichtbaarheid. Op dit moment werken we aan een verbeterde digitale variant die we kunnen inzetten tot we weer veilig naar het kantoor kunnen.
Digitale variant van de wall of tech debt bij Tweakers. Nog volop in ontwikkeling.
Feedback
Dit artikel is een van meerdere die we door ontwikkelaars, voor softwareontwikkelaars willen publiceren. Inhoudelijk kun je onder dit artikel reageren, maar heb je andere feedback op dit artikel of ideeën over komende artikelen, dan kun je die in dit topic achterlaten.