Chris Birchall's Re-Engineering Legacy Software (Manning Publications)
Chances are high that you didn't write the application you're currently working on. Most developers inherit projects built on an existing codebase that reflects design patterns, usage assumptions, infrastructure and tooling from another time and another team (and the docs are complete rubbish). To help you breathe new life into your legacy project, pick up Chris Birchall's new book from Manning Publications titled Re-Engineering Legacy Software. Birchall's book is an experience-driven guide to revitalizing inherited projects, covering refactoring, quality metrics, toolchain and workflow, continuous integration, infrastructure automation and organizational culture. On the purely technical side, readers will learn techniques for introducing dependency injection for code modularity, quantitatively measuring quality and automating infrastructure. On the strategic side, readers will develop practical processes for deciding whether to rewrite or refactor, team organization and even convincing management that quality matters. Core topics include deciphering and modularizing awkward code structures, effectively integrating and automating tests, replacing an outdated build system and infrastructure automation using tools like Vagrant and Ansible.