||New Reviews| |Software Methodologies| |Popular Science| |AI/Machine Learning| |Programming| |Java| |Linux/Open Source| |XML| |Software Tools| |Other| |Web| |Tutorials| |All By Date| |All By Title| |Resources| |About||
Keywords: Design patterns, agile development, unit testing
Title: Emergent Design
Author: Scott L. Bain
Publisher: Addison Wesley
Verdict: Interesting but covers familiar territory
Scott Bain's 'Emergent Design' ought to be a classic software development read. It covers a range of topics from across the development spectrum, it draws on work from complexity theory, agile development, design patterns and on the author's long experience in the industry. And yet at the end of the day the book is something of a disappointment. It just doesn't live up to the promise.
Part of the problem is that much of the material he covers has previously been covered to a greater depth by other people - many of them people he works with or is associated with. There's an inevitable overlap between his work and some of the other books in this series (the Net Objectives series). If you've never looked at any of these, or indeed at other books on design patterns, refactoring, agile software development and so on, then that's not necessarily a problem. For those who have then there's an air of familiarity about the contents.
This isn't to say that there's nothing of value in the book, or that the writing doesn't stand up. He does a good job of explaining the appeal of design patterns or test driven development, his writing style is down to earth and readable. The book contains anecdotes and war stories to back up the conclusions he has come to. And, to be fair, he acknowledges the people he has learned from, including Alan Shalloway, Martin Fowler, the Gang of Four and others.
The author also makes sure that he provides sample code (in Java), and uses open source tools like JUnit in the examples.
For those developers who are looking for an introductory overview of the current state of play as regards software development then the book does provide that overview. It puts key practices such as refactoring, unit testing and the use of design patterns into context. However, for those who already have the over-view and who are perhaps looking for something more than it's not clear that this book has anything radically new to offer. That is ultimately why this book doesn't get a stronger recommendation - much of the material has already been covered and covered well in other books.