Chai Stofkoper - DevOps - Development

Profiel

‘Scherp, kritisch, gedreven en samenwerken’ zijn woorden waar ik me in kan vinden. Ik stel vragen en onderzoek mogelijkheden om tot oplossingen te komen. Uitdagingen zie ik vooral als aanknopingslpunten om weer iets nieuws te leren en verder te groeien in mijn vak en als mens. Ik sta altijd open voor suggesties, houd van duidelijke communicatie en een informele sfeer.
Vanuit mijn werk als testautomatiseerder heb ik een oog voor detail ontwikkeld en ben ik me bewust van op zowel risicos en kwaliteit. Deze focus op kwaliteit neem ik mee in mijn werk als developer.
Ik heb me de laatste jaren verder verdiept in allerhande technieken en talen waaronder: Docker, Terraform, Jenkins, AWS, Java, Typescript, Angular, Spring, NestJs, (S)CSS, RxJs. Ik ben vooral dieper in gegaan op DevOps, Cloud computing architectuur, Containerization en Pipelines.

Fan van Linux, Vim, containers, exotische muziek en wiskunde!

Ambities

Na een transitie periode heb ik me nu volledig gestort op mijn cariere in development en DevOps. In december 2022 ben ik samen met mijn partners Adabtive begonnen. Mijn hoofd focus is hetzelfde gebleven: Zo veel mogelijk leren als ik kan. Ik wil graag verder groeien in zowel mijn rol binnen Adabtive als in mijn werk als developer / devops.

Onderwerpen die me momenteel bezig houden zijn Kubernetes, Pipelines en AWS. En daarnaast natuurlijk gewoon zorgen dat ik elke dag een betere developer ben. Features opleveren, samewerken met collega’s om vanaf de start te werken aan de beste resultaten: Goed denkwerk en duidelijke communicatie om op die manier software te bouwen die precies die business doelen ondersteunt die vereist is.

Voor een volgende opdracht hoop ik in nieuwe problemen te duiken, interessante mensen te ontmoeten en te blijven leren!

Uitgelicht

2022 - 2023: Devops - Development (Fullstack) @ Shipbuilder

Het bouwen van de frontend (en uibreiden van backend) voor een zeer flexibel en configureerbare project data management applicatie. Gebruikte technologieen zijn onder meer Typescript, React, AG Grid, Ant Design, NestJs, Docker, github actions.

December 2022 - Heden: Co-Founder and Co-Director @ Adabtive

Sinds 2021 zijn we begonnen met de plannen en het werk om uiteindelijk in December 2022 officieel van start te gaan met Adabtive. Het is Nederlands eerste steward owned software bedrijf.

2020 - 2022: Devops - Development (Fullstack) @ InQuisitive (Intern)

Opzetten en onderhouden van de infrastructure as code met Terraform in AWS, zowel voor de app als voor Jenkins. Bouwen en onderhouden van de build en deploy pipeline in Jenkins (JcasC, JobDSL). Schrijven van de code voor de Angular frontend.

Werkervaring

Client: Shipbuilder

Period: Juni 2022 - Maart 2023
Role(s): Devops - Development (Fullstack)
Knowledge: Typescript, React, Redux, React hooks, NestJs, unit testing, Github actions, Agile, Docker, Docker-compose, Neo4j (Graph database).
Context: Shipbuilder maakt een applicatie die in hoge mate configurabel is. Samen met klanten wordt de data modellering gedaan, inclusief regels en validaties voor CRUD operaties, visualisaties, menu structuur, pagina’s etc. De code regelt data transformaties en visualisaties op hoog abstractie niveau. De visualisaties worden gedaan met Ant D component library en AG Grid.
Tasks:

  • Opzetten van de frontend met React, Redux, Ant D, AG Grid

  • Frontend code schrijven inclusief custom hooks, persistentie in browser and verbindingen met de NestJs backend.

  • Bugfixes and uitbreiden en aanpassen van functionaliteiten in de NestJS backend

  • Opzetten Docker en Docker compose om de app te runnen in productie en voor development doeleinden.

  • Opzetten van (basic) pipelines in Github Actions voor build en kwaliteits checks van de code.

  • Schrijven van unit testen and integratie testen (Cypress).

  • Deelname aan alle scrum meetings, refinement and applicatie-architectuur besluit vorming.

