This Old Pony: Working with Legacy Django Apps

Ben Lopatin

Wednesday 11:30 a.m.–noon
Audience level: Intermediate or Advanced


"Legacy" is a word that produces fear in many software developers. However it means nothing more than software that already exists, and you're probably working with it already, admit it or not. We'll take a tour through what legacy Django projects look like, how to approach them, and how to work on them while keeping your wits.


Legacy software is software that already exists. It may be a project you've inherited after joining a team, a new client's application, or something you wrote last year, or last month. Most software developers seem to prefer "greenfield" development, where you get to start from a clean slate. The reality is that there's a lot of "brownfield" development out there, that it rarely makes sense to throw away working software, and we can control the experience quite a bit to make our lives, and the software, better. If you haven't worked with legacy software chances are pretty good you will.

We'll first walk through what "legacy" means, and what this looks like specifically for Django developers and Django projects. We'll also cover some of the scenarios in which you may find yourself working with legacy codebases. This includes the types of issues you'll be presented with, both generally and specific to Django.

  1. What do we mean by legacy code?
  2. What does a legacy Django project look like?
  3. What kinds of issues will you need to deal with?
  4. How to approach the codebase
  5. Tools for working with your new legacy codebase
  6. Introducing or fixing tests
  7. Common issues to look for and how to solve them
  8. Legacy deployment processes and other scary nightmares
  9. More features! Balancing business needs and "perfect" code
  10. Deciding when to upgrade Django and other dependency versions, and how to do this

Buy your conference and tutorial tickets here! Tutorials are $150 per session.