Refactoring

Als jouw product een bottleneck voor groei wordt, doorontwikkeling te langzaam gaat of de UI outdated is dan is het tijd om eens na te denken over refactoring.

Refactoring is een normaal onderdeel van product ontwikkeling waarbij technical debt (achterstallig onderhoud) regelmatig wordt opgeschoond zodat jouw applicatie schaalbaar, veilig, gebruiksvriendelijk en makkelijk uitbreidbaar blijft. Mocht dit al tijden niet gebeurd zijn, dan kunnen wij je helpen om jouw software te moderniseren.

“Het GlobalOrange team heeft een enorme hoeveelheid expertise en kennis ingebracht en heeft onze verwachtingen ruimschoots overtroffen. In harmonie met ons in-house ontwikkelteam heeft dit ons gebracht waar we nu zijn met het platform.”

Larsa
Nick Rosier
Chief Product and Customer Officer, Gther / 2Heads

Wat is refactoring?

Refactoring (of refactoren) is het herstructureren van de code van een softwareproduct met als doel om de code te vereenvoudigen en de leesbaarheid te verbeteren. Het zorgt ervoor dat de code gemakkelijker te begrijpen en aan te passen is. Dit maakt jouw product meer future-proof.

Door het refactoren van een product verandert de werking van het product niet. Refactoring is, idealiter, een terugkerende stap in agile productontwikkeling. Want het resultaat van refactoring resulteert in een schonere, efficiëntere code die gemakkelijker te onderhouden en door te ontwikkelen is.

Larsa

Geplaagd door tech debt

Producten met te veel technical debt, oftewel achterstallig onderhoud, zijn moeilijker uitbreidbaar, niet veilig en minder prettig om mee te werken. Een indicatie kan zijn als het ontwikkelen van features of het doen van aanpassingen langer duurt dan je verwacht of de performance van je applicatie niet optimaal is en de schaalbaarheid te wensen overlaat. 

Technical debt is het gevolg van het nemen van shortcuts of het nemen van suboptimale beslissingen tijdens het ontwikkelen. Net als financiële schulden, hoopt technische schuld op en resulteert in steeds lagere productiviteit en hogere, onnodige complexiteit. Dit resulteert uiteraard in hogere kosten voor onderhoud en ontwikkeling en minder snelle groei omdat innovatie achter blijft.

Het is belangrijk dat de technical debt actief aangepakt zodat software ontwikkeling weer een katalysator voor groei wordt!

Voorkomen van technical debt

Een kritische blik op je processen kan helpen technical debt te voorkomen. Maak peer reviews en code-reviews standaard onderdeel van je proces en maak waar nodig gebruik van pair-programming. Tooling zoals SonarCloud zorgen ervoor dat je code continu wordt gecontroleerd en je voorziet van feedback. Er zijn verschillende mogelijkheden om de impact van refactoring op jouw code te controleren.

"De groei van jouw bedrijf mag niet worden beperkt door technical debt, zo simpel is dat."

Het meten van de impact van refactoring op de kwaliteit en productiviteit

Wanneer er een code refactoring plaatsvindt bij een van onze klanten dan is het fijn dat zij de impact hiervan op de kwaliteit en productiviteit kunnen meten. Alhoewel dit een uitdaging kan zijn, hebben wij verschillende benaderingen in een overzicht gezet die je kunt overwegen.

  • Als eerst kun je gebruik maken van code metrics tools om specifieke aspecten van code kwaliteit te meten, zoals cyclomatische complexiteit, code duplicatie, of code coverage. Door deze metingen voor en na het refactoren bij te houden, is het mogelijk om verbeteringen in de kwaliteit van de code te beoordelen.
  • Ook is het mogelijk om gebruik te maken van bug tracking. Hiermee kun je het aantal en de ernst van bugs die voor en na refactoring zijn gerapporteerd monitoren. Als het aantal bugs afneemt of de ernst ervan vermindert, wijst dit op een verbetering van de kwaliteit en betrouwbaarheid van de code.
  • Bij Code Review Feedback kun je feedback vragen van ontwikkelaars tijdens code overzichten na refactoring. Als de feedback positieve opmerkingen bevat over de leesbaarheid van de code, onderhoudbaarheid, en verminderde complexiteit, geeft dit aan dat de refactoring inspanningen de kwaliteit van de code positief beïnvloeden. Ook kun je de feedback gebruiken van gebruikers, zoals gerapporteerde problemen, verzoeken om klantenondersteuning of tevredenheidsenquêtes. Als de frequentie van gerapporteerde problemen afneemt of de gebruikerstevredenheid verbetert na refactoring, wijst dit op een positieve impact op de kwaliteit van de software.
  • Het meten van de ontwikkelingtijd die nodig is om nieuwe functies of bugfixes te implementeren. Als de tijd afneemt over iteraties of sprints na refactoring, suggereert dit een verbeterde productiviteit als gevolg van een schonere en beter onderhoudbare codebase. Ook kun je met het meten van prestatiecijfers, zoals responstijd, geheugengebruik, of CPU-gebruik, voor en na refactoring zien of refactoring de prestaties en efficiëntie van de code positief heeft beïnvloed.  

Vergeet niet dat deze metingen moeten worden bijgehouden over een voldoende lange periode om rekening te houden met eventuele variaties of externe factoren. Het is ook belangrijk om een basislijn vast te stellen door relevante gegevens vast te leggen voordat het refactoringsproces begint, zodat een zinvolle vergelijking mogelijk is.

Larsa

Refactoring Guru

Martin Fowler, refactoring guru pur sang, schreef hét boek over refactoring. Het boek van Martin Fowler beschrijft het proces van Refactoring, de verschillende methoden en het documenteren van transformaties. Het boek van deze refactoring guru is een ‘must read’ als je plannen hebt om zelf de refactoring te gaan organiseren.

TIP: je kan de refactoring ook door ons laten doen aangezien we alle ins en outs inmiddels wel kennen 😉

Larsa

Maak een einde aan jouw IT zorgen

In de loop der jaren hebben we vele klanten geholpen om hun product te vernieuwen. Wij houden daarbij ook rekening met andere prioriteiten op dat moment. Het kan dus zijn dat een fase van refactoring samenvalt met de oplevering van een nieuwe release. In het refactoring plan wordt rekening gehouden met jouw korte en lange termijn doelen. Wij zorgen ervoor dat jouw IT-problemen verdwijnen en in de toekomst voorkomen worden. Daarmee stellen wij je in staat om jouw ambities te realiseren.

Wij garanderen je gemoedsrust door jouw product op de juiste manier te bouwen, zodat je je kunt richten op de groei van jouw bedrijf.

Factsheet: Technical debt & Refactoring

  • Hidden
  • Hidden
  • Hidden
  • Hidden
  • Hidden
  • Hidden
  • Hidden
  • Hidden
  • Hidden
  • Hidden
  • Hidden
  • Hidden

Bekijk een aantal van onze projecten

De voor- en nadelen van refactoring op lange en korte termijn

Refactoring speelt een belangrijke rol in de ontwikkeling van software en biedt zowel op korte als lange termijn voordelen maar ook enkele uitdagingen. 

Op korte termijn zijn er twee voordelen:

  • Verbeterde leesbaarheid van de code: Refactoring maakt de codebase leesbaarder en beter te begrijpen, wat helpt bij het sneller oplossen van problemen tijdens de ontwikkeling.
  • Verbeterde onderhoudbaarheid: Refactoring elimineert dubbele code, verbetert modulariteit, en vereenvoudigt complexe code structuren, waardoor de codebase gemakkelijker te onderhouden en aan te passen is.

De voordelen op lange termijn:

  • Code kwaliteit en stabiliteit: Refactoring verbetert de kwaliteit van de code door technical debt op te lossen, code smells te analyseren en best practices te implementeren. Dit resulteert in een stabieler en betrouwbaarder softwareproduct.
  • Schaalbaarheid en performance: Refactoring resulteert in een geoptimaliseerde codebase. Dit draagt bij aan schaalbaarheid en performance, maar helpt vooral bij het makkelijker proactief identificeren en oplossen van performance problemen.
  • Aanpassingsvermogen aan verandering: Refactoring maakt de codebase flexibeler en aanpasbaar aan veranderende eisen en technologische vooruitgang, waardoor nieuwe functies gemakkelijker kunnen worden geïntegreerd en de impact van toekomstige veranderingen wordt beperkt.

De nadelen op korte termijn:

  • Refactoring kan de ontwikkeling tijdelijk vertragen, omdat het tijd en moeite kost. Het kan gevolgen hebben voor korte-termijn deadlines of deliverables. Daar staat tegenover dat toekomstige ontwikkelingen dus wel sneller gaan.
  • Risico op bugs: Refactoring kan, indien niet goed uitgevoerd, nieuwe bugs of onbedoelde neveneffecten introduceren. Dit risico neemt toe met de complexiteit van de codebase en de omvang van de aangebrachte wijzigingen. Om dit risico te mitigeren is het inbouwen van unit-tests in de code belangrijk.

 

Belangrijk bij refactoring is het management van verwachtingen: stakeholders kunnen onmiddellijk rendement verwachten van de investering in refactoring. Goede communicatie en het managen van verwachtingen zijn belangrijk om ervoor te zorgen dat belanghebbenden de voordelen op lange termijn en mogelijke afwegingen begrijpen.

Awards voor groei en innovatie

In vijf opeenvolgende jaren won GlobalOrange zowel de FD Gazellen Award als de Deloitte Fast50 Award voor snelst groeiende software bedrijven in Nederland. Ook heeft Deloitte GlobalOrange bekroond met de Most Sustainable Grower Award. Daarnaast zijn we opgenomen in de Red Herring Europe 100 van de innovatiefste software bedrijven in Europa.

Dagblad NRC riep GlobalOrange 3 maal uit tot een van de beste tien werkgevers van Nederland.

Larsa

Refactoring, doorontwikkeling en beheer

De SCA groep is wereldwijd marktleider op het gebied van duurzame persoonlijke verzorging, hygiëne- en bosproducten. Het bedrijf verkoopt producten in ongeveer honderd landen via sterke merken zoals TENA, Tork, Lotus, Libresse en Tempo. GlobalOrange is de vaste technologiepartner van SCA in alle applicatieontwikkeling en -beheer voor de consultapplicatie.

In een korte transitie van een maand is door GlobalOrange kennis opgebouwd en het applicatiebeheer en de doorontwikkeling met succes overgenomen. Middels een plan voor refactoring is de applicatie op een aantal kritische punten verbeterd. De borging van de veiligheid van patiëntgegevens is van groot belang. Security is daarom een integraal onderdeel van de ontwikkelstrategie; zowel in ontwerp, ontwikkeling en testing. Een combinatie van Lean en Agile voor doorontwikkeling is de basis voor innovatie van het consult platform. Aangezien inmiddels 500 apotheken zijn aangesloten hebben wijzigingen ook meteen een grote impact.

Larsa

“We hebben in GlobalOrange een betrouwbare technologie partner gevonden. De Agile Scrum aanpak en plezierige samenwerking heeft een mooi resultaat tot gevolg; er is binnen budget en tijd, meer opgeleverd dan gepland. Met alle vertrouwen dat de samenwerking komend jaar even plezierig zal verlopen als tot nu toe gebeurt!”

Larsa
Janneke van Marle
Head of Education Service University of Amsterdam

Vrijblijvend gesprek over refactoring?

Plan een eerste kennismaking

Je leert waar je op moet letten bij factoring, wat de kosten en tijdslijnen ongeveer zijn en hoe je refactoring echt succesvol maakt. We hebben inmiddels vele applicaties gemoderniseerd en weten wat wel en niet werkt.

– Wat zijn de meest gemaakte fouten?
– Wat zijn ongeveer de investeringen?
– Wat moet je vooraf weten?