Really helpful in understanding the why of patterns. Talks about a project at the University of Oregon. Reading this book put some key ideas into focus, like how you use patterns when not starting from scratch, and how to deal with specialized situations where the book of patterns you have doesn't cover everything. This book describes what to do to change code that has gotten messy with time, and how to proceeed to make the changes. If you've been doing Object-Oriented programming for a while you probably know much of what is in here, but it is worth reading anyway, both as a reminder, and as a way to explain the techniques to others.
Fowler describes the refactorings very clearly, with guidelines on when to use each technique.
Like Design Patterns, this book provides a vocabulary for the important techniques you use to change code. This is an excellent book about how to build good interfaces. The book, at first glance, is geared towards uasbility professionals, but anyone who has a role in building or specifying systems that have some sort of user interface will benefit from reading, and referring to, this book. Rapid Development, Taming Wild Software Schedules by Steve McConnell. An excellent book that describes best practices for the entire software development lifecycle.