Don't be mislead by the title! What this book is and what it's not: This book is great stuff and fun to read. It's very code-centric and it's personal. It's a hard read if you don't like reading non-trivial C++ or Java. It's about a C++-guru's revelation when confronted with agile software development (XP) principles and practices. It's about good OO software design. It's NOT about software development process. It's NOT trying to explain modern agile concepts at large in a philosophical style. Instead Bob Martin (with Co-coders J.Newkirk and R.Koss) lets you have a look over his shoulder when he's test-first-coding and refactoring code examples (C++ and Java) until well-known design patterns emerge, taking a strong bottom-up approach. The book contains a sound collection of "Principles of OOD" (along with nice TLAs - three letter acronyms), to give guidance for the emerging design. All this is done in the context of XP, emphasizing practices like test-first development, pair programming and refactoring. What you find in the book are descriptions of the most useful design patterns followed by several case studies (with lots of code) that grow as we read. All in all, it teaches good OO design, under the heading "The Source Code Is the Design". Jim Reeves' article that first made this point of view popular is included as an appendix (Thank you!). This book compares nicely to Craig Larman's "Applying UML and Patterns" as both teach good OO design, Patterns and UML, all in a light process context and using case studies. Bob Martin concentrates much more on OO coding/designing, leaving out much of the process, OO analysis, and other areas that Craig Larman presents, at the same time giving more detail insight in (test-first-) programming and offers a more useful collection of OOD principles. It also contains a nice discussion on package design using some software metrics. As Bob Martin says in the preface, the devil is in the detail. If you are dogmatic about OOD, you may not like things like use of dynamic_cast to test for types, if you are a SQL expert you may not like his treating of RDBMS as minor implementation detail and if you see XP as a threat to quality software development, you will disagree with his approach as a whole. On the other hand maybe he could make you an XP aficionado yourself just by demonstrating how the practices and principles shown can help produce a high quality software product. The book contains some (changed) parts originally intended for a 2nd edition of Bob's book "Designing Object-Oriented C++ Applications using the Booch Method" and for the 3rd edition of Grady Booch's "Object Oriented Analysis and Design with Applications", both of which never hit the market. The book lacks a bibliography (well, it thus demonstrates it's not written for an academic, but a practicing audience ;-) ), the title may be misleading for some buyers and - it's not cheap. But the content of the book is definitely worth 5 stars.