We know what it feels like to work with legacy code. It’s messy, opaque. It’s frustrating, confusing. It doesn’t let us work the way we want to. Ultimately, I think we can define legacy code as “things developed without the simplifying assumptions that you’re using now.”