Head First Object-Oriented Analysis & Design
B. McLaughlin, G. Pollice, and D. West
Coleen Gorman, Associate Editor
Requirements analysis and application design are so crucial to what we do, it's no wonder that shelves of books have been written about the topic. What's shocking about Head First Object-Oriented Analysis & Design, by B. McLaughlin, G. Pollice, and D. West, is just how far it stands above that pack.
Here, in a hip, humorous, both-feet-in-reality package, are the essential skills and techniques you need to launch software projects right: How to boil your customer's words into usable requirements and use cases. How to be an architect without floating into ivory-tower la-la land. What principles drive a good design, and how to recognize when you're following them.
It's mostly done in the context of examples, which are messy and derived from repeated conversations with customers who aren't engineers and whose requirements change midstream (you know-like your projects). The examples are simple enough to be comprehensible, yet the authors find surprisingly rich lodes to mine-even in constructing an automatic dog door! The Head First style really shines here, throwing enough graphics and sidebars and exercises at you that your brain really can grasp the principles in the context of the current example.
Head First books are visual, personal, chock-full of exercises, and might appear downright silly if you just flip through one. Don't be fooled. There's serious neurological and learning theory behind the goofiness, and it's quite effective. I've been at this game for decades, and I kept smacking my forehead: "That's how you do that! I've always wondered!"
A sound byte from Spinellis in Code Quality: "maintainability [is] a limited, non-renewable resource that application developers endow their code with." Well, think about it: Isn't that what usually happens to code-impacting the environmental by "rusting" out maintainability over time? Yet, his book is resolved to root out, from the beginning, a wide range of code plagues, paying careful attention not only to quality and how to prevent errors, but also to other areas such as efficiency with very practical ways to improve code without sacrificing elegance or reliability.
Each chapter concludes with several handfuls of hints. He calls them: "Advice to Take Home," which are dirt practical things you can do this afternoon to make your code hot. Spinellis gives you hundreds of insights into getting the best code out of the nonfunctional aspects of security, time constraints, space constraints, portability, and maintainability, plus a little foray into the tricky domain of floating-point math. Buy this book and be saved.
Scott W. Ambler and P.J. Sadalage
Refactoring Databases, by Scott Ambler and P.J. Sadalage, drags the task of manipulating databases into the agile, test-infected 21st century. Relational database manipulation exists in a weird netherworld of professional programming; it's part and parcel of every project, it's recognized by corporations as the repository of critical assets, it's got its feet firmly planted on the foundation of relational theory, and yet 90 percent of the discussion of database manipulation is "get a SQL reference." DDJ Contributing Editor Scott Ambler (don't worry, he recused himself from judging and discussions in the appropriate categories) and Pramod Sadalage is reminiscent of both Fowler et al. Refactoring, and the original "Gang of Four" Design Patterns, which are two pretty good books to be reminiscent of. The text is divided into several dozen specific refactorings, ranging from "Add CRUD Methods" to "Use Official Data Source," and each one contains both an instructional recipe and a thoughtful (and sometimes thought-provoking) discussion of the trade-offs and implications. Refactoring Databases is unquestionably worthy of a shelf spot near at hand.
CSS: The Missing Manual
David Sawyer McFarland
I am not a web design person, so when I opened David McFarland's CSS: The Missing Manual for the first time, I felt like I had entered a new world. This book got me excited because McFarland makes CSS and all of its nuances exciting. As a technical book, it is superb. The presentation is logical, lucid, and the topics incrementally build on each other. McFarland went to great effort to thoroughly explain each concept in text and graphical examples, and not to produce just another CSS reference manual-the result is a book that is almost effortless to read. In it you will find the best explanations of the Box Model and of "the Cascade" that I have read, plus negative margins, in-line block displays, and when to actually use tables-they are all here. If you are learning or working with CSS, you will value McFarland's tips on fixing the CSS bugs in all the major browsers, including the priceless gaggle of IE HTML hacks in each chapter. Don't miss this gem: It's a cover-to-cover read.