Chai Stofkoper - DevOps - Development

Profile

‘Sharp, discerning, ambitious, collaborative’. Those are words that resonate well with me. I ask questions and dig deep in order to find possibilities for solutions. I regard challenges mainly as starting points to learn something new, and to continue growing in my work and as a person. I am always open to suggestions, I appreciate direct and clear communication and an informal atmosphere. From my work as a tester and test automation engineer I gained a sharp eye for detail, and acute awareness of both risk and quality. The last few years I have extended my knowledge and working experience in topics and techniques such as Java, Javascript, Typescript, Python, Haskell, AWS, Pipelines (Jenkins), containerization (Docker and Compose), DevOps, Agile and more. I am passionate about Linux, Vim, containers, exotic music and mathematics!

Ambitions

After a period of transition I have now fully plunged into a career in development and DevOps. In December 2022 I co-founded Adabtive. My main focus has always remained the same: learn as much as I can. I want to grow further both as an engineer as well as co-director at Adabtive.

Topics that interest me a lot at the moment are Kubernetes, Pipelines and AWS. And aside from that of course just being a better developer everyday. Deliver features, collaborate with colleagues trying to get the best results from the start. Start with good thinking, and clear communication so we can build the software to support the exact business goals they require.

For a next assignment I hope to dive into new problems, get to know interesting people and keep on learning!

Highlights

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

Building the frontend (and extending some backend functionality) for a highly configurable project data management application. Technologies used include Typescript, React, AG Grid, Ant Design, NestJs, Docker, github actions.

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

Since 2021 we have started making plans resulting in the official start of Adabtive in December 2022. It is the first steward owned software company in the Netherlands.

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

Setting up and maintaining the infrastructure as code with Terraform in AWS, for the app as well as Jenkins. Building and maintaining build and deploy pipelines in with Jenkins (JcasC, JobDSL). Writing the Angular frontend.

2019 - 2022: Test - Test Automation @ Ministry of Foreign Affairs

Chain testing and improving and extending the automated test suites for UI and Apis. Bits and pieces of frontend work, containerization and pipelines.

Work Experience

Client: Shipbuilder

Period: June 2022 - March 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 builds an application that is highly configurable where the application can be configured together with clients. This includes data modeling, CRUD options, visualization, menu structure, pages, etc. The code deals with high abstractions and data transformations. The visualization in the frontend is done using Ant D component library and AG Grid.
Tasks:

  • Set up the frontend with React, Redux, Ant D, AG Grid

  • Write the frontend code including custom hooks, persistence in browser and connections to the NestJs backend.

  • Fix bugs and change functionalities in the NestJS backend

  • Set up Docker and Docker compose for running the app in production as well as for development purposes.

  • Set up (basic) pipelines in Github Actions for building and checking the code.

  • Write unit tests and integration tests (Cypress).

  • Partake in all scrum meetings, refinement and application-architecture decision making.

Results: When I started the backend of the application was done for the better part, but the frontend had to be made from scratch. I set this up and wrote the most of the code for it. Together with one more developer we made a first version working. It had some tailor made functionality for a first client running some very large ship building projects.

Client: Adabtive

Period: December 2022 - Present
Role(s): Co-Founder and Co-Director
Knowledge: Shaping and directing of Adabtive with a technical focus
Context: Since 2021 we have started making plans resulting in the official start of Adabtive in December 2022. It is the first steward owned software company in the Netherlands.
Tasks:

  • Set strategic goals and define plans and timelines

  • HR management and Hiring of new developers

  • Evaluate projects on technical and financial feasibility

Results: Adabtive has started growing. Offering in house realization of software projects, integration and extension of existing software and consultancy services.

Client: Knab Bank

Period: May 2022 - August 2022
Role(s): Devops / Test automation
Knowledge: AWS, Terraform, Azure Pipelines, C#, Agile, Angular, Typescript, Cucumber, Selenium
Context: Knab is a bank with a focus on (small) business clients. Their offering is online only so technology is the core of their business. As a daughter company of Aegon, there was a migration ongoing for Aegon investments banking clients to Knab.
Tasks:

  • Instructing / teaching test automation

  • Implementing / extending azure pipelines and Terraform configurations to spin up AWS spot instances and run the automated suites there

  • Write test automation in C#

  • Test features

