Wednesday, March 4, 2009

Beautiful Architecture: Leading Thinkers Reveal the Hidden Beauty in Software Design

Editors: Diomidis Spinellis and Georgios Gousios Format: Paperback, 426 pages Publisher: O'Reilly Media, Inc.; 1st edition (January 29, 2009) ISBN-10: 059651798X ISBN-13: 978-0596517984 According to Wikipedia, Software Architecture is "the structure or structures of the system, which comprise software components, the externally visible properties of those components, and the relationships between them". Probably, if you need to go to Wikipedia to read the complete definition and background of Software Architecture, you aren't ready to buy this book, but let's see. According to the editors (multiple contributors provided numerous essays for the book's content), Beautiful Architecture is a direct relative to the 2007 O'Reilly book Beautiful Code. Andy Oram and Greg Wilson provided the editing for that work, but the formatting and much of the purpose is identical to the book I'm now reviewing: to allow well-known and not-so-well-known, but innovative software architects to offer their insights in describing their ideas on the process of software architecture. The scope of course, is different; wider and sometimes, less focused than you might imagine. Contributors are given more latitude than authors of technical works are normally provided. The editors and publishers provide the framework, the "architecture" if you will, but each contributor provides his or her (actually, just "his") own vision. Surprises are at least tolerated if not welcomed. Beautiful Code was reasonably well received so it is up to Spinellis and Gousios to provide a text worthy of its predecessor. In terms of the breadth of topics, I think it does quite well. After all, architectures touched upon include Xen, Emacs, and Facebook. If you like variety in the extreme, this book will work for you. But who should read this book? The front matter doesn't provide an answer. The first chapter, written by John Klein and David Weiss, is called "What is Architecture?", so the book does start at the "beginning". The contributors explore what an architecture is, not simply in terms of software and not just with building architecture. Metaphor is the language of this chapter, and the authors of provide sufficient connections to different people from different backgrounds and who use varied methods of conceptualization, in order to describe what an architecture is. An architecture is a framework, skeleton, or context, designed to contain and to define its contents and the purpose of those contents. Otherwise, what you have is a jumble of information, much like a collection of random musical notes without the structure, or a bunch of bricks without a design...or like a collection of essays without a common theme. However, defining architecture is just the beginning. Chapter 2 moves from metaphor to allegory with the article "A Tale of Two Systems: A Modern-Day Software Fable". Actually, the way architecture is described by Pete Goodliffe is in terms of city design (roads, neighborhoods, and so on). Each chapter thus, is an example not only of a principle or conceptualization of software architecture, but of how the authors perceive both the general topics and specific problems associated with the architectural issues at hand. The personality and style of each contributor becomes just as important as the subject they are addressing, since those factors determine what they see as important to communicate. This sort of book can be difficult to review because it isn't a single "thing". Most technical books are written with one vision and one purpose and usually, with one voice, even when there are several authors involved. Reading Beautiful Architecture is much like reading an anthology of works from different classic authors and poets. While there is a loosely associated theme, each essay has its own voice and its own personality. Reading this book in a linear fashion is not particularly useful, depending on your goal. Certainly starting with the first part of the book works if you know little or nothing about software architecture in general, but then again, I don't think this should be your first exposure to the topic. That's not a slam against the book, but it takes some previous exposure to the idea of software architecture to begin to provide the reader with the internal structure necessary to make sense of what's being said. I suppose the best analogy I can use is that one must understand basic art theory before attempting to evaluate masterpieces, or before determining if a work is or is not a masterpiece. By definition, the book is inconsistent. That's what happens when you hire almost 20 different singers to provide their interpretations as to "what is music?". Like art and music, you take away from this book what you need or at least, what you can. That means, I can't tell you that everyone who wants to learn more about software architecture will either love or hate this book. Some of you will think it's a glorious production while others will barely be able to tolerate it. Like Beautiful Code the concept is wonderful, but "pulling it off" is problematic. I think the book works best for the seasoned veteran who is expert in his or her field but is looking for new and different perspectives. When you are that good at something, sometimes, you get locked into your vision and have a tough time seeing architecture from different and particularly radical points of view. If you are newer to software development, you can still gain some good insights from the book, but depending on how linear or global a thinker you are, you can either gather new directions for your craft or learn to become completely confused. I suppose it would be like my anthology analogy where you might like one or two of the contributions to the book but overall, find the entire text disjointed and disconnected. Just as each author's personality is an integral part of their essay, the personality and needs of the reader are a required ingredient in providing the cement that holds each particular article together with the book as a whole.