Refactoring - Improving the Design of Existing Code by Martin Fowler, et. al.
Ever inherit a big mountain of nasty code and have to add new features to it? You can only play the "we have to rewrite it all from scratch" card with management a once every couple of years. This book is THE canonical reference for identifying smelly code and getting it cleaned up. It provides an enormous toolbox of tactics you can use to make incremental improvements to an existing code base. Using these tactics along with an iterative approach, you could very well rewrite an application from scratch over the period of a few releases and your management will be none the wiser. Every developer on your team needs to own this one.