Results: Toen ik begon aan deze opdracht was de backend al voor een groot gedeelte klaar. De frontend heb ik vanaf niets opgebouwd. De meeste code hiervoor is van mijn hand. Samen met de andere developer (tevens PO), hebben we een eerste versie gemaakt van de applicatie. Hierin zat ook een aantal features die specifiek gebouwd waren voor een eerste klant die een aantal erg grote scheepsbouw projecten doet.

Client: Adabtive

Period: December 2022 - Heden
Role(s): Co-Founder and Co-Director
Knowledge: Vormgeven en leiding geven aan Adabtive met een focus op de techniek.
Context: Sinds 2021 zijn we begonnen met de plannen het het werk om uiteindelijk in December 2022 officieel van start te gaan met Adabtive. Het is Nederlands eerste steward owned software bedrijf.
Tasks:

  • Het stellen van (strategische) doelen en tijdslijnen

  • HR management en inhuur van nieuwe developers

  • Evalueren van projecten en plannen op financiele en technische haalbaarheid

Results: Adabtive is begonnen te groeien. We bieden diensten aan op het gebied van in house software development, integratie en uitbreiding van bestaande software en consultancy.

Client: Knab Bank

Period: Mei 2022 - Augustus 2022
Role(s): Devops / Testautomatisering
Knowledge: AWS, Terraform, Azure Pipelines, C#, Agile, Angular, Typescript, Cucumber, Selenium
Context: Knab is een bank met een focus op (klein) zakelijke klanten. Hun aanbod is volledig digitaal dus de technologie is het hart van het berijf. Als dochteronderneming van Aegon was er een migratie traject voor klanten van investeringsproducten van Aegon naar Knab.
Tasks:

  • Instrueren testautomatisering

  • Implementatie en uitbreining van azure pipelines and Terraform configuraties om AWS spot instances op de spinnen en de test suites daar te draaien.

  • Schrijven van test automation code in C#

  • Testen van features

Results: Ik heb hier met verschillende teams en disciplines gewerkt. Een was het helpen van andere testers om testautomatisering te leren. Toen de prioriteiten verschoven ben ik gevraagd om te helpen in een team waar gewerkt werd aan de integratie van externe klanten (Aegon) met hun investeringsproducten naar Knab, inclusief dashboards etc. Tegelijkertijd werkte k met Devops aan pipelines in Azure / AWS om volledig automatisch spot instances beschikbaar te hebben om testen op te draaien.

Client: Intern @ InQuisitive

Period: Oktober 2020 - 2022
Role(s): DevOps - Development
Knowledge: Typescript, Java, Spring, Angular,Terraform, CloudFormation, Jenkins, Docker, Git, Agile Scrum.
Context: Binnen Inquisitive zijn we gestart met een kleine groep om ons om te scholen tot developer / DevOps engineer. Hiervoor hebben we tijd en mogelijkheden gekregen om cursussen te volgen en samen een project te doen. We bouwen een applicatie “Mosar” voor flashcards. De opzet is om zoveel mogelijk relevante technieken te gebruiken en er praktische ervaring mee op te doen en het leren te bekrachtigen.
Tasks:

  • Schrijven en onderhouden van alle infrastructure as code

  • Opzetten van alle omgevingen, rollen en resources in AWS

  • Opzetten en onderhouden van de build and release pipelines

  • Schrijven van de frontend code en frontend unit tests

