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 of different types. These sessions can be conducted in the form of talks, interactive workshops, masterclasses or even sessions spanning multiple days.
Here is a list of the talks that I am currently presenting. When needed, I can create bespoke presentations based on my existing content. If you want me to present one of these topics at your conference or company, event then please contact me for details and pricing: firstname.lastname@example.org or @michieltcs on twitter.
Real-world Continuous Delivery: Learn, Adapt, Improve
This talk tells the story of a recent real life project I did together with 4 development teams. Learn how we adopted the textbook practices, patterns and principles of Continuous Delivery and applied them to an existing monolithic application. I’ll discuss what worked well & what didn’t, and how we dealt with the messy reality of failing pipelines, flaky tests and brittle infrastructure. Find out how we transitioned from mostly manual, bi-weekly, error-prone releases to 30 automated deployments per day, while significantly reducing overhead and increasing quality.
Database schema migrations with zero downtime
Does your application or service use a database? When that application changes because of new business requirements, you may need to make changes to the database schema. These database migrations could lead to downtime and can be an obstacle to implementing continuous delivery/deployment.
How can we deal with database migrations when we don’t want our end-users to experience downtime, and want to keep releasing?
In this talk we’ll discuss non-destructive changes, rollbacks, large data sets, useful tools and a few strategies to migrate our data safely, with minimum disruption to production.
Dealing with change in event sourced applications
In software development, change is pretty much the only constant factor. In fact, embracing change is one of the twelve principles behind the Agile Manifesto. As time passes, our understanding of the domain we are working in evolves. We develop based on new requirements, (better) insights, opportunities, changes in the market or legislation, or other factors.
These inputs eventually all lead to modifications to our application, which can be very challenging to implement if the application uses event sourcing. Indeed, when applied very strictly, event sourcing can be quite resistant to change. And unfortunately, there’s not a lot of literature on this subject (yet).
In this talk, we’ll explore how to deal with important questions such as projection updates, event updates and versioning, and existing privacy legislation (such as the GDPR).
Effective leadership for modern software organizations
Modern software development places a lot of emphasis on the autonomy, self-organization and responsibility of teams. A common misconception is that there is little or no role for leaders of such teams.
On the contrary! In this rapidly changing world, where competition is fierce and the pressure to deliver is high, effective leaders create environments that allow teams to thrive. They enable, coach and inspire.
But what makes a leader an effective leader? Attend this talk to learn more about various leadership theories, how they can be applied in practice, and my thoughts on leadership based on experience as a tech lead and scrum master and from military service.
Forget me, please? Event sourcing and the GDPR.
In May 2018, a new piece of EU legislation called the General Data Protection Regulation (GDPR) will come into effect. The GDPR attempts to regulate data protection for individuals within the EU and has very interesting and specific implications for applications that use event sourcing.
In that context, the most interesting and challenging part of the regulation is without a doubt Article 17, the ‘right to erasure’: the right for individuals to request that their data be removed from the databases of a company.
In this talk, I’ll discuss my thoughts on the GDPR and give a few helpful pointers and tips!
Workshop and session topics
Beyond the talks above, 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.
Breaking down the monolith: legacy applications and the Strangler Pattern
It’s a situation many of us are familiar with: a large, legacy, monolithic 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 monolith, break it down into manageable services, 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.
Introduction to 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.
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.
Introduction to 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.