Onze mensen in de spotlight: Sjaak Pierik Onze mensen in de spotlight: Bonneke de Waard Onze mensen in de spotlight: Sebastian Holzapfel Onze mensen in de spotlight: Bert Homan Onze mensen in de spotlight: Aniek Ignatius Next Generation met Doctor Who

Eén van mijn jeugdhelden is Doctor Who. Deze sympathieke avonturier beleefde spannende avonturen in tijd en ruimte om de mensheid voor allerhande kwaad te behoeden. En nog steeds, want momenteel zendt de BBC alweer het 38ste seizoen uit van de oudste nog lopende TV serie ter wereld. Al heeft de Doctor wel wat veranderingen ondergaan en is hij inmiddels een tijdreizigster geworden.

Het fenomeen van tijdreizen is een populair onderwerp in fictie. Eén van de eerste boeken hierover was The Timemachine van H.G. Wells. Denk ook aan films als de Back to the Future reeks, 12 Monkeys, Groundhog Day en de verschillende iteraties van Star Trek. En wie is er niet groot geworden met de Teletijdmachine van professor Barabas?

Nu biedt het leven van een software ontwikkelaar vele uitdagingen, maar degene die de gemiddelde tijdreiziger het hoofd moet bieden ken ik dan weer niet. Alhoewel?

Ik houd mij vooral bezig met het ontwikkelen, en aanpassen van, bedrijfskritische business applicaties. De afgelopen tijd heb ik verschillende leuke opdrachten voor Ahold mogen uitvoeren op het gebied van Store Replenishment. De meest recente klus betreft het NGR project bij Albert Heijn. NGR staat voor Next Generation Replenishment. Eén van de slogans van dit project is “Bettering the Best” en daarmee is denk ik niets teveel gezegd.

De maatwerk Applicaties binnen het huidige Replenishment landschap hebben Albert Heijn namelijk al veel goeds gebracht op het terrein van beschikbaarheid, winkelbeeld en afboekingen. Om verdere voordelen op het gebied van onder andere transport te kunnen behalen, is besloten om een extra laag toe te voegen die winkelorders nog beter in hun onderlinge samenhang kan optimaliseren. Daarnaast is er de wens om meer gebruik van A.I. elementen te kunnen maken en verschillende functionaliteiten breder binnen het bedrijf beschikbaar te stellen. Mede daarom is er voor gekozen om het NGR project op het Azure cloud platform te ontwikkelen, waarbij functies middels API’s toegankelijk zijn voor andere applicaties.

Omdat NGR vooralsnog een extra laag “bovenop” de bestaande systemen vormt, moest er een integratie met de huidige applicaties worden gemaakt. Binnen Orcado hebben we een ruime ervaring met de ontwikkeling en het onderhoud van de Store Replenishment systemen van Albert Heijn en ook ik heb daar zeer veel jaren aan mogen bijdragen. Aan ons de schone taak om de DESO applicatie te laten integreren met NGR.

En onwillekeurig voel ik mij toch een beetje een tijdreiziger in dit project. Want ga maar na; de winkelorder wordt berekend in de huidige applicatie (DESO), maar stuurt zijn uitkomst naar de toekomstige wereld: NGR. De winkel order wordt daar geoptimaliseerd door deze te combineren met andere winkelorders en wordt weer teruggezonden naar DESO voor verdere verspreiding. Heden communiceert met toekomst en vice versa.

Maar zoals dat met tijdreizen gaat, dienen er wel een aantal regels in acht te worden genomen om tijdsparadoxen en ander ongemak te vermijden:

Het heden is onafhankelijk van de toekomst.

In verband met het volume en stringente afspraken voor doorlooptijden binnen de supply chain is het berekenen van winkelorders aan een strikt tijdschema gebonden. DESO is dan ook gevoelig voor performance invloeden. Het gebruik van API’s is in dit verband niet de meest ideale oplossing, omdat je de winkelorderberekening niet afhankelijk wil laten zijn van de performance van een externe applicatie; NGR in dit geval. Er is daarom gekozen voor een ontkoppelde interface met een request en reply structuur, gelinkt middels een requestid. Op deze manier is DESO nog steeds baas in eigen huis en kan het de verantwoordelijkheid blijven nemen over zijn eigen tijdspaden. Mocht de reply vanuit NGR onverhoopt te laat zijn, dan wordt deze niet verwerkt en geldt de door DESO berekende winkelorder, die dan dus niet geoptimaliseerd is, als output.

