Agile Programming
Extreme Programming Explained: Embrace Change (0201616416) by Kent Beck is the original book on XP by the man who invented it. Still the best overview.
Extreme Programming Installed (0201708426) by Ron Jeffries, Ann Anderson, Chet Hendrickson, Kent Beck is more detailed, and will help you learn to do it.
Planning Extreme Programming (0201710919) by Kent Beck, Martin Fowler concentrates on the Planning Game.
Refactoring: Improving the Design of Existing Code (0201485672) by Martin Fowler is a necessary resource if you're going to Refactor Mercilessly.
Extreme Programming Applied: Playing to Win (0201616408) by Ken Auer, Roy Miller is a practical book with some slightly different points of view.
Agile Software Development (0201699699) by Alistair Cockburn is a really cool book about the people aspects of software development. It goes really deep. It's not an XP book, by the way.
Lean Software Development: An Agile Toolkit for Software Development Managers (0321150783) by Mary and Tom Poppendieck. This one is on my list to read. I read some of the pre-publication drafts, and found it very good. Good enough that I want to read the whole book. This book explores the value equation to the business of practicing agile development.
Development Tools and Practices
Working Effectively with Legacy Code by Michael Feathers (0131177052) Another book on my list to read based on some of the pre-publication excerpts. How do you alter a system that has no safety net of unit tests and is an architectural mess? Here's a bunch of techniques. As Michael Feathers describes it:
In a way, it is sort of like a prequel to Martin Fowler's Refactoring book. The book contains a set of stategies you can use to understand code, get it under test, add to it without mucking it up, and decide on more appropriate designs in light of what is there. A large part of the book is FAQ-ish with chapters named after common problems, and it ends up with a set of dependency breaking techniques you can use to help get your code under test.
Java Tools for Extreme Programming: Mastering Open Source Tools Including Ant, JUnit, and Cactus (047120708X) by Richard Hightower, Nicholas Lesiecki is more about the tools than it is about Extreme Programming, but that's certainly not a condemnation of the book.
Enterprise Applications
EJB Design Patterns: Advanced Patterns, Processes, and Idioms (0471208310) by Floyd Marinescu is the book on EJB design patterns. Much more in-depth than that published by Sun's engineers.
Patterns of Enterprise Application Architecture (0321127420) by Martin Fowler, et. al. If you're building distributed, persistent systems, this is the book to read first.
See also: BookReviews