Results: Ik heb de infrastructure as code gebouwd en herbouwd. Eerst heb ik gebruik gemaakt van AWS CloudFormation en later ben ik omgeschakeld naar Terraform. Dit behelst zowel de modules als de projects/ workspaces (die gekoppeld zijn aan workspaces in Terraform Cloud) die deze modules gebruiken. Alle resources zoals VPCs, ECS Clusters, EC2 Servers, secrets, ECR repositories, rollen en policies voor zowel Jenkins als voor de app worden hier onderhouden. Daarnaast heb ik ook alle pipelines gebouwd in Jenkins. Gebruik makend van JcasC en JobDSL om zoveel mogelijk alles as code te hebben en best practices te volgen. De build pipelines worden getriggered bij het openen van een PR. Ze bouwen de artifacts, runnen de tests en uploaden een image, dat gebouwd wordt met Kaniko, naar AWS s3. De deploy pipeline haalt dit weer op en voert Terraform code uit om een ECS Task te runnen binnen het bestaande cluster.
Hiernaast heb ik alle frontend code geschreven inclusief HTML, CSS, animations, en tests. Voor het backend werk werk ik nauw samen met mijn collegas in de vorm van pair programming en code reviews.

Client: Ministerie van Buitenlandse Zaken

Period: Maart 2019 - April 2022
Role(s): Testen - Testautomatisering - DevOps - Ketentesten
Knowledge: Agile, Scrum, DevOps, Testautomatisering, Java, Javascript, Typescript, Property Based Testen, Backend Testing, Frontend / Angular, Azure, Complex Chain, Codecept, Cypress
Context: Ik heb hier meegewerkt aan de vervanging van een aantal systemen waarmee het proces van visum aanvragen wordt behandeld. Het gaat hier om alles vanaf de aanvrager in elke uithoek van de wereld, via alle verschillende processen en rollen binnen buitenlandse zaken, naar een besluit tot uitgifte of afwijzing en het printen van de juiste waarde documenten en vastleggen in externe systemen. Dit zijn dan zowel systemen in het buitenland zoals het europees visum registratie systeem als het beschikbaar stellen van de informatie aan Nederlandse partijen zoals de IND of politie.
Tasks:

  • Testen

  • Testautomatisering (BDD, Java, Javascript, Typescript, Codecept, Cucumber, Cypress)

  • Ketentesten

  • Frontend code schrijven (Bug fixing, kleine research taken)

  • Containerization (opzetten lokale omgeving)

  • Pipelines (klein onderhoud)

Results: In deze opdracht heb ik me bezig gehouden met twee hoofdtaken. Enerzijds testautomatisering een impuls geven en anderzijds het opzetten en regisseren van de ketentest. Dit eerste heb ik gedaan door verbeteringen voor te stellen en uit te voeren voor de frontend e2e testen en anderzijds door integratie testen op te zettenwaarbij we op niveau van de api’s de functionaliteit testen. Voor de UI en e2e testen heb ik gewerkt aan het verbeteren en uitbreiden van de bestaande codecept (Javascript) testen en later aan het opzetten van Cypress icm Typescript. Bij de api tests heb ik ook property based testen geïntroduceerd om zo dekking te verhogen en specificaties te veralgemenen. Verder heb ik me bezig gehouden met het scherper krijgen van de acceptatie criteria om zo kwaliteit en testbaarheid in het hele proces en product te verbeteren. Het opzetten en uitvoeren van de ketentesten was een uitdaging vanwege de vele koppelingen met externe partijen in binnen en buitenland met elk hun eigen eisen en limieten naast onze eigen criteria.

Client: Rabobank

Period: April 2017 - December 2019
Role(s): Test - Testautomatisering - DevOps - Scrum Master
Knowledge: Agile, Scrum, Devops, Testautomatisering, Browser Testing, Splunk, Java, Javascript, Backend Testing
Context: Ons team heeft zich bezig gehouden met applicaties die de marketeers in staat stellen om uitingen naar klanten zoveel mogelijk te personaliseren.
Tasks:

  • Testen

  • Testautomatisering

  • DevOps

  • Scrum Master

Results: De Rabobank is een organisatie waar heel snel veranderingen plaats vinden, zowel in de manier van werken als in het complexe technische landschap. We hebben een aantal legacy-systemen onder ons beheer gehad, waarvoor ik een geautomatiseerde regressie suite heb geschreven. Het frame dat ik daarvoor schreef is ook door andere collega’s, binnen en buiten het team, gebruikt.
Ook hebben we nieuwe software geschreven die volgens de nieuwere architectuur standaarden naar de cloud (PCF op Azure) gebracht is. Tevens heb ik voor de applicaties monitoring dashboards gemaakt in Splunk, om zo snel en goed inzicht te hebben. Kritisch denken, assertief comminiceren en samenwerken is hierbij van groot belang om zo fouten en risico’s te vermijden voordat de daadwerkelijke bouw begint.

