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.