97 Things Every Software Architect Should Know edited by Richard Monson-Haefel
Publisher: O'Reilly Media
97 Things Every Software Architect Should Know is a collection of edited blog post. The core idea is to let experienced software architects present valuable principles on various development issues. Issues that span a wide range of areas and often go beyond technology. Although an honorable idea, the execution failed to meet my expectations. In general I like collections like this. I'm ready to accept that, given a broad range of subjects and authors, some articles will interest me more than others. This is the case with 97 Things Every Software Architect Should Know too; the problem is just that the interest to non-interest ratio is way too low to motivate the investment in time of reading it.
The book sure has its gems. Edward Garson provides an interesting piece on considering context that falls in this category. The gist of his writing is that architectural decisions are always made in a specific context. It's always a trade-off which may include conflicting priorities. Sometimes a certain context may force us to abandon even the most fundamental principles like simplicity.
In another chapter Keith Braithwaite declares the importance of quantifying non-functional requirements; neither "fast" nor "responsive" are real requirements. Rather we need to understand the desires behind a certain adjective like "fast". It's about asking the right questions and, from the answers, derive a quantitative criteria. Since I'm regularly exposed to new projects with these kinds of requirements, I think his advice needs frequent repetition.
Another favorite is Kevlin Henney's argument for use before reuse. Kevlin shows an alternative and, unfortunately, less traveled road to generality. By understanding known and specific examples, we can identify commonalities. These concrete examples let us move on to simplify and reduce the problem to a more general form. It's a case against speculative generality and well worth reading.
Obviously, the purpose of this book isn't to provide an in-depth treatment of the topics. It's more about planting a seed, make ideas awake. Since I do write a lot myself I'm well familiar with the challenges of expressing an idea in a page or two. Everything but the essence has to be stripped away. The chapters highlighted above succeed in this aspect. They provide a rewarding read and there are a few more with similar qualities. Unfortunately they are exceptions that stand out. The majority of the chapters falls short on content and value. In case you're interested in essays along these lines, consider The Best Software Writing edited by Joel Spolsky instead. Joel includes more lengthy articles and the selection process seems more refined. By his introductory comments Joel adds value to texts that are already available for free on blogs. Ultimately, adding value has to be the purpose of any collection of this kind.
Reviewed July 2012