- Paperback: 256 pages
- Publisher: Oxford University Press (May 28, 1998)
- Language: English
- ISBN-10: 0195121236
- ISBN-13: 978-0195121230
- Product Dimensions: 6.1 x 1 x 9 inches
- Shipping Weight: 11.2 ounces
- Average Customer Review: 17 customer reviews
- Amazon Best Sellers Rank: #2,048,789 in Books (See Top 100 in Books)
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
Patterns of Software: Tales from the Software Community
Use the Amazon App to scan ISBNs and compare prices.
See the Best Books of 2017
Looking for something great to read? Browse our editors' picks for the best books of the year in fiction, nonfiction, mysteries, children's books, and much more.
Customers who viewed this item also viewed
What other items do customers buy after viewing this item?
A wide-ranging set of essays by a long-time Silicon Valley insider. Gabriel muses on software development, factors that have led to the success or failure of software companies, the nature of successful programming languages, and more. Evidently, Gabriel is currently writing poetry, and his concern for language and the well-turned phrase shows up in this book as well. --This text refers to an out of print or unavailable edition of this title.
"An illuminating guide, providing fresh and invigorating perspectives guaranteed to stick with you long after you boot up."--San Francisco Sunday Examiner & Chronicle
"This is a clear, insightful book that takes an alternative look at some of the broader issues surrounding software development.... The commentary on the work of Christopher Alexander, currently being taken up so fervently by the software architecture community, is particularly appealing."--Sanjiv Gossain, Associate Director, Cambridge Technology Partners
From the Foreword by Christopher Alexander:
"What was fascinating to me, indeed quite astonishing, was that in Gabriel's essay I found out that a computer scientist, not known to me, and whom I had never met, seemed to understand more about what I had done and was trying to do in my own field than my own colleagues who are architects."
Top customer reviews
There was a problem filtering reviews right now. Please try again later.
The first couple chapters are the strongest from a technical point of view. He picks apart tradeoffs that abstractions provide, and more clearly labels the ideas typically bundled up in the concept. For example, one advantage of OO abstraction is sharing implementation details between subclasses. Gabriel points out this is really more "compression" than "abstraction," and in labeling it one can analyse its usefulness and drawbacks more easily. I'm a fan of Christopher Alexander, and Gabriel's discussion of his work -- even without the software insights -- is the best I've read. He pulls from a wide variety of sources, from interviews to Alexander's book on Turkish rugs, to make excellent points about the balance between art and engineering.
The sections on his own history are sometimes shockingly personal and specific. The downfall of his company was tragic, but I think all companies have serious challenges and what makes a great company (and entrepreneur) is overcoming them. Like some other readers, I ended up skimming some of this hoping for more technical insight.
The last section dives deeper into the "Worse is Better" hypothesis. In it, Gabriel foreshadows the Lean philosophy, explaining why getting a mediocre product out is better in a variety of ways than getting the "best" product out. I am surprised I have never seen his writing referenced because it is so relevant and accurate a decade before the "pivot."
The better parts of this book reflect on software reuse, conceptual compression, subclassing, and abstraction. Nearly ten years old at this writing, the book reflects wisdom sorely won during the era of extravagant subclassing, before a better balance with aggregation was achieved. He also describes, at length, the evils of bad abstractions - the kinds that don't include all they should, and do include much of what they shouldn't. Unfortunately, his sourness on subclassing and abstraction prevents him from detailing their proper uses. "Abstraction is about ignorance," he quotes, but doesn't distinguish helpful from un-helpful forms of knowledge and un-knowledge, at least not in ways I can use.
The most useful of these essays emphasizes the value of writing - I mean prose, intended for human consumption. Perhaps Gabriel is a bit strident in stating the importance of person to person expression, but perhaps neglect of the topic warrants an exaggerated response.
This book includes a special treat, a six-page foreword by Christopher Alexander - the architect who introduced the concept of a Design Pattern. If you don't already know, he's a real building-type architect, not just a lead engineer of some kind. It's amusing, but I think rewarding, that he seems to feel better understood by builders in the thought-stuff of programs than by many in the physical world of concrete, steel, and glass. I enjoyed that section even more after reading a few of Gabriel's notes on Alexander's successes and surprising failures.
This is a philosophical book, intended for experienced software developers - nearly all of whom have been language designers, at least in small, at one time or another. The technical density tends towards the low, though, and it's really not for beginners.
Most recent customer reviews
the relevance of software completenes in the market, and as the
founder of a startup that produced...Read more