Wijzingen aangebracht in het verleden hebben effect op de toekomst.

DESO berekent niet enkel de actuele winkelorder, maar tevens een set van winkelorders voor de toekomst, om op die manier beter inzicht te verkrijgen in de supply chain keten (over tijdreizen gesproken). Men noemt dit de SDF (Store Demand Forecast). Omdat NGR meerdere winkelorders combineert, heeft elke wijziging in de berekende winkelorder dus een mogelijk effect op de optimalisatie  van andere winkel orders. Elke wijziging in een berekende SDF dient dan ook met NGR te worden gecommuniceerd. Daarnaast brengt NGR ook zelf wijzigingen aan op de winkelorder in het kader van de optimalisatie. Deze worden als reply weer naar DESO verzonden. Om te voorkomen dat DESO deze weer als wijziging naar NGR moet versturen, die weer mogelijk opnieuw geoptimaliseerd zou worden en daarmee een oneindige loop start , slaat NGR zijn eigen wijzigingen ook onafhankelijk op.

Weet waar je bent; bepaal je positie in tijd en ruimte

Bijkomende uitdaging binnen dit project, en vaak binnen grote organisaties, is het feit dat er meerdere projecten tegelijkertijd actief zijn, die elk wijzingen aanbrengen op de applicatie. Het gevaar bestaat dus dat er simultane werkelijkheden ontstaan, helemaal als er gedeelde functionaliteit in het spel is. Continue afstemming tussen de (SCRUM-) teams is daarom van groot belang evenals een zorgvuldig versiebeheer. Weten op welke versie van de code je de wijzigingen aanbrengt, wanneer elk project een (deel)oplevering naar de productie omgeving doet en hoe je alle wijzingen correct administreert is daarbij essentieel. Een TARDIS zou handig zijn.

Waarmee we dan weer bij Doctor Who zijn aanbeland. De eerste twee afleveringen van het huidige seizoen gaan overigens voor een deel over Ada Lovelace en Charles Babbage, geen onbekenden voor degenen met interesse in de oorsprong van het vakgebied van IT en software ontwikkeling. En mochten deze namen je  niets zeggen, zoek ze een keertje op. Een kleine reis door de tijd is zo op zijn tijd de moeite waard!

VMI, waarom moet dat?

In de afgelopen jaren ben ik veelvuldig betrokken geweest bij het implementeren van het VMI model in de Food Retail sector. VMI staat voor Vendor Managed Inventory. Dit is een business model waarbij leveranciers zelf verantwoordelijk zijn voor het bijhouden van de juiste voorraden ten behoeve van de (winkel)verkopen van een retailer. De leverancier wordt daarbij, vanuit de retailer, gevoed met informatie over de actuele voorraadstanden in het distributiecentrum en over de verwachte verkopen in de komende periode. Op basis van deze parameters kan de leverancier zelf berekenen hoeveel artikelen hij wanneer moet leveren aan het distributiecentrum. Doelstelling is om daarbij niet te veel voorraad aan te houden, maar ook weer niet te weinig. Te veel voorraad leidt tot hogere kosten en verhoogt het risico op derving omdat producten in de voorraad over de datum (THT/TGT) gaan voordat ze zijn verkocht aan de retailer. Te weinig voorraad leidt tot gemiste (winkel)leveringen en dat betekent omzetverlies en een verslechtering van de relatie met de retailer. Voor een leverancier betekent VMI vooral het continu zoeken naar een juiste balans hierin.

Vanuit de praktijk heb ik gemerkt dat leveranciers zeer wisselend reageren op de overstap naar VMI. Deze overstap wordt hen vaak opgelegd door de retailer. Een groot deel van de leveranciers is niet direct enthousiast. De eerste reactie is vaak: “waarom moet dat?”. Dat is begrijpelijk omdat deze leveranciers gewend zijn aan een overzichtelijke situatie waarbij zij orders ontvangen die geleverd en gefactureerd kunnen worden. Daar hebben deze leveranciers hun processen en systemen op ingericht. VMI vereist dat deze leveranciers ineens zelf moeten berekenen wat er geleverd moet worden. Fouten die daarbij gemaakt worden zijn vaak ook voor hun eigen rekening of zo wordt het in ieder geval gepercipieerd.

