Less Painful Legacy Code Replacement

Accepted Session
Short Form
Scheduled: Tuesday, June 21, 2016 from 10:00 – 10:45am in B202/203


Replacing legacy code is a challenge on every front, from managing stakeholder expectations to tackling the technical work. Thoughtful preparation and a pocket full of tools can make the experience a little less painful.


Last year, I needed to replace a business-critical system that also had a dozen or so undocumented rules that were each independently crucial, and no one at the company knew what all the rules were. A few months later, I shipped the replacement and waited for the bug reports to start rolling in – but they didn’t.

Being ugly isn’t what defines legacy code; code is legacy code when its behavior isn’t well defined or known. If you need to replace code whose behavior isn’t well defined, you’re going to need more than just the ability to churn out clean code. I’ll go over the steps to prepare for a legacy code rewrite, and also introduce some design patterns that can be useful when working with legacy code. These aren’t a guarantee that everything will go flawlessly, but together these tools can help you have a less painful experience replacing legacy code.

Speaking experience

I've given some internal training sessions, and ran some workshops back in school, but am relatively new to public speaking.
I gave a lightning talk at AdaCamp in 2014, ran a workshop at RailsCamp West in 2015, and presented a 20min version of this talk at the SF.rb meetup in March 2016.


  • Biography

    Jennifer Tu enjoys learning about all aspects of software development, whether it’s improving code, pairing with designers on user interviews, or something else entirely. Besides refactoring and rewriting, her most recent software interests include giving better feedback and sketch noting. Jennifer currently writes software for doctors, patients, and everyone in between at One Medical Group.


Leave a private comment to organizers about this proposal