Client: Provincie Gelderland

Period: April 2017 - April 2019
Role(s): Testen - Testautomatisering
Knowledge: Agile, Scrum, Testautomatisering, Chain Testing, Acceptance Testing, Migrations (Open Text and Sharepoint), Java, Selenium, Python
Context: Als tester ben ik betrokken geweest bij uiteenlopende projecten waaronder migratie van Open Text (Enterprise information management), en ontwikkeling van een nieuwe applicatie tbv subsidieverlening, migratie Sharepoint(2010-2013).
Tasks:

  • Testen

  • Agile Teamlid

  • Begeleiden van Acceptatie Testen

Results: Binnen de provincie zijn veel processen tegelijk bezig; het professionaliseren van het testen (waar men nu sinds een 2 jaar mee bezig is), onderhouden van oude systemen, ontwikkeling van nieuwe systememn en de overgang naar een regie- organisatie, waarbij alle IT geoutsourced wordt en de vraag om kwaliteitsbewaking des te groter. De uitdaging was erin om veel verschillende projecten en applicaties tegelijk te testen en in het oog te houden en tegelijkertijd wel echt in de diepte de systemen te kennen, die veelal legacy systemen zijn met (deels) ontbrekende documentatie. Ik heb mee mogen werken aan de projecten zelf, en ook aan de verbeterslag in het testproces waar het gaat om inzichtelijk maken van de verantwoordelijkheden, beschikbaarheid en beheer van omgevingen, en de mogelijkheden voor testautomatisering. Ook waar het de communicatie betreft, het samenbrengen van de ambtenaren met de ontwikkelteams en afstemmen van wensen en verwachtingen is hier een belangrijk deel van het werk geweest.

Client: Homefashion Group

Period: September 2016 - Februari 2017
Role(s): Testen
Knowledge: Jira, Trac, Youtrack, XML, Java, Selenium, Python, Exploratory Testing
Context: In de hectische omgeving van een retailer die een moderniseringsslag wil en moet maken testen van zowel frontend (webshop) als legacy backend systemen (ERP, logistiek).
Tasks:

  • Testen

  • Testautomatisering

  • Ketentesten

  • SOAP service Testen

Results: Bij de Homefashion Group was ik samen met twee andere testers verantwoordelijk voor het testen van de Webshop die vernieuwd werd, nieuwe webshops die er bij kwamen, en als enige had ik ook de taak om het legacy ERP systeem (progress) te testen. Vooral dit laatste was een mooie uitdaging! Vanwege de vernieuwingen in productlijnen, transportlijnen en verkoopkanalen werd er constant aan dit systeem gewerkt. De applicatie leren kennen en zinnige uitspraken kunnen doen over de risico’s van het gedane werk was niet eenvoudig, maar binnen de organisatie waar hoge tijdsdruk op lag wel heel belangrijk.
Voor de webshops heb ik een testframework gebouwd in Java (met selenium) waar we samen met een van de andere testers onze scenario’s in schreven.

Client: Exact

Period: Juli 2016 - Augustus 2016
Role(s): Testen
Knowledge: Testing, Testautomatisering, Team Foundation Server, C#, Selenium
Context: Bij Exact heb ik als scrum team lid gewerkt binnen het accounting-core team van Exact Online.
Tasks:

  • Testen

  • Testautomatisering

  • Regressie Testen

Results: Exact Online levert bedrijfsadministratie software en daarbinnen was ik deel van het team dat werkte aan de kern functionaliteit, accounting-core. De kwaliteits eisen liggen daar hoog en een kritische doortastende blik werd vereist. Ik heb door middel van enerzijds exploratory testen, en anderzijds automatiseren van regressie scenarios bijgedragen aan de opleveringen die we hebben gedaan. Daarnaast heb ik me bezig gehouden met het verbeteren van het scrum proces (mn User stories en acceptatie criteria).