Tom Schenkenberg
2 mei 2018
Bent u al toe aan technische ‘schuldhulpverlening’ voor uw bedrijfssoftware? Bij de ontwikkeling van bijna alle software wordt een technische schuld opgebouwd, vooral om snel tot resultaten te komen. Dat hoeft niet erg te zijn, als je er maar goed en bewust mee omgaat. Want net als bij financiële schuld moet je technische schulden wel aflossen om te voorkomen dat de kosten steeds hoger worden. En om te voorkomen dat de schuld onbetaalbaar wordt.
Als je iets wilt kopen, maar het geld niet hebt, kun je een lening nemen. Voor sommige zaken kan dat heel verantwoord zijn. Het kan zelfs een slimme investering zijn, die je royaal terugverdient. Als je er maar bewust voor kiest en goed weet wat de consequenties zijn. Bij technische schuld (technical debt) is dat precies hetzelfde. Die schuld ontstaat bij het uitstellen van werk in softwareontwikkeling. Het is een ‘schuld’ omdat het werk later toch echt moet worden uitgevoerd.
De rente van snelheid maken
Bij softwareontwikkeling kunnen software engineers snelheid maken door (tijdelijk) bepaalde bochten af te snijden. Denk aan het achterwege laten van bepaalde tests of validatieregels. Of door er eventjes iets in te ‘hacken’, in plaats van het netjes te integreren in de softwarearchitectuur. Of hele stukken code kopiëren en een regel aanpassen om voor een klant een uitzondering te realiseren, in plaats van die uitzondering netjes als configuratieoptie in te bouwen. Dit zijn hele kostbare beslissingen die je als software engineer kunt nemen, onder druk van snel op te leveren resultaat.
De vergelijking met financiële schuld gaat nog verder. Ook bij technische schuld betaal je ‘rente’, zolang de schuld niet is afgelost. Bij softwareontwikkeling is dat de last die je hebt van ontbrekende onderdelen die ‘even’ achterwege zijn gelaten om snelheid te maken. Bij elke verandering of toevoeging aan de software kom je die technische schuld weer tegen. En net als financiële rente stapelt ook deze rente op. De last wordt ook steeds groter als er bovenop de technische schulden weer verder wordt gebouwd.
Steeds meer technische schuldhulpverlening
Er komt een punt waarbij de schuldenlast te groot wordt en software grondig moet worden aangepakt om de opgebouwde technische schuld op te lossen. Dit punt bereik je als je merkt dat je alleen maar bezig bent om de bestaande software werkend te houden. Je komt niet meer toe aan veranderingen of uitbreiding. Je draagkracht gaat dan dus op aan het betalen van rente.
De hulp van onze software engineers wordt de laatste tijd steeds vaker ingeroepen voor deze technische schuldhulpverlening. Dat zijn vaak broodnodige, maar lastige trajecten. Inlossen van technische schuld betekent investeringen doen, zonder dat de opdrachtgever merkt dat er iets verandert aan zijn applicatie. Er komen dan geen nieuwe functies bij waar gebruikers iets aan hebben. De applicatie wordt wel weer gezond. Daarna komt er weer kapitaal vrij – die eerder opging aan rente – om de applicatie te veranderen of uit te breiden.
Bewust kiezen voor schuld
Op zich is het opbouwen van een beetje technische schuld bij softwareontwikkeling een normale gang van zaken, zeker bij nieuwbouwprojecten. Het is alleen wel cruciaal dat dit heel bewust en expliciet gebeurt. En dat gebeurt vaak niet! Onze software engineers nemen opdrachtgevers daar bewust in mee, maar liever vermijden we de opbouw van technische schuld helemaal. De keuze wel maken, moet geen autonome beslissing zijn van de software engineer, maar een die samen met de opdrachtgever wordt genomen.
Het is namelijk vooral een business afweging en geen technische. De zakelijke afweging is om werk vooruit te schuiven om eerder bedrijfsresultaten te behalen. Maar wel in de wetenschap dat het inhalen van dat werk later meer geld kost. En hoe later dat wordt, hoe hoger de kosten. Daar wordt op het beslismoment vaak niet bij stilgestaan. Dan telt de snelheid.
Elke applicatie heeft verborgen schuld
Bewust en expliciet keuzes maken, betekent vooral benoemen en kwantificeren van ‘de schuld’. Vaak in mandagen werk die nodig zijn om afgesneden bochten weer recht te trekken. Tijdens het ontwikkelen van software is het bijhouden van een ‘technische schuldenlijst’ een must bij elk project. Let eens op of dat bij uw softwareontwikkeling ook gebeurt.
Het is niet alleen een must, maar ook een luxe om een actuele en volledige lijst te hebben van de technische schuld in een applicatie. Vrijwel elke applicatie draagt die met zich mee en zonder complete lijst is de uitdaging vooral om de schulden boven water te krijgen. Om ze daarna zoveel mogelijk op te lossen. Zodat de schuld in ieder geval niet weer groter wordt. Met onze digitale schuldhulpverlening helpen onze software engineers applicaties er weer bovenop.
Beta software
Houd ook bij beta software rekening met de technische schuld. Want je ziet het vaak, vooral bij software-as-a-service (SAAS) bedrijven: dat icoontje naast productnaam of logo met het etiketje: Beta. Dit betekent eigenlijk dat de software nog helemaal niet af is. Er ontbreken nog belangrijke zaken of onderdelen zijn niet goed getest. Er is dan hoogstwaarschijnlijk sprake van een flinke technische schuldenlijst.
Dit zijn hele welbewuste beslissingen van die softwarebedrijven. Zij kunnen heel vroeg hun product in handen geven van gebruikers. En die helpen mee om het product beter te maken. Ondertussen hebben softwareontwikkelaars even de tijd om de broncode op te schonen en de technische schuld weg te werken. Je kunt daarvoor kiezen, maar doe het bewust.
Altijd aflossen
Je zou als organisatie ook kunnen besluiten om de schuld niet af te lossen. Bijvoorbeeld omdat de rente ‘lijkt mee te vallen’. Maar hoe goed is uw zicht op de schuldenlast en de consequenties? De praktijk leert dat de echte pijn van technische schuld pas echt gevoeld wordt als een applicatie moet worden aangepast. Dan zijn de eerder afgesneden bochten vaak al vergeten. En dan komt de verbazing dat simpele aanpassingen opeens heel complex zijn en ‘veel tijd’ kosten. Mijn advies is daarom: aflossen die schuld!