Training sessions and talks

One of the things I like most about my work is the ability to help teams improve, by sharing my experiences and knowledge in training sessions. These sessions can be conducted in the form of interactive workshops, masterclasses or talks.

Here are some of the topics that I can help you with:

Introduction to Continuous Delivery / Deployment

Continuous Integration, Continuous Delivery, Continuous Deployment. Three very important cornerstones of modern software development and vital to be able to deliver software fast. In this session I’ll show how to build an effective deployment pipeline and the implications and requirements when automatically deploying every single commit to production.

Legacy applications and the Strangler Pattern

It’s a situation many of us are familiar with: a large legacy application that generates income, but suffers from limited or no tests, a slow & manual release process and a team that has low confidence.

Using examples and lessons learned from a real-world case, I’ll show how to apply the Strangler Pattern on that legacy application and get things moving again. We’ll also take a look at testing strategies and various best practices.

Workshop Test Driven Development (TDD)

Tests enable change. Through code kata’s (such as Mars Rover, or Game Of Life) we’ll discover the “Red-Green-Refactor” loop, the FIRST principles, mocking, pair programming and all the other things required to write good (unit) tests.

Workshop Behavior Driven Development (BDD)

Building the thing right is very important, but building the right thing is even more so. BDD enables a team to write automated tests that capture the intent behind functionality and verify that same functionality. In this session we’ll discuss Ubiquitous Language, specification by example, scenarios and how to implement scenarios as automated tests.

Docker & Kubernetes

Containerization is easily one of the most interesting and fundamental technologies in recent years. Packaging and deploying applications as software containers enables rapid change, immutable infrastructure and systems. Orchestration tools such as Kubernetes can automatically manage, schedule and scale your containers. In this session I’ll discuss development and testing using containers, the practical implications of a containerized setup and the basics of how to employ Kubernetes.

Introduction to DevOps

As Werner Vogels, CTO of Amazon, says: “you build it, you run it.”. The shift towards the DevOps mentality / mindset is one of the most important and profound changes in our industry. Just writing code as part of a project is no longer sufficient. In this session I’ll discuss responsibility, ownership, breaking down walls, “code as craft” and the various challenges posed to the modern developer.

Leadership in Agile / DevOps environments

A session that’s based on my experiences as a scrum master and lead developer, but also as a non-commissioned officer with the Dutch Army. I’ll discuss strategies, values, communication and (modern) leadership styles.

Introduction to Microservices

“Microservices are an approach to distributed systems that promote the use of finely grained services with their own lifecycles, which collaborate together.” – Sam Newman

In this session I’ll discuss the how & the why (or why not) behind microservices. How to manage complexity, testing and scalability, and how to enable robust services by introducing chaos engineering and anti-fragile thinking.

Event Sourcing & CQRS in production

CQRS & event sourcing are currently very popular topics, with good reason. However, most blogs and talks focus on the theory, simple applications or introductions to one of the frameworks currently available, not necessarily the challenges of using and maintaining it in production. This session bridges that gap and looks at some of the pitfalls of a real-world deployment. I’ll discuss topics such as concurrency & scale, refactoring events and updating read models.

Modern infrastructure essentials

In this session we’ll take a look at virtualization, containers, infrastructure as code, immutable infrastructure, (auto-)scaling, cloud services and clustering.

Monitoring, logging, measuring & dashboarding

Every team needs to know the state of their application in production and be able to quickly detect and fix any issues, before the customer encounters them. This session discusses available open source tools (such as the Elastic stack, Prometheus, Nagios, Dashing, Grafana and others) and their implementation to build a complete and powerful monitoring system.