97 Things Every Software Architect Should Know. By Richard Monson-Haefel (Editor), O'Reilly Media, 2009, 224 pages, ISBN 978-0596522698
97 Things Every Software Architect Should Know. From the title it should be pretty clear what we're getting, but the creation of this book is a little different. The editor goes so far as to state this is an Open Source book and likens its creation to Open Source Software development. It contains (you guessed it) 97 short (2-page) essays ('axioms'), each one contributed under a Creative Commons Attribution 3.0 licence. Each presents a single pearl of wisdom from an expert in the field of Software Architecture. It is a little like Thought for the Day , albeit with a narrower field of discussion.
Assuming you've some familiarity with software architecture (see Wikipedia if not ), it is quite an easy read. Each essay can be read in the time it takes the kettle to boil and there is nothing that is, on the face of it, complex or challenging. Topics covered include ideas for improving productivity, ways to avoid going round in circles when designing software and how to ensure successful communication with management and developers, all good things.
That said, while reading, I felt underwhelmed by some of the topics. Perhaps due to their short length, some of the 'Things' seemed underdeveloped. The occasional 'Thing' even read like a platitude. However, I also noticed as I read that I was favouring some contributors (many of whom have contributed more than one essay) over others, and even skipped those I couldn't get on with, which led me to wonder if some of the 'Things' appeared less interesting than they should due to the background of this reviewer. Would the same topics be more relevant to others? For example, the opening topic 'Don't put your resume ahead of the requirements' seemed so obvious as to be unnecessary, but maybe some people do that. I really enjoyed 'Simplicity Before Generality, Use Before Reuse' because it warned against something of which I can be guilty (trying to make software general before it even works), but perhaps such principles are obvious to others.
More 'Things' warranted a turned page corner (apologies to those who view this as the worst of sins) including 'Warning: Problems in the Mirror May Be Larger Than They Appear' (though this is unfortunately reminiscent of a Meatloaf song) and 'Business Drivers,' whereas others I quickly skipped, such as 'Stand Up!'. Which essay fits which category will, as I say, depend on your background, and you are sure to find essays that give helpful insights into the work of a Software Architect - a useful skill for programmers and managers as well.
The difficulty perhaps lies in working with the book. There is little to aid the reader to navigate the essays, aside from the oft times unclear titles. While in a more conventional book there is no more natural reaction than to press on after a brilliant chapter since that next chapter should build on the previous one, here a turn of a page flings you into another essay, and the thoughts generated by the gem you have just found are still-born. Therefore I soon found it better to stop, wait, to dwell and cogitate. If a 'Thing' struck a chord with me, it helped to spend some time exploring why and how that 'Thing' might be useful, even putting the book down and researching further on the Web.
It was a bold move on O'Reilly's part to publish a book where the content is Creative Commons and available on the Web . Bolder still is that they felt it could warrant the best part of £30 for a little over 200 pages. But this book won't really cost you that much if you shop around and its often useful content could actually save you much more in the long run.