I've been contracting and taking care of legacy software this year. My initial parallel steps are to ask questions, read the code, write tests and literally any kind of documentation, all while trying to implement features. You can spend months trying to understand some software, and never really get anywhere because there's no requirements/documentation, your manager doesn't know, and no one who wrote that code works there any longer, or they're just too busy. It's a hot mess.
(I'm not even a Test Driven Design evangelist. There's just no other way to "prove" that things kind of, almost, sort of, work in a possible environment.)