Results: Worked with different teams on different projects here. One where I was assigned to teach testers on Testautomation in order to raise the general level of testing and testautomation. Then when priorities shifted I was asked to help out in a team where we worked on integrating a number of existing investment clients from another bank, including their portals and accounts. And all the while I worked with Devops to implement some pipelines that ensured test servers be spun up temporarily for use with the automated tests.

Client: Internally @ InQuisitive

Period: October 2020 - 2022
Role(s): DevOps - Development
Knowledge: Typescript, Java, Spring, Angular,Terraform, CloudFormation, Jenkins, Docker, Git, Agile Scrum.
Context: Within InQuisitive we have teamed up in a small group to transition from testers to developers / DevOps Engineers. For this purpose we have been given time and support to do courses and and internal project. We are building a flashcards application named “Mosar”. The main goal is to use as many relevant techniques as possible in to gain real world experience and solidify our learnings.
Tasks:

  • Write and maintain all infrastructure as code

  • Set up environments, roles and resources in AWS

  • Setup and maintain build and release pipelines

  • Write the frontend code and frontend unit tests

Results: I have built and rebuilt the infrastructure as code for our project. First using AWS CloudFormation, and later migrating it to Terraform. This entails both the modules and the projects / workspaces (they map to workspaces in Terraform Cloud) that use these modules. All resources such as VPCs, ECS Clusters, EC2 servers, secrets, ECR repositories, roles and policies for both Jenkins and Mosar are maintained here.
Another thing I have built is all the pipelines in Jenkins. Using JCasc and JobDSL with the purpose of haveing everything as-code, I set up build pipelines that get triggered on opening PRs which build the artifacts, run tests and publish images made with Kaniko to AWS ECR. The deploy pipeline, triggered on merging a PR then retrieves this image, and runs Terraform code to run a task withing the existing ECS cluster.
Besides this work I also wrote the frontend code in Typescript using the Angular framework. This includes all html, scss, animations and tests.

Client: Ministry of Foreign Affairs

Period: March 2019 - April 2022
Role(s): Test - Test Automation - DevOps - Chain Test
Knowledge: Agile, Scrum, DevOps, Test Automation, Java, Javascript, Typescript, Property Based Testing, Backend Testing, Frontend / Angular, Azure, Complex Chain, Codecept, Cypress
Context: The project was to replace existing systems for the processing of visa applications. This encompasses the whole flow from a user filling in the initial forms, the payment and upload portals setup throughout the world, to the processing in The Hague by it’s different officers. Also noteworthy are the many (automated) integrations with external parties among which the police, the european visa system (EUVIS) and the immigration service (IND). An approved application would result in a sticker printed on a value document, on the locations at the Ministry’s posts, and all registration of those documents.
Tasks:

  • Testing

  • Test Automation (BDD, Java, Javascript, Typescript, Codecept, Cucumber, Cypress)

  • Chain Testing

  • Frontend coding (Bug fixing, minor research tasks)

  • Containerization (setting up local environment)

  • Pipelines (minor maintenance)

Results: In this project I worked mostly on giving the test automation a new impulse. I did this by proposing and executing improvements in the frontend end-to-end tests (using Codecept, and later Cypress), as well as setting up initial test strategy for api tests in Java for the backend. The latter was consequently adopted by the backend developers who wrote the most test for it after that. Together with my colleagues (testers and frontend Engineers) we collaborated on maintaining and extending the end-to-end suite.
Another task, at the beginning was to coordinate efforts for the chain testing together with external parties such as the Police and the Ministry of Justice. This was later continued by another colleague. After gaining knowledge of the system and it’s complexities I also actively participated in sessions for business analyses and supporting the Product Owners. And where I could I would help out doing some DevOps tasks such as setting up the Docker Compose for local development, or implementing ways to interact with Azure to remove hardcoded test credentials etc.

