Hoe plan je al onze treinen in heel Nederland? Met vierhonderd planners en een complexe plannings- en toewijzingsapplicatie, Donna. Van personeel tot materieel, planning op knooppunten en natuurlijk het spoor zelf. Donna is onmisbaar.
Ruim honderd collega’s werken aan de applicatie. Een van die teams is Conflictsignalering. Hun software berekent waar elke trein zal zijn en koppelt direct terug naar de planner of een spoor dubbel bezet gaat zijn. De developers in het team herschrijven de applicatie zodat de planners straks op tienden van minuten eventuele conflicten tussen treinen kunnen zien.
Want met een verwachte reizigersgroei van dertig procent in de komende jaren innoveert NS op alle vlakken. Meer sporen leggen gaat niet, en de perrons verlengen kan maar beperkt. De oplossing? Meer treinen over hetzelfde spoornetwerk laten rijden.
De nieuwe applicatie berekent vijftigduizend treinbewegingen over zevenduizend kilometer spoor, opgedeeld in zestienduizend secties. Bij elkaar zijn dat miljoenen bezettingen van secties waarvoor de software beoordeelt of ze onderling overlappen en dus mogelijk conflicteren. Al die resultaten komen visueel samen op het scherm van de planners. ‘Het zijn best complexe puzzels die opgelost moeten worden qua software’, vertelt één van de developers.
Om dat op te vangen zet het team veel nieuwe technieken in. Zo werken ze met een container platform en een in-memory database die de snelle berekeningen kan realiseren. ‘Dat is stoer, want je zit met je team met nieuwe technieken te worstelen en je voelt dat je on top of things bent. Vooral omdat we van best een oude applicatie komen en nu heel erg aan het vernieuwen zijn.’
Dat ‘best oud’ klopt, want Donna is al vijftien jaar oud. De van oudsher monoliet ontwikkelt zich nu steeds verder in deelapplicaties en microservices, zodat de teams sneller nieuwe versies van de applicatie kunnen releasen. ‘Je kijkt je ogen uit als je de oude code ziet. Maar er is zoveel enthousiasme om te vernieuwen, daar krijg ik energie van. Het gaat om een miljoen regels code, dat kan je niet even in een week herschrijven.’
Net als steeds meer teams bij NS, werkt ook Conflictsignalering in een DevOps team. ‘Wij zijn als team helemaal verantwoordelijk voor dit deel van de applicatie, van development tot deployment. ‘We zijn veel aan het pionieren, dus kijken we vaak met elkaar mee. Wat kan er nog beter, elkaars code reviewen. Iedereen heeft zijn eigen specialiteit en is ook bereid elkaar te helpen.
Die teamspirit was ook de basis van het succes van het project: ‘We hebben eerst een half jaar samen hard gewerkt aan alle berekeningen van de deelapplicatie, los van de hoofdapplicatie. Toen het tijd was om te kijken of onze applicatie ook echt integreerde met de monoliet was dat wel even spannend! Als je dan met je team de resultaten van al die berekeningen functioneel op het scherm van de planner ziet verschijnen, dat is een geweldig gevoel. Toen hebben we wel even met zijn allen staan juichen.’
Doris
Doris Aafjes zit in haar eerste jaar van het IT-traineeship bij NS. Ze werkt aan een innovatief systeem binnen de applicatie Donna dat planners helpt sneller te werken. "Ik zit dit jaar in deze functie, maar volgend jaar in een andere. Juist dat leek me zo leuk aan het traineeship voordat ik begon: dat ik de ruimte krijg om te kijken en uit te zoeken wat ik uiteindelijk wil doen."
Dirk
Dirk van Haeringen werkt al vier jaar bij NS als software developer. “Onze software zorgt ervoor dat collega’s bij NS snel de planning weer kunnen aanpassen en problemen in de dienstregeling kunnen oplossen, waardoor je hier als reiziger zo min mogelijk last van hebt.” Dirk heeft het over de prijswinnende applicatie BAM (Bijsturings Applicatie Materieel), een innovatief systeem waarop treinschema’s snel worden aangepast.
Cindy
Hoe is het om te werken als developer bij NS? Zijn het eenzame nerds in een kelder of is dit beroep toch socialer dan je eerst zou denken? In deze aflevering duiken we achter de computer met Cindy.
Wij, en derde partijen, maken op onze website gebruik van cookies. Wij gebruiken cookies om ervoor te zorgen dat onze website goed functioneert, om jouw voorkeuren op te slaan, om inzicht te verkrijgen in bezoekersgedrag, maar ook voor marketing en social media doeleinden (laten zien van gepersonaliseerde advertenties). Door op ‘Accepteren’ te klikken, ga je akkoord met het gebruik van alle cookies. In onze Cookieverklaring kun je meer lezen over de cookies die wij gebruiken en kun je jouw voorkeuren opslaan of wijzigen. Door ‘Weigeren’ te klikken ga je alleen akkoord met het gebruik van functionele cookies.