Tijd of kwaliteit

Eén van de eerste opdrachten die ik als developer bij Vollan heb uitgevoerd is het ontwikkelen van de agendamodule voor onze businesssoftware Clientbox. Daarmee wilden we direct inzicht in onze agenda en die van collega’s creëren, zonder steeds te hoeven switchen tussen Outlook en Clientbox. Ook zouden we zo makkelijk opdrachten kunnen inplannen of een afspraak aan een opdracht koppelen.

We hebben vooraf goed nagedacht en kwamen uiteindelijk samen tot een technische oplossing: we gaan in real-time de Outlook of Google-API uitlezen! Zo hoeven we de data niet dubbel op te slaan en allerlei agendafunctionaliteiten na te bouwen. De ideale oplossing, zo leek het.

De uitvoering

Alle logica omtrent evenementen zit al in Outlook, daar hoeven we dus niks mee te doen. In plaats daarvan, gaan we de gegevens uit Outlook (en Google) in realtime uitlezen en schrijven. Zo kunnen we de meeste tijd besteden aan het ontwikkelen van waarde toevoegende functionaliteiten – zoals het koppelen van een opdracht. Zo gezegd, zo gedaan. Na een aantal weken was de agendamodule klaar voor de eerste interne test.

Testen

Alles lijkt te kloppen en de basisfunctionaliteiten werken: je kan je evenementen in Clientbox bekijken, bewerken en nieuwe toevoegen. En al die wijzigingen zie je direct terug in Outlook.

Nu kan het echte werk beginnen: het bouwen van functionaliteiten. Maar al snel lopen we aan tegen een aantal serieuze problemen met de real-timekoppeling:

  • Je kan geen werkzaamheden plannen voor een medewerker die zijn Outlook- of Google-agenda nog niet heeft gekoppeld – of er helemaal geen een heeft.
  • We moeten de API ontzettend vaak uitlezen, maar daar zitten limieten op. Overschrijden wij die? Dan kan (tijdelijk) niemand de agenda in Clientbox gebruiken.
  • Wat als Google of Outlook een storing heeft? Of de API wijzigt? Met deze oplossing zijn wij erg afhankelijk.

Het wordt duidelijk dat deze opzet niet houdbaar is.

Keuzes maken

We staan nu voor de keuze om alle problemen maar te accepteren en eromheen proberen te werken, wetende dat we vroeg of laat concessies moeten doen in onze functionaliteiten vanwege technische beperkingen. Of we gooien een hoop werk (en dus uren en geld) weg en gaan terug naar de tekentafel en om een betere oplossing te bedenken.

Mensen die ons een beetje kennen zullen het vast al hebben geraden: we hebben voor de tweede optie gekozen. De eerste optie hadden we links- of rechtsom werkend kunnen krijgen, maar dat zou betekenen dat de kwaliteit niet optimaal zou zijn. Dat is dus geen basis waar we op kunnen bouwen.

In plaats van het realtime uitlezen hebben we een synchronisatielaag ingebouwd. De agenda is nu volledig te gebruiken zonder een externe provider (Google of Outlook). Die koppeling is extra. Ook deze oplossing bracht weer zijn eigen technische uitdagingen met zich mee, maar dat an sich is zijn eigen blog waardig dus dat laat ik nu even voor wat het is.

Het veranderen van technische oplossing heeft een hoop extra tijd gekost. En dat is een keuze die je niet makkelijk neemt als je alle uren uit eigen zak moet betalen. Toch is het de goede keuze geweest.

Blijven ontwikkelen

Niet lang nadat de agendamodule voor alle Clientbox gebruikers live is gegaan is, wilden we de eerste uitbreiding al ontwikkelen: het tonen van feest- en verlofdagen. Dat zou erg complex geweest zijn met de eerste oplossing. Onlangs hebben we dat nog verder uitgebreid door de feest- en verlofdagen ook te synchroniseren naar Outlook en Google – dat zou al helemaal onmogelijk geweest zijn.

We hadden een goede oplossing bedacht en zijn die gaan ontwikkelen. De oplossing bleek niet te werken en we moesten kiezen voor tijd of kwaliteit. De keuze voor kwaliteit was een zure appel, maar wierp gelukkig al snel zijn vruchten af. We zijn niet bang om terug te gaan naar de tekentafel en de bedachte oplossing te herzien als dat nodig is. Dat is nooit een makkelijke of leuke keuze om te maken, maar vaak een nodige.

Silvan Wakker
Technologie