Working Effectively with Legacy Code Workshop

Working Effectively with Legacy Code Workshop

Refactoring code without having test in place? Never again!

Course abstract

Test-Driven Development and Refactoring are powerful tools. With them you can add new code to systems and make existing code more maintainable. However, refactoring code without having tests in place can be hazardous.


This workshop presents a collection of dependency breaking and test writing techniques that can be used to get existing code safely under test for refactoring. These techniques can be used in conjunction with Test-Driven Development to breathe new life into large existing code bases.


  • Testing as a Programmer’s tool
  • Seam identification
  • Breaking Dependencies – Sensing and Separation
  • Breaking Hidden and Manifest Dependencies
  • Characterization Testing
  • Refactoring Toward Understandability
  • Strategies for Getting Large Methods under Test
  • Dealing with Deeply Nested Conditionals
  • Planning Large-­Scale Refactoring and Technical Debt Reduction.

What will you learn

By the end of this course, you will:

  • Understand what legacy code is
  • Understand how to break dependencies in legacy code
  • Learn a variety of techniques for breaking external dependencies
  • Learn a variety of techniques for breaking internal dependencies
  • Understand when to employ each of the techniques
  • Learn a variety of strategies for code refactoring
  • Learn how to identify change points
  • Learn how to find an inflection point
  • Understand the concept of test coverage for inflection points
  • Understand how to write effective tests for legacy code.

Entry requirements & Target audience

This class is structured as a set of lectures, discussions, and hands­-on exercises.
You will be able to select among Java, C++, C# and JavaScript for the exercises, therefore an intermediate knowledge of these programming languages is required (at least 2+ years experience).


Tools & Laptop: Do I need my laptop?
Yes, you will need to take your laptop with you.

Entry requirements: Is there anything I need to do before the workshop?
No, there’s no need to do anything prior to the workshop.

Teaching language: What language will this workshop be on?
This course will be taught in English.


If you fight against a Monster Method and a God Class, you have to participate to this workshop.Gianluca Padovani

Learn what every software engineer should know!Gianluca Romanin

Michael Feathers

Michael Feathers is the Founder and Director of R7K Research & Conveyance, a company specializing in software and organization design. Over the past 20 years he has consulted with hundreds of organizations, supporting them with general software design issues, process change and code revitalization.

About the workshop

Language: The workshop will be held in English.
Time: from 9.30 am to 5.30 pm each day.
Laptop: Yes, see above for further instructions.
Dress code: Informal.
Included in the price: Two coffee breaks and lunch with the trainer and the other attendees are also included in this ticket… because networking matters :-)

How to get to Milan?

You can get to Milan City Centre by flying in to one of these three airports: Linate, Malpensa, and Bergamo Orio al Serio. Not bad, isn’t it? :-)

Check our Venue & Location Info Page and get it sorted! With plenty of handy information on accommodation, travel options, where to find the training venue, and much more!

Not enough? Drop us a line at [email protected].

Wanna know more?

Read the interview with Michael Feathers and Matteo Baglini on our blog: “I don’t like complicated code.” Michael Feathers on Legacy Code and Technical Debt.

Are you interested in this course?

If you have any specific questions, or if you want to receive more information on dates, content or offers about this course, drop us a line. We'll gladly get back to you!


    Get exclusive content from experts in software development, technology, business and design!


    Subscribe to our newsletter!