Surviving Legacy Code

Friends don't let friends get stuck in code they're afraid to change

Working with legacy code remains difficult. We feel afraid to change it, but sometimes we have no choice.

Learn key techniques to help you manage your risk. J. B. Rainsberger gives you a safe code base in which to experiment and his video demonstrations guide you through the confusing risk/reward decisions involved in living with legacy code. You will learn and practise several specific, safe techniques that you can start using on your own legacy code once you return to your project.

You should purchase this course if you have code that seems impossible to change, code that you feel really uncomfortable changing, or you want to avoid creating code like it in the future. J. B.'s advice transcends business domains and programming languages. Moreover, you get to watch him think through the tough choices as well as improve the design with (relative) grace and ease.

After watching a video, it's your turn to try the techniques out for yourself, and you can even ask your fellow learners for their advice. All you need is a working development environment for your favorite programming language and to install git. (Strictly speaking, you don't even need to do that, but you probably should.)

Although the demonstrations are necessarily limited to a small number of programming languages, the practice code base is available in (at least) bash, C#, C++, C, COBOL, CoffeeScript, D, F#, Go, Groovy, Java, JavaScript, Lua, Objective-C, Perl, PHP, PowerShell, Python, Ruby, Rust, Scala, Smalltalk, Swift and VB6.

You don't need to know any fancy frameworks. (That's probably part of what got you into trouble in the first place.) You don't even need testing libraries, although you really should probably find one and install it. You only need a place to watch, listen, practise, and enjoy.


Your Instructor


J. B. Rainsberger
J. B. Rainsberger

J. B. (Joe) Rainsberger is one of the "second wave" of TDD practitioners and Extreme Programming enthusiasts: he learned directly from the pioneers of the field. His book, JUnit Recipes, was the standard for over a decade for Java programmers who wanted to do what we today call developer testing or programmer testing. He has taught thousands of programmers around the world to bring high discipline to their work since 2003.

Since 2010, J. B. has wandered Europe teaching people how to manage the never-ending onslaught of work, how to adopt new working practices safely and effectively, how to understand and even grow to respect their most annoying co-workers, and how to find the time and energy to improve as though finding loose change in the couch cushions. He helps not just software development professionals turn their dreary day job into a Dream Job, including sharing how he engineered his first extended retirement period from age 34 to 40!


Participants receive lifetime access to this course and every future version, which includes video demonstrations of the code techniques, extensive articles about organizing the work and navigating the people, as well as a place to discuss each lesson with your fellow learners.

enroll yourself
purchase as an individual or a company
enroll other people
purchase for a group or other participant

view the equivalent price in your currency at xe.com (then please come back!)

Course Curriculum


  Jump Into the Deep End
Available in days
days after you enroll
  Before You Continue In This Course
Available in days
days after you enroll
  Before You Rush Into Changing Code...
Available in days
days after you enroll
  Short Takes
Available in days
days after you enroll
  Extras and Fun Stuff
Available in days
days after you enroll

Frequently Asked Questions


When does the course start and finish?
The course starts now and never ends! It is a completely self-paced online course - you decide when you start and when you finish.
How long do I have access to the course?
How does lifetime access sound? After enrolling, you have unlimited access to this course for as long as you like - across any and all devices you own.
What if I am unhappy with the course?
We would never want you to be unhappy! If you are unsatisfied with your purchase, contact us in the first 14 days and we will give you a full refund.
Which programming languages does this course address?

The demonstrations are (so far) in Java, because it remains a dominant legacy language, but the practice code base is available in a wide variety of languages. The usual suspects are represented (C, C++, C#, Ruby, Python, PHP, JavaScript/CoffeeScript) in addition to some particularly fun ones (COBOL, Perl, D, PowerShell) and some that you might not expect to see legacy code written in just yet (Groovy, Go, Lua, Rust, Swift). Naturally, you'll find a VB6 version, too.

Wait a minute... isn't this just Legacy Code Retreat?!

Yes and no. Yes, the videos come from exercises that I typically use when I run a Legacy Code Retreat; however, how many of you have attended LCR and got to pair with me, huh?!

You can think of this course as snapshots of all the best moments from all the Legacy Code Retreats I have ever been to, plus all the ones I will ever go to, in a series of highlight reels, tastefully edited.

What happens when I try to practise this stuff as part of my day job?

That's up to you. I've included some information about how to start rescuing legacy code with confidence at work, but the rest is up to you. If you need my help or want to pair with me, then please ask your manager about booking remote working sessions with me.

Participants receive lifetime access to this course and every future version, which includes video demonstrations of the code techniques, extensive articles about organizing the work and navigating the people, as well as a place to discuss each lesson with your fellow learners.

enroll yourself
purchase as an individual or a company
enroll other people
purchase for a group or other participant

view the equivalent price in your currency at xe.com (then please come back!)