Client: Rabobank

Period: April 2017 - December 2019
Role(s): Test - Test Automation - DevOps - Scrum Master
Knowledge: Agile, Scrum, Devops, Test Automation, Browser Testing, Splunk, Java, Javascript, Backend Testing
Context: Our team was responsable for creating and maintaining applications that serve the marketing teams by enabling them to fully personalize the messages to Rabobanks customers.
Tasks:

  • Test - Test Automation - DevOps - Scrum Master

Results: The Rabobank is an environment in which changes are made rapidly, both in the way of working and in the complex technical landscape. Our team had the responsibility for maintaining a few legacy systems for which I wrote automated regression suite. The framework I wrote for that was then also adopted by other colleagues in our team and in outside teams. Besides this we worked on new software that was deployed to PCF on Azure as per the new architecture standards. It was my task in the team to setup all the dashboards and alerting for our services using Splunk. Critical thinking and assertive communication was important to prevent errors from happening before even starting the build. And for about one year I also had the role of Scrum Master in the team.

Client: Province of Gelderland

Period: April 2017 - April 2019
Role(s): Test - Test Automation
Knowledge: Agile, Scrum, Test Automation, Chain Testing, Acceptance Testing, Migrations (Open Text and Sharepoint), Java, Selenium, Python
Context: As a tester for the Province Gelderland I have been part of many different projects; Migrating Open Text (Enterprise information management) and Sharepoint(2010 to 2013), as well as development of a new application for the subsidy applications.
Tasks:

  • Test

  • Agile Team Member

  • Oversee and help out with Acceptance Tests

Results: Within the province many different processes happen simultaneously. Professionalizing the testing in itself, maintaining legacy systems, development of new systems and transitioning into a directive organisation where all IT is outsourced. This calls for strict quality control. The challenge was to be part of many different projects, testing different systems and at the same time gain in depth knowledge of these systems, especially the legacy systems where information and documentation was sparse. I was part of both the testing efforts and of the general effort to improve the quality of the test process where we looked at roles and responsibilities, management of environments, planning, documentation and opportunities for test automation. Another important part of my work was to get the officers of the province together with the build teams and work towards a shared understanding.

Client: Homefashion Group

Period: September 2016 - February 2017
Role(s): Test
Knowledge: Jira, Trac, Youtrack, XML, Java, Selenium, Python, Exploratory Testing
Context: In the hectic environment of a retailer that wants and must modernize it’s systems we maintained legacy systems and build new systems (web shop)
Tasks:

  • Test

  • Test Automation

  • Chain Testing

  • SOAP service Testing

Results: In the Homefashion Group I was part of a team of three testers. Together we were responsible for testing the web shop that was being rebuild, as well as new web shops that were being added. Apart from this it was my personal responsibility to test the legacy ERP systems (Progress). This was especially challenging because the system was constantly being worked on to support ever changing product lines, delivery channels and transport ways. I twas not easy to come to understand the system since it was complex, there was no documentation and full of temporary fixes and technical debt. For the web shops I built a small test framework in Java and Selenium which we used to write our tests together with one of my colleagues.

Client: Exact

Period: July 2016 - August 2016
Role(s): Test
Knowledge: Testing, Test Automation, Team Foundation Server, C#, Selenium
Context: I worked as Scrum Team member in the Accounting Core team of Exact Online
Tasks:

  • Test

  • Test Automation

  • Regression Testing

Results: Exact Online provides customers with software for there accounting. Withing this project I was part of the Accounting Core team which was responsible for some of the core functionalities. It requires a detailed scrutiny and critical insights to deliver the required quality up to standards. I contributed in the form of Exploratory Testing as well as writing automated regression tests within the custom framework, as well as in C# with selenium. Exact Online was at that moment moving towards using the latter for all the tests. Apart from this I was an active part in improving the Scrum process for instance by making User stories and Acceptance criteria more explicit.