Technical Debt

Het onderwerp van mijn Innovation Talk dit keer was Technical Debt. Dit is een verzamelnaam voor de kosten (tijd, moeite, geld) van de taken die je als developer voor je uitschuift, soms met goeie reden, soms niet.

In eerste instantie had ik een ander onderwerp in gedachten: Psychology of Programming. Ik kwam er laatst achter dat het een veld was waar onderzoek in wordt gedaan. Ik was benieuwd naar wat de wetenschap daarover te zeggen had en of bepaalde heuristieken en best practices van code schrijven, testen of debuggen wetenschappelijk waren onderbouwd, of juist waren ontkracht. Helaas was hier weinig interessants over te vinden.

Toen stuitte ik op Technical Debt, waar veel wetenschappelijke artikelen over te vinden waren. De meeste papers die ik tegen kwam deden pogingen modellen te definiëren om hiermee de waarde van de debt of de prioriteit van de taak te kwantificeren.

De belangrijkste conclusies die naar voren zijn gekomen in de Innovation Talk zijn de volgende:

  • Technical debt is vaak onzichtbaar, waardoor het lastig te bepalen is hoeveel debt er in een project aanwezig is. Het bewust worden van de debts die worden gecreëerd bij keuzes, gaat dat tegen. Wanneer het zichtbaar is kun je dit meewegen in keuzes en beslissingen maken waar je later profijt van hebt. In de slides heb ik 16 categorieën opgenoemd.
  • Naast het zichtbaar maken is het ook van belang dat de debts vastgelegd worden. Een handige manier om dat te doen is het aanmaken van een ticket in de backlog, met een referentie naar de code en uitleg. In de backlog kunnen ze dan samen met de andere tickets gesorteerd worden op prioriteit. Een TODO-comment in de code kan handig zijn om andere developers erop te wijzen dat het codefragment tijdelijk is en een candidate suspect is in het geval dat er bugs in de buurt van het codefragment ontstaan.
  • Sommige vormen van technical debt zijn minder erg dan anderen. Om hier onderscheid in te maken is het handig om de analogie van schuld verder door te trekken, met een startschuld, rente over tijd (extra moeite die gedaan moet worden, bijv. terugzoeken van documenten/e-mails) en eventueel een deadline om de schuld af te lossen (denk aan bijv. livegang). In de slides staat een algemene formule. Net als een financiële schuld is het als je moet prioriteren het handigst om grote schulden en schulden met een hoge rente het eerst weg te werken, aangezien je anders over de lange termijn veel meer kosten kwijt ben aan rente.

Meer informatie is terug te vinden in de slides: