Michael Feathers defines legacy code as “code without tests.” There’s a major qualitative difference when working on code without tests. Feathers’ job is to move software teams from their current process to a test-driven development process. In this interview he also discusses functional programming and other important paradigms that developers should consider.