It’s been a while now since I’ve read The Timeless Way of Building by Christopher Alexander, but had no time to comment on it.
The central theme of the book is the quality without a name. Well, since Alexander found no name for it, I certainly shall not attempt to do it either. But this quality is what I have found in C++ language and particularly in POCO. So, if you read my first blog “Why Poco“, you’ll understand it. And this is not really a case for one language/framework or another, because those wars are really pointless – it’s like arguing whether English or German is better language. It depends on time, place and purpose for which you want to use it.
Back to the book – contrary to what I have expected to find – the book on patterns – I have found it, more than anything else, to be a book about agile development with patterns. Both those concepts are intertwined throughout the book, hand-in-hand and indivisible from each other. This was a true revelation to me. While the software pattern community originates from Alexander’s work, I have not found references to it within the agile community. There may be some that I have missed. Or, it may just be that some guys have independently discovered in software engineering the very same thing Alexander has discovered in architecture. At any rate, it is now clear to me that both concepts are major and equally important aspects of architecture, software engineering and probably everything else there is (contrary to the commonly held belief that it’s actually 42 ).
An interesting point Alexander makes to demonstrate how deeply patterns and the related concepts (not invented, but created, discovered and repeatedly used in a different way) are embedded into our world is by claiming that every individual actually creates the language anew. Yes, even the language we speak every day. We do not learn those, but every individual creates it’s own, slightly different version of it by imitating the sounds heard and connecting them to surrounding concepts. For example, people who have read my previous blog posts will have no trouble recognizing who is writing this one without looking at the signature under it. Why is that? Because I write it in my own language which is really close to what we commonly call English. But did Shakespeare and Hemingway write in the same language as I do? (Obviously not, otherwise crowds would cause a denial of service on this server ).
POCO is different from similar frameworks, although they’re all written in the same language (just another proof that libraries are languages in their own right). But it goes even deeper than that – when a new component shows up in POCO, somehow I can tell who wrote the thing. We all write in the same programming language, same library, following the same style guidelines, yet there is a subtle difference that can be detected immediately.
All in all, excellent book with deep and universal insights, really easy read, highly recommended.