Aan de andere kant is er ook altijd een groep leveranciers die het VMI model gelijk omarmt. Vaak zijn dit leveranciers die al geïnvesteerd hebben in en/of willen investeren in processen en systemen die wendbaar zijn en die reageren op actuele informatie. Zij zien de voordelen van VMI en, wellicht nog belangrijker, kunnen dit snel implementeren in hun organisatie. En die voordelen zijn er zeker voor leveranciers. Zo kunnen zij met VMI:

VMI biedt dus zeker voordelen. Maar is het makkelijk? Nou dat is het niet voor iedereen. Vanuit supplybrain hebben we daarom besloten om VMI software te maken om de VMI implementatie te vergemakkelijken voor leveranciers. Natuurlijk doen we dat omdat we daar een business case in zien. Maar we doen dit ook omdat wij geloven dat dergelijke oplossingen bijdragen aan een duurzamere samenleving. De beste manier om dervingen en daarmee voedselverspillingen tegen te gaan is immers door er voor te zorgen dat al het voedsel dat wordt geproduceerd ook daadwerkelijk wordt verkocht (en geconsumeerd). En niet in voorraden blijft liggen om uiteindelijk te worden vernietigd omdat de houdbaarheid is verstreken. VMI levert hier zeker een verbetering in. Dit effect wordt nog groter als de betrouwbaarheid van de informatie over de verwachte verkopen wordt vergroot. Hoe beter en eerder je weet wat er verkocht gaat worden, des te beter je kan bevoorraden. Vandaar dat supplybrain ook een module heeft ontwikkeld voor forecasting. Op die manier hopen we een bijdrage te leveren aan een duurzamere supplychain en daarmee een duurzamere samenleving. Daarnaast vinden wij dit ook gewoon leuk en uitdagend om te doen. Het is een mooi vooruitzicht om hiermee het nieuwe decennium in te gaan!

Vernieuwen in de circulaire economie

Terwijl ik dit schrijf is het Black Friday. Deze tot voor kort vooral Noord-Amerikaanse aangelegenheid spoort inmiddels ook steeds meer Nederlanders aan om veel geld uit te geven aan nieuwe goederen. Het gaat daarbij meestal om vervangingsaankopen. Een nieuwe, grotere smartTV of een nieuwe winterjas. Dat resulteert er in dat er ook spullen weg moeten. Tenslotte hebben de meeste mensen geen onbeperkte opslagruimte. 

Voor veel van deze afdankers geldt dat ze eigenlijk nog prima zijn. De jas was nog warm en waterdicht, maar niet helemaal meer de goede kleur of lengte. En de tv werkt nog prima, maar heeft geen ingebouwde webbrowser. 

Het is daarom mooi dat steeds meer mensen de weg naar het kringloopcentrum hebben gevonden en hun niet meer gewenste goederen daar af geven in plaats van ze naar de milieustraat te brengen waar ze worden vernietigd. 

Kringloopcentra mogen zich verheugen in een groeiende belangstelling. Niet alleen van ‘leveranciers’, maar tevens van steeds meer consumenten. De kringloopwinkels in Nederland, verenigd in de BKN (Branchevereniging Kringloopbedrijven Nederland) moeten zich door deze toegenomen aandacht vernieuwen en professionaliseren om de vraag aan te kunnen. Dat is een spannend proces omdat deze vorm van retail meestal geen winstoogmerk heeft en vaak zelfs een ANBI is (Algemeen Nut beogende Instelling). Daardoor is er een blijvend spanningsveld tussen verzakelijken van de bedrijfsvoering en oog blijven houden voor maatschappelijke doelen.

Bij de oudste kringloopwinkel van Nederland, in Soest, heeft Orcado de afgelopen anderhalf jaar mogen meewerken aan een vernieuwingsslag. Dat was een bijzonder project, onvergelijkbaar met enige andere opdracht die we de afgelopen 20 jaar hebben mogen uitvoeren. 

Om te beginnen zijn van de ruim 100 medewerkers verreweg de meesten vrijwilligers. Dat geeft een andere dynamiek, ook omdat er nogal wat mensen bij zitten die een afstand hebben tot de reguliere arbeidsmarkt. Dat vraagt om een andere benaderingswijze als het gaat om in de IT ingeburgerde processen als informatieanalyse, usabilitytesten van schermen of acceptatietesten.

Daarnaast is er continu een enorme hectiek: er worden goederen gebracht of gehaald en vervolgens gewogen, gesorteerd, gerepareerd, gereinigd en neergezet in de winkel. Jaarlijks gaat dit in Soest om ongeveer 1 miljoen kilo aan spullen. 

Er is een koffiehoek waar mensen uit de regio met elkaar bijpraten en in de winkel is er altijd drukte. De koopjesjagers staan vaak al ruim voor openingstijd te wachten om als eerste te zien of er iets van hun gading is toegevoegd aan het assortiment. Een kortom unieke omgeving.

Orcado heeft samen met de directeur van Spullenhulp en enkele vaste medewerkers een nieuwe cloudoplossing neergezet die de weegprocessen van de goederen ondersteunt. Elk product of elke zogenaamde restfractie (een deel van gedemonteerde goederen) wordt gewogen. De wegingen zijn erg belangrijk omdat ze inzicht verschaffen in de mate waarin de kringloopwinkel de afvalstroom beperkt en hoeveel werk er wordt verzet. Orcado realiseerde hiervoor een koppeling met de in het pand aanwezige weegbrug, realiseerde realtime dashboards waarop de goederenstromen kunnen worden gevolgd en bouwde rapportages en functies die de uitwisseling van gegevens tussen kringloop en milieustraat ondersteunen.

De vele vrijwilligers gebruiken de door Orcado gebouwde cloudoplossing daarnaast om hun werktijd te registreren. Hierop wordt hun vergoeding gebaseerd en op deze manier is tevens inzichtelijk aan hoeveel mensen Spullenhulp een nuttige dagbesteding biedt.

Bij het werken aan dit project was er een heel direct contact met de medewerkers. En hoewel we vrijwel altijd te maken hebben met blije klanten, is het niet vaak dat we met een nieuwe toepassing zo’n impact hebben op iemands werkplezier. Bij een herhalingsbezoek kwam een van de vaste vrijwilligers ons persoonlijk bedanken voor onze toepassing. Hij mocht nu wél meewerken aan het wegen en registreren van goederen, een proces dat daarvoor te gecompliceerd voor hem was. Zijn baan was veel leuker geworden.

Werken in de IT kan erg dankbaar zijn en direct bijdragen aan het vergroenen van onze omgeving. Op dit moment onderzoekt Orcado samen met Spullenhulp Soest en de BKN hoe we meer inzichtelijk kunnen maken wat de bijdrage van hergebruik is aan de besparing van CO2 emissies. Een hergebruikte spijkerbroek hoeft niet te worden verbrand en bovendien is het niet nodig een nieuwe te produceren. Orcado kan dit realtime tonen op basis van de geregistreerde goederenstromen. Nog genoeg te vernieuwen!

Van procestechnoloog naar software ontwikkelaar

De afgelopen jaren heb ik gewerkt bij verschillende bedrijven in de levensmiddelenindustrie. Hier heb ik mij voornamelijk bezig gehouden met de processen binnen de productie. Denk bijvoorbeeld aan vraagstukken rondom het produceren van nieuwe producten of het plaatsen van nieuwe machines. Alhoewel ik het produceren van levensmiddelen interessant vind, merkte ik tijdens mijn werk dat een ander vakgebied meer mijn interesse wekte, namelijk de IT. Hier heb ik al aan mogen ruiken. Zo heb ik bijvoorbeeld meegewerkt aan het verbeteren van de automatische schoonmaakprogramma’s van leidingen. Klinkt niet heel interessant, maar hier komt toch heel veel bij kijken, vooral qua software.

Om de overstap te maken van de procestechnologie naar de IT, was een van de mogelijkheden een omscholingstraject. Deze heb ik gevonden bij de Hogeschool van Amsterdam, bij het project Make IT Work. In een klein jaar worden de benodigde vaardigheden aangeleerd om daarna aan de slag te kunnen gaan binnen de IT.

Om te kunnen beginnen aan het omscholingstraject moest er worden voldaan aan verschillende eisen. Eén van deze eisen was dat er een werkgever gevonden moest worden. Vanuit Make IT Work werd een werkgeversmarkt georganiseerd, waarbij diverse geïnteresseerde bedrijven aanwezig waren. Door middel van korte gesprekjes kon een (wederzijdse) interesse worden gewekt, waarna de werkgever de kandidaat uitnodigde voor een vervolggesprek. Per toeval was bij de werkgeversmarkt een bedrijf aanwezig dat ook werkzaam is binnen de levensmiddelenindustrie, en dan zelfs ook nog bij een vroegere werkgever van mij.

Na een goed vervolggesprek bij Orcado, heb ik het voorstel van Orcado dan ook met beide handen aangegrepen.

In april zijn we van start gegaan. Met 32 cursisten hebben we onze eerste “hello-world” applicatie gebouwd, gevolgd door nog vele andere. We hebben geleerd om te programmeren in JAVA, eerst simpele dingen maar later ook gebruik makend van Object Oriented Programming. Natuurlijk komt hier ook enige database-kennis aan te pas, daarom hebben we ook een vak MySQL gehad.

Na de eerste intense periode met vakken en ook weer tentamens, was het tijd voor het go/no-go moment. Hierbij werd bepaald of door mocht worden gegaan met het tweede deel van de opleiding. Hiervoor werd gekeken naar de behaalde cijfers en je motivatie. Gelukkig kwam ik hier makkelijk doorheen en mocht ik doorgaan met het eerste project.

In 3 weken tijd hebben we in groepjes gewerkt aan een applicatie waarin schoolvakken en cijfers konden worden bijgehouden. Dit hebben we gemaakt met behulp van JAVA en JAVAFX. Ook hebben we kort kennis gemaakt met GIT en de Scrum werkwijze.

Dit korte project was erg intens. Opeens waren we niet meer individueel aan code aan het sleutelen maar kon het voorkomen dat iemand anders iets had “gepusht” en dat je met een “mergeconflict” zat. Zeer leerzaam in ieder geval.

Het projectteam bij de presentatie van de internetbank-applicatie

Omdat het ondertussen al bijna zomervakantie was, werd door Make It Work besloten om het volgende project niet direct te starten. In plaats daarvan is verder gegaan met de theorie zodat het project na de vakantie in één keer kon worden uitgevoerd. Vlak voor de vakantie hebben we ons daarom nog beziggehouden met Advanced Programming en hebben we het onder andere over sorting, stacks etc. gehad. Als mooie afsluiter nog even een eindopdracht gemaakt en toen konden we genieten van een welverdiende vakantie.

Na de vakantie was het merkbaar dat de theorie voor de vakantie in een sneltreinvaart gegeven was. Het was weer even wennen (‘hoe start je ook alweer een project op….?’) maar al snel kwam alles weer terug.

Nu konden we ons een langere periode bezighouden met één project. Weer in groepjes was het nu de bedoeling om een webapplicatie te maken, en wel de site van een (zelfverzonnen) internetbank.

Hiervoor hebben we geleerd hoe de communicatie tussen browser en server werkt . Ook hebben we uiteindelijk de hele applicatie op een server gedraaid, zodat iedereen onze bank zou kunnen bewonderen.

Enorm leuk om te doen en wederom heel leerzaam. Nu aan het werk bij Orcado, waarbij ik er weliswaar vertrouwen in heb dat ik een goede basiskennis heb, maar dat ik nog enorm veel ga leren.

Testen en hacken en … bordspellen!

Ga direct naar de gevangenis! Ga niet langs START! 

Wat is er nou leuker dan bordspellen spelen? Of software testen? Terwijl mijn collega’s hun vakanties veelal doorbrengen op stranden, in wereldsteden en rondom campings, zien mijn zomers er iets anders uit. Een tijdje terug heb ik vrij genomen om een week lang, van ’s morgens vroeg tot ’s avonds laat lekker bordspellen te spelen met vrienden. Een jaarlijks terugkerend ritueel. We spelen iedere keer zoveel mogelijk spellen en komen ieder jaar weer tijd tekort. Dit jaar hadden we 38 bordspellen meegenomen waarvan we er slechts 21 hebben kunnen spelen. 

Is dat niet wat veel? Nee! Iedere ontwikkelaar kent vast het gevoel dat je krijgt als je aan het puzzelen bent met een stuk code en de dag opeens al voorbij blijkt te zijn. Helemaal vergeten te eten. Voor mij als tester geldt hetzelfde. Natuurlijk bestaat een deel van het werk uit routinematige taken, maar als je die efficiënt uitvoert en waar mogelijk automatiseert blijft vooral het interessante werk over: hacken, strategieën uitstippelen, samenwerken en winnen! Precies wat je bij het spelen van bordspellen ook doet.  

Bugs!

Het allereerste wat ik denk als ik een nieuw spel in handen krijg is: hoe waterdicht zijn de spelregels? Waar zitten de mogelijkheden om het spel te hacken? Het voelt altijd fantastisch als je een maas in de regels ontdekt waardoor je opeens onoverwinnelijk wordt. Zo speelde ik laatst Rifugiomet de bedenker ervan. We waren goed onderweg totdat ik er achter kwam dat ik hem volledig klem kon zetten zodat hij geen enkelelegale actie meer kon nemen. Victorie! De spelregels moesten aangepast worden vanwege mijn tactiek. Het fijne van de bordspellenwereld is dat je op zo’n moment ook gewoon keihard de overwinning kan claimen. Op het werk voelt het net zo goed als je het testobject stuk hebt weten te krijgen. Alleen moet je daar iets subtieler zijn als je een ontwikkelaar vertelt dat er een flinke bug in de code zit. 

Op zoek naar de beste tactiek

Op het oog simpele spellen kunnen veel interessanter worden door ze net iets anders te spelen dan de regels in eerste instantie aangeven. In het spel King of Tokyoheeft iedere speler bijvoorbeeld een monster tot zijn beschikking. Het doel is om jouw monster de meeste gebouwen te laten slopen. Interessanter wordt het echter als iedere speler over meerdere monsters beschikt. Je kunt in dat geval een klein team van monsters vormen dat veel efficiënter te werk gaat en er samen voor zorgt dat één monster de meeste kansen krijgt. Juist het bedenken van intelligente strategieën en tactieken om iets voor elkaar te krijgen maakt het spelen interessant. Ook op mijn werk. In situaties waarin je soms wel duizenden parameters hebt is het niet meer te doen om alle mogelijke combinaties te testen. Het is dan belangrijk om alle kennis die je hebt van het domein, de wiskunde en de programmatuur in te zetten om tot een zo sterk mogelijke teststrategie te komen. Dat is waar het echt interessant, en zelfs een beetje verslavend, wordt. 

En als ik die gevangenis helemaal niet uit wil?

Ook in de bordspellenwereld gebeurt het regelmatig dat de spelregels (op het werk ook wel requirements genoemd) onduidelijk zijn. Kun je in een bepaalde situatie nu wél of niet een stap zetten? Moet je altijd een actie uitvoeren als het kan, of mag je ook gewoon niets doen? Bij een spel als Rummikub kan het bijvoorbeeld handiger zijn om steentjes te blijven pakken, zelfs als je al steentjes neer kan leggen, maar mag dat ook? Hoe speelt het spel als je buiten de gebaande paden treedt?

Op het werk besteed ik daarom naast het testen ook regelmatig tijd aan overleggen met business analisten en gebruikers. Het is lastig om een goeie set requirements op te schrijven die eenduidig en compleet de functionaliteit beschrijven. Als tester is het mijn werk om te kijken of er aan de beschreven eisen voldaan is, en ook om te kijken of er geen ongewenste situaties optreden als ik onbeschreven acties uitvoer. Dit is altijd een samenwerking tussen business en testers. Want wat is nou een ongewenste situatie? Ook in de testwereld geldt daarom: hoe fantastisch het ook voelt om als een monster een systeem te kraken; uiteindelijk is testen toch ook een gezelschapsspel. 

Hier komt de sidebar

Volg ons op

© Orcado B.V. | 1999 - 2022