I'm going to come right out and say this upfront: Martin Fowler's Refactoring is the single best software development book I've read yet. What is refactoring, you ask? I'll let the subtitle answer that: "Improving the design of existing code." Essentially, refactoring is an organized, controlled, and safe way of making code better; the book contains a large and useful catalog of refactorings.
But that's not all it has. The sizable first portion of the book explains the motivation behind refactoring (including convincing rebuttals to the "if it ain't broke, leave it alone" argument); it talks about when you should consider refactoring; it also goes into some detail about unit testing, which makes refactoring (and development in general) safer and easier.
Software development texts tend to fall into one of two camps: Either dry and soporific (the Gang of Four Design Patterns text; Jacobson, Booch, and Rumbaugh's The Unified Software Development Process), or gushing and hyperbolic (Shalloway and Trott's Design Patterns Explained). Far more rare is the book that's pragmatic, readable, and informative -- but Fowler's written just such a book.
If you're a working developer (particularly if you develop or maintain object-oriented frameworks), get this book. The people who maintain your code when you're gone will thank you.