OCLC

Periode
2018 - 2019
Rol
Java developer
Werkzaamheden
Ontwikkelaar in het US team, aanpassingen realiseren voor klanten in de VS.
Technologieën
Java, Angular, AngularJS, Spring, GWT, Swing, Perl, XSLT, MySQL, Git, Jenkins
Geleerd
Vooral geleerd dat ik niet nog jaren bezig wil zijn met aanpassingen in legacy code.

Hoe het begon

Eind 2018 werd ik door een recruiter benaderd die op zoek was naar Java ontwikkelaars voor OCLC, in Eelde. OCLC is een internationale organisatie die van alles regelt voor bibliotheken wereldwijd, met een hoofdkantoor in de VS. Zo doen ze heel veel op het gebied van automatisering in bibliotheken. Een van de manieren waarop OCLC aan software komt die bibliotheken kunnen gebruiken is door bedrijven op te kopen die dergelijke software hebben ontwikkeld. Het bedrijf HKA in Eelde/Paterswolde was één van de bedrijven die door OCLC zijn overgenomen om zo het eigendom van de ontwikkelde software te verkrijgen.

HKA heeft in 25 jaar het pakket "Wise" ontwikkeld dat in 75% van de Nederlandse openbare bibliotheken wordt gebruikt en OCLC zag wel mogelijkheden om dat pakket wereldwijd in bibliotheken te gaan implementeren. Nederlandse openbare bibliotheken zijn erg ver met het ontwikkelen van nieuwe aktiviteiten op verschillende gebieden, zoals het organiseren van exposities, ticketverkoop en allerlei andere nevenaktiviteiten en Wise ondersteunt al die nieuwe ontwikkelingen.

Om Wise internationaal te kunnen uitrollen moest er nog wel het een en ander aan het pakket gesleuteld worden. Zo was de hele interface bijvoorbeeld Nederlandstalig, met Nederlandse datum- en valuta-opmaak, en zijn er in andere landen natuurlijk andere systemen om mee te koppelen, denk bijvoorbeeld alleen maar aan betaalverkeer, waarvoor we in Nederland vaak iDeal gebruiken.

Daarom werd er fors geïnvesteerd in de organisatie en mensen. Het bedrijf verhuisde naar een nieuwe lokatie, met nieuwe kantoorinrichting, nieuwe computers en nieuwe mensen. Toen ik er solliciteerde was ongeveer de helft van de mensen korter dan 2 jaar in dienst, een heel dynamische organisatie dus. Ik had wel mijn twijfels bij de gebruikte technology stack, er waren nog wel veel en grote delen van de programmatuur in gebruik die met heel oude tools en technieken waren gebouwd. Maar ik zag dat ook wel als een uitdaging: er was genoeg programmatuur die vervangen moest worden door nieuwere en betere versies met meer up-to-date technologie.

Hoe het verliep

Ik kwam bij OCLC in het US-team, dat de implementaties bij klanten in de VS voorbereidde. Met een paar klanten waren er inmiddels contracten gesloten om Wise te gaan implementeren. Het team bestond uit zo'n 10 mensen, waarvan 7 in de VS en 3 in Nederland. We werkten met Scrum, in tweewekelijkse sprints. Elke dag hadden we maar 2 to 3 uur overlap qua werktijd, dus de standups, planning, demo en retrospectives deden we 's middags van 3 tot 5. Dat betekende dat er wel bijna elke middag een overleg stond gepland. De overleggen deden we in eerste instantie met Sysco Webex, waarbij we op een groot scherm de rest van het team in de VS zagen, maar het was erg moeilijk communiceren en vaak moeilijk elkaar te verstaan. Op een gegeven moment zijn we overgegaan naar Microsoft Teams met ieder een eigen koptelefoon met microfoon en daar werd het wel een stuk beter van. Toch vond ik dat het overleg op zo'n manier niet echt interactief wordt, er kan steeds maar 1 persoon tegelijk aan het woord zijn en je kan elkaar niet echt in de ogen kijken, het schept toch wel een afstand.

Heel erg leuk vond ik daarom ook dat we met het Nederlandse deel van het team een week naar de VS zijn geweest om daar met het hele team een week samen te kunnen werken. Dat gaf wel een andere sfeer, en we leerden elkaar wat beter kennen.

De IT

Zoals ik al zei was het hele systeem in het Nederlands gebouwd. Een deel van de Nederlandse termen in de code was inmiddels vertaalbaar gemaakt en in het Engels vertaald, maar heel veel ook nog niet. Er waren op honderden plekken hard gecodeerde teksten opgenomen, datum- en numerieke formaten vastgelegd en dat moest allemaal worden aangepast. "Even" de code doorlopen om zo de plekken op te sporen was niet echt een optie, de code bestond uit heel veel onderdelen zoals stored procedures in de database, gigantische perl scripts en xslt's, Java code in GWT, Swing en Spring, Javascript, AngularJS en PHP. Al die onderdelen waren min of meer aan elkaar geknoopt en het was niet heel duidelijk welke code wel en welke niet meer werd gebruikt.

Het kwam er dus neer dat de software werd geïnstalleerd en geconfigureerd en dat vervolgens werd getest of alles werkte en of het correct werkte. Omdat er veel configuratie nodig was om de onderdelen met elkaar te laten praten duurde het nogal een tijd voordat alle paden in de programmatuur doorgetest waren en werden er steeds weer nieuwe localisatie issues gevonden, waarvan de oorzaak dan in de kluwen software gevonden moest worden -die ook bijna niet te debuggen was- en vervolgens opgelost moest worden.

Daarnaast onwikkelden we ook nieuwe functionaliteit, zoals koppelingen naar betaal-providers, collectie-adviseurs en dergelijke. Dat gebeurde in jobs die we in Java schreven, en voor het configureren en beheer ervan werden de applicaties in GWT en Swing aangepast.

Al met al dus heel veel werk in legacy programmatuur, waarin elke aanpassing heel erg veel tijd en moeite kostte. Aan het eind van mijn tijd bij OCLC heb ik nog even in Angular (7) een paar onderdelen voor een nieuw te bouwen applicatie gemaakt en dat was echt wel een verademing om te doen.

Zo rond de zomer besloot ik dat het tijd werd te beslissen of ik na afloop van mijn jaarcontract (dat liep tot 1 december) nog langer zou willen blijven en ik was er al wel snel uit dat ik dat niet wilde. Hoewel ik wel snapte dat het werk nou eenmaal moest gebeuren en dat het voor implementaties op korte termijn nodig was om de oude code dan nog maar een keer aan te passen vond ik dat iemand anders dat maar moest gaan doen en dat ik ging kijken of ik ergens iets kon vinden dat meer aansloot bij wat ik leuk vind om te doen.

CJIB