I'm reading Michael Feathers' Working Effectively with Legacy Code . It's a readable book that addresses a very technical problem: how can we best use our newest programming techniques with old code?
When I think of legacy code, I think of mountains of COBOL and heaps of FORTRAN. Even early C++ programs, written before modern C++ idioms were discovered and before inheritance was really understood.
But when Feathers thinks of "legacy" code, he means "code that isn't test driven". Meaning, in practice, just about all programs that are more than a couple of years old, and (I bet) plenty of systems written yesterday.