|
|
AS OF 5/17/2008 8:36AM EST
|
May 1, 2007 —
I normally leave my summer reading column until June, but between global warming and some exceptional offerings from the publishing companies, the time seems ripe to suggest some books to accompany you to the beach. In the interest of full disclosure, I should state that Im friends with several of the authors whose works Im recommending.
Ive already written in this column about my favorite book of last year, Refactoring Databases by Scott Ambler and Pramod Sadlage. Along with Amblers Agile Database Techniques, this book brings database development into the change-embracing, unit-tested 21st century.
Manipulating relational databases stands in complex relationship to manipulating text-based source code and regular software development. On the one hand, relational theory is a vastly more stable foundation than mainstream programming paradigms; even the most recalcitrant corporations understand the value of their data stores; and database servers are tremendously sophisticated tools. On the other hand, programming databases, whether manipulating data or table structures, is rarely treated with the same kind of respect that we give to compiled code; theres often an assumption that the database will somehow be trivially derived to suit the needs of the real code, or perhaps, that a tyrannical DBA is forcing compromises on an otherwise pristine design.
In truth, databases in the real world scream for refactoring and unit-testing, and either slavish devotion to or callous disregard for existing database structure is among the most common mistakes I see. (Just this morning, I spent an hour and three-quarters in a design meeting that centered around this very problem.) These two books plainly and simply saved my butt in a big project last year, and I think its a rare bookshelf where they wont find a permanent spot.
Whatever book you may have used previously for the one book about OOA&D to have if youre having only one, you may well want to retire it in favor of Head-First Object-Oriented Analysis & Design by Brett McLaughlin, Gary Pollice and David West. Ive not been the biggest fan of the Head-First series. The graphically busy design of these texts and their multimodal approaches to learning are definitely in keeping with modern pedagogy, but Im not at all convinced that this is necessarily the best way to learn, for instance, a programming language.
OOA&D, though, with its high concept count, communication demands and specialized jargon, is excellently suited for the approach. Even more important, the book does a good job of covering the broad array of subjects in play in modern OOA&D, including such things as the current emphasis on iterative development and testing and their influence on analysis and design.
The book is light on UMLperhaps too light. You dont have to work for IBM Rational to like Activity Diagrams, for instance. But pair Head-First OOA&D with Martin Fowlers still-unsurpassed UML Distilled, and youve got 90 percent of what you need to do OOA&D. The other 90 percent of what you need is experience. (And if you havent yet experienced a software development project thats consumed 180 percent of effort
)
Charles Petzolds work is always noteworthy. Last year brought Applications = Code + Markup, which is the best tutorial on Windows Presentation Foundation Ive seen. This summer we can look forward to a book by Petzold on 3D programming for WPF, but I want to recommend his book Code: The Hidden Language of Computer Hardware and Software, which came out in 2000. Code is a technical history of computers, touching on mechanical predecessors (abaci, Napiers bones, Babbages works) but focusing primarily on what weve done so far by combining Boolean logic, information theory and electronics.
Code is, by popular standards, technical (it doesnt have pictures of trains carrying 1s and 0s), but if you want some fiber in your diet, pair it with Inside the Machine by Jon Stokes. Subtitled An illustrated introduction to microprocessors and computer architecture, this is a handsome text that gets to the nitty-gritty of branch prediction, cache architecture and vector execution. As is inevitable with a book this close to the metal, its already a tad outdated, ending with some too-brief words on the Intel Core 2 Duo.
If your eyes are too tired to read, I highly recommend the audiobook version of John Hodgmans The Areas of My Expertise, which he labels an almanac of complete world knowledge. Not a lot of developer-specific stuff, but Hodgman is the guy who plays the PC in those Macintosh ads, and hes accompanied on guitar by Jonathan Coulton, composer of the anthem Code Monkey, and the obsessive list-making nature of the endeavor makes it clear: Hes a member of our tribe.
Larry OBrien is a technology consultant, analyst and writer. Read his blog at www.knowing.net.


|