I first read this book several years ago. While recently cleaning the garage I found it again in a box from a previous job where I must have had it on a shelf. Flipping through it showed how much I'd forgotten, so I decided to read it again.
This is a great book, filled with deep concepts and clear examples. Evans says, "Software designs tend to be very abstract and hard to grasp. Developers and users alike need tangible ways to understand the system and share a view of the system as a whole." This is a great summary of what this text teaches. Many patterns are detailed, and approaches to design that are both simple and rarely found in the wild. Most software, even that with good initial design, tends to grow over time in ways that don't necessarily reflect the initial approach. This makes the code brittle and hard to reuse, the dreaded "code rot" problem. The impact can be greatly reduced with the creation of a ubiquitous language shared by all interested parties and a commitment to continual design, not just refactoring code. "One way or another, creating distinctive software comes back to a stable team accumulating specialized knowledge and crunching it into a rich model. No shortcuts. No magic bullets."
The biggest drawback to this book is that it is dense. Over 500 pages, and a lot of information is packed into every page. Makes reading it—at least at a pace where information can be distilled and remembered—take a long time. I suppose this is really a back-handed complement, as a text this complete should be expected to be substantial, but I found it took longer than usual to get through the whole thing. This is a book that every serious software architect should read, preferably on a regular basis!
This eighteenth-century Chinese map represents the whole world.
No comments:
Post a Comment