Adam Petersen - Software Development Pages, Book Reviews Section
Start News Articles Book Reviews

Book Review

Agile Database Techniques : Effective Strategies for the Agile Software Developer
by Scott Ambler

ISBN: 0471202835
Publisher: Wiley
Pages: 480

When it comes to practical techniques that work for everyday software development, Scott Ambler is one of my favorite sources. His book UML Style provides a tremendous amount of value for little money and should be on every software developer’s desk, or perhaps in his/her pocket (after all, it’s a small book). Scott’s Object Primer takes on a broader subject and has much in common with Agile Database Techniques. In fact there’s a large overlap between these two books and the reason is Scott’s stated goal of bridging the gap between DBAs and software developers. Traditionally these two roles have been working isolated from each other with little to none understanding of each others motives and techniques. For successful software projects, where communication is everything, such a specialization simply isn’t possible and fundamental skills in all areas are necessary. That’s why this book covers a lot of design techniques also found in Object Primer (TDD, UML modeling, etc). Similarly, Object Primer includes a chapter about database techniques.

Scott Ambler covers a lot of ground in this book. Besides the software design techniques mentioned above he provides useful introductions such as a Data Modeling 101 chapter and introduction to data- and class-normalization. The only nit with these introductions is that they require a basic understanding of databases, in particular relational ones, and that topic isn’t covered until later chapters.

After an interesting discussion of the problematic object-relational impedance mismatch, to which Scott later returns in throughout and practical discussions of mapping objects to tables, Scott includes one of the most valuable chapters where he covers legacy databases and how to work with them; not an exciting topic but a necessary evil for most development teams. Another necessary evil is performance tuning, where the book presents a mini-process for analyzing the problem and possible techniques for tuning it away.

So far that’s pretty much what I expected from the title but the final chapters of the book covers so much more; from XML databases (a great overview and solid, practical advices on when you want one and, perhaps more important, when not) to pure cultural and people-oriented problems like bringing agility into an organization. And, just as I thought I’ve finished my reading, a pearl in the shape of Appendix A turns up! Appendix A is a collection of database refactorings. Very valuable and Scott’s later work has expanded the refactorings into a book of their own (it’s definitely on my reading list).

The book is filled with valuable tips and techniques, just like Object Primer. Unfortunately the information bombardment leaves a rather confusing impression, once again just like Object Primer. I mean, I’ve learned a lot from it and I believe most developers would, but the organization of the material makes a pretty random impression and that is distracting. However, I guess my criticism sounds more serious than it is; if you already know the basics in relational databases and software modeling, it isn’t much of an issue and I would definitely recommend this book.

Reviewed July 2006

©2005 Adam Petersen