Working Effectively with Legacy Code by Michael Feathers

460.00 final price


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 class 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. This class is structured as a set of lectures, discussions, and hands-on exercises.

Who should attend

This course is for developers. There will be extensive coding exercises. Exercises will be available in Java, C#, and Javascript.


  • You will be able to select among JavaC# and JavaScript for the exercises, therefore an intermediate knowledge of these programming languages is required.
  • Please bring your own laptop.

What will you learn

By the end of this course, you will:

  • Understand what legacy code is
  • Learn a variety of techniques for breaking dependencies
  • Understand when to employ each of the techniques
  • Learn how to identify change points
  • Understand how to write effective tests for legacy code
  • Learn how to avoid Technical Debt

Here is a brief course outline for the course:

  • Approaching Legacy Code
  • Breaking Dependencies – Sensing and Separation
  • Characterization Testing
  • Refactoring Toward Understandability
  • Strategies for Getting Large Methods under Test
  • Planning Large-Scale Refactoring and Technical Debt Reduction

The format of the course is lecture, exercises and discussion.

About the instructor

Michael Feathers over the years, has spent a significant amount of time helping teams gain control over large code bases in C, C++, C#, Java, and Ruby. He was involved in the early Agile movement and one of his passions is helping organizations recognize the impact of their internal organization and communication on the long term viability of their software products – putting interactions in place to prevent the accumulation of technical debt and lost business opportunities.

Currently, he is helping teams and pursuing research in business / development communication, preventing errors through design practice and array-functional programming languages. His goal is to make software development more effective and integrated with business concerns.

He is also the author of the book ‘Working Effectively with Legacy Code

Specialties: Software Development Practices, TDD, Refactoring, Legacy Code Revitalization, Team Dynamics


Next 1-day course has been scheduled for 19 September 2018 09.30am – 05.30pm.


The course is taking place in Agile Actors #learning premises, 62A Ethnikis Antistasis, Chalandri, Greece