Refactoring Legacy Code Without Fear
Refactor with confidence. Retrofit tests. Master the system you thought was untouchable!
Are you working with a system that feels like a black box? It’s fragile, slow to change, and every small modification feels like a gamble. Someone mentioned rewriting everything… but that’s a financial black hole!
Imagine confidently changing legacy code, safely adding features, and improving maintainability without breaking anything. Imagine your team collaborating effectively on the toughest parts of the system.
The Refactoring Legacy Code Workshop is an advanced training program inspired by Michael Feathers’ book “Working Effectively with Legacy Code.” It was designed by the trainer Alessandro Di Gioia and enriched with modern topics and the “Legacy Code Smells” classification.
The course develops through hands-on sessions on Refactoring Calisthenics and Characterization & Mutation Tests, enabling the participants to tackle even the most complex code issues confidently.
Join this advanced workshop and experience with Alessandro practices to retrofit tests, break dependencies, and master your legacy system, one clean step at a time.
Learning Objectives
By the end of this workshop, you will be able to:
- Confidently refactor code even without initial test coverage
- Break harmful dependencies and isolate code for testing
- Use characterization and mutation testing to understand behavior
- Apply refactoring calisthenics in real-world, messy codebases
- Face and overcome complex “big ball of mud” scenarios
You’ll walk away not just with techniques, but the mindset and collaborative habits to lead modernization efforts in your team.
The Trainer 
Alessandro Di Gioia is a Software Crafting advocate, trainer, and co-author of Agile Technical Practices Distilled.
He brings years of hands-on experience helping teams regain control of complex systems, and he’s known for making advanced technical practices practical and engaging.
Target Audience
Is This for You?
Yes, if you are:
- A Developer facing complex legacy systems
- A Tech Lead trying to make safe progress in risky code
- A Quality Engineer who wants to retrofit safety nets into production
- A Senior Engineer who wants a deeper, modern take on legacy code than the usual katas.
What People Are Saying
“It would normally take years for a developer to learn the many lessons taught in this course.”
Anders Marchsteiner, Software Architect
“I’ve never thought that things can become so much easier with the right technique.”
Philip Benz, Senior Software Engineer, CSS Insurance (CH)
Program Overview
Six live online sessions of 3.5 hours each.
A mix of theory, practical exercises, and group collaboration, with space for homework and further study between modules.
The entire course is built around Software Teaming (Mob Programming), maximizing shared learning and collaborative refactoring under real-world constraints.
In the final challenge (which has been called “end-level monster”), the participants have to solve collaboratively a realistic “big ball of mud” scenario, applying everything they have learned in the previous lessons.
We recommend taking this course after the completion of the Software Crafting Programme with Marco Consolaro.
Agenda
Module 1: Code Renovation – Mikado Method & Parallel Change
Learn to safely refactor complex legacy systems with structured, incremental techniques.
Discover the Mikado Method for breaking large refactoring goals into manageable steps, identify obstacles systematically, and integrate improvements without blocking team progress. Build a repeatable framework for reducing technical debt while keeping your system stable.
Module 2: Refactoring Calisthenics
Discover the foundational principles of clean, controlled code transformation and build the habits for consistent, safe refactoring.
Module 3: Refactoring Calisthenics – Dependencies
Learn to break hidden couplings and decouple code for better testability and maintainability.
Module 4: Characterization and Mutation Testing
Retrofit tests into untested codebases safely and incrementally. Understand behavior through characterization and validate it with mutation testing.
Module 5: Advanced Refactoring Applied I
Apply your skills to tangled, real-world scenarios in a collaborative group setting, practicing techniques in a controlled, hands-on environment.
Module 6: Advanced Refactoring Applied II
Face a large-scale “big ball of mud” challenge, combining everything learned. Solve complex issues collaboratively and put your refactoring mastery to the test.