Bij IMPRES houden we van nieuwe technologie. Wij werken het liefst met de nieuwste API’s en frameworks. De IT-wereld gaat gigantisch hard en wij willen voorop lopen in online ontwikkelingen. Daarom surfen wij constant op de innovatiegolf. Bij elk nieuw project krijgen we weer de kans om te analyseren wat de mogelijkheden zijn om de allerbeste oplossing te creëren voor onze partners.

Helaas is er ook een keerzijde. De projecten blijven vaak achter waar de golf verder gaat. Af en toe kom je wel terug bij een project voor een kleine aanpassing of een kleine feature. Maar dit is eigenlijk nooit genoeg om het project mee te krijgen met de nieuwste standaard. Natuurlijk is dit ook niet altijd het beste en gaat onze voorkeur altijd uit naar een LTS-release. Naar verloop van tijd begint een project steeds meer te krijgen wat wij noemen “legacy”.

Legacy: oude techniek met veel waarde

Een legacyproject is iets waar elke ontwikkelaar van huivert: verouderde technieken, frameworks en API’s die niet meer ondersteund worden. Een nachtmerrie! Of toch niet? Als wij een legacyproject goed bekijken dan is het misschien een beetje stoffig op technisch front, maar het levert wel waarde. Waarde voor onze partner, waar wij ooit in samenwerking goed over na hebben gedacht. Waarde die een belangrijk probleem oplost, bijvoorbeeld bij het automatiseren van een bedrijfsproces of het helpen van mensen bij het doen van hun zorgverzekeringsaanvraag. Een verouderde techniek zou hier geen eer aan af moeten doen. En om die reden vinden wij bij IMPRES dat het werken aan legacyprojecten één van de mooiste kunsten is die er is.

Van legacy naar refactoring

Hoe houden we legacyprojecten leuk?

  1. Mindset is key. Het is belangrijk om de waarde in te zien van het project. Het feit dat dit project een belangrijk probleem oplost voor onze partners is goud waard. Wij ontwikkelaars streven ernaar om de problemen van onze partners op te lossen.
  2. De boyscout rule.
Laat de plek waar je geweest bent altijd netter achter dan je hem gevonden hebt.

Voor onze code betekent dit: refactoring. Wanneer je code tegenkomt die beter kan, maak het dan beter! Alle kleine verbeteringen zullen samen bijdragen aan betere codebase.

Ten slotte willen wij benadrukken hoe belangrijk het is om kleine wijzigingen te blijven doen. In plaats van hele grote aanpassingen doorvoeren, is het beter om het probleem op te breken in kleinere behapbare brokken en deze één voor één aan te pakken. En zo komen we uit bij een techniek die ik ooit heb opgepikt bij een meetup van de knappe koppen van de Nederlandse online marktleider in mode, wonen en kids, Wehkamp: De Pacman-strategie.

 

De Pacman-strategie

Je kent hem wel, dat gele mannetje die alle kleine balletjes stuk voor stuk op eet. De Pacman-strategie houdt in dat je je project opbreekt in kleine stukjes en deze losmaakt van je monoliet. Wehkamp heeft dit gedaan door over te stappen naar een Microservice-architectuur. Wij doen het nét wat anders maar het idee blijft hetzelfde.

Ontmoet Bandenhotel: ons eigen SaaS-product

Bandenhotel.net is ons eigen SaaS product. Een webinterface die gemak biedt in het beheren van de bandenvoorraad bij bandenopslagbedrijven. Dit hebben wij 10 jaar geleden gerealiseerd op Zend framework. Een échte legacyknaller dus! Met 80 klanten, 500.000 transacties en 300 aangesloten garages en dealers biedt dit project een grote meerwaarde voor onze partners. Tien jaar lang werken deze mensen al met deze applicatie én met deze interface. Dus wie zijn wij om dit zomaar op de schop te gooien? Wij erkennen de waarde van dit legacyproject. Dus hoe kunnen we dit Pacmannend doorontwikkelen? Het liefst met onze favoriete techniek natuurlijk: Laravel.

De bedoeling is om Bandenhotel.net feature voor feature over te zetten naar Laravel zodat het onderhouden maar ook het bouwen van nieuwe features makkelijker wordt! Tijdens de migratie houden we de applicatie werkbaar voor de klant én hebben we de mogelijkheid om legacy te voorkomen.

Genoeg gebabbeld

Ben jij benieuwd hoe we Pacman hebben toegepast bij Bandenhotel.net? In mijn volgende techblog ga ik dieper in op de technische details van de migratie van Bandenhotel naar Laravel! Stay tuned!