Technical Debt

"# TODO: Fix code..." - 12 years ago

Wat is Technical Debt (TD)?

  • Korte termijnsoplossingen
  • Quickfix / Fix later
  • Slordigheid

Kenmerken

  • Onzichtbaar
  • Kosten moeilijk in te schatten
  • Kunnen erger worden in de toekomst
  • Soms met deadline

Categorieën (4/15)

  • Design debt
    • Coupling
    • Code complexity
  • Architecture debt
    • Modularity
  • Documentation debt
    • Ontbreekt
    • Incompleet
    • Outdated
  • Test debt
    • Geen tests
    • Skips

Categorieën (8/15)

  • Code debt
    • Slechte naming schemes
    • Bad practices
  • Defect debt
    • Known bugs
  • Requirements debt
    • Verkeerde implementatie
    • Deels geimplementeerd
  • Infrastructure debt
    • Updates/upgrades

Categorieën (12/15)

  • People debt
    • Kennisdeling
    • Toegang tot resources
  • Test automation debt
    • Opzetten CI
  • Process debt
    • Inefficienties
    • Outdated
  • Build debt
    • Deploy
    • Dependencies resolven

Categorieën (15/15)

  • Service debt
    • Deprecated API
  • Usability debt
    • "adjust later"
  • Versioning debt
    • Merge conflicts

Categorieën (16/16)

  • Service debt
    • Deprecated API
  • Usability debt
    • "adjust later"
  • Versioning debt
    • Merge conflicts
  • Integrity debt
    • Verkeerde waardes in DB
    • Legacy columns

Wat is de waarde van de TD?

  • Exact de waarde bepalen is niet mogelijk
  • Kijken naar de debt analogie...

Debt

  • Beginschuld
  • Rente
  • Aflossingsdatum

Debt

Totale schuld = beginschuld * rente ^ (tijd tot aflossing)

Debt (uitbreiding)

Totale schuld = beginschuld * rente ^ (tijd tot aflossing)

+ kans op nieuwe TDs * totale schuld nieuwe TDs

Debt (uitbreiding)

Totale schuld = beginschuld * rente ^ (tijd tot aflossing)

+ kans op nieuwe TDs * totale schuld nieuwe TDs

Dus altijd voorkomen?

  • Nee, later aflossen kan soms handig zijn
  • Hangt af van de situatie
  • Vermijd:
    • hoge schulden
    • schulden met veel rente
    • schulden die nieuwe schulden genereren

Kunnen we TD automatisch opsporen?

  • Papers zeggen nee, maar...
    • "Smelly code" geeft hints
    • Self-admitted techical debt (SATD) geeft overzicht

Idee:

  • Bijhouden SATDs via format:
    • # TODO (<priority>): ...
  • Integratie met Jira
    • Aanmaken wanneer comment is toegevoegd in git
    • Done wanneer comment is verwijderd in git
    • Committer, datum, comment, file in description

To be continued... (maybe)

Vragen?