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.

  • Apple
  • Android
  • Windows Phone
  • Android

To get the free app, enter your email address or mobile phone number.

Emergent Design: The Evolutionary Nature of Professional Software Development 1st Edition

4.1 out of 5 stars 14 customer reviews
ISBN-13: 978-0321509369
ISBN-10: 0321509366
Why is ISBN important?
This bar-code number lets you verify that you're getting exactly the right version or edition of a book. The 13-digit and 10-digit formats both work.
Scan an ISBN with your phone
Use the Amazon App to scan ISBNs and compare prices.
Have one to sell? Sell on Amazon
Buy used
Condition: Used - Good
Condition: Used: Good
Comment: (Hardcover) This book shows minor wear and tear.
Access codes and supplements are not guaranteed with used items.
27 Used from $1.78
FREE Shipping on orders over $25.
More Buying Choices
12 New from $42.56 27 Used from $1.78
Free Two-Day Shipping for College Students with Amazon Student Free%20Two-Day%20Shipping%20for%20College%20Students%20with%20Amazon%20Student

Self-paced course for SAT
Prep whenever you want, for as long as you need. Learn more
click to open popover

Editorial Reviews

From the Back Cover

For software to consistently deliver promised results, software development must mature into a true profession. "Emergent Design" points the way. As software continues to evolve and mature, software development processes become more complicated, relying on a variety of methodologies and approaches. This book illuminates the path to building the next generation of software. Author Scott L. Bain integrates the best of today's most important development disciplines into a unified, streamlined, realistic, and fully actionable approach to developing software. Drawing on patterns, refactoring, and test-driven development, Bain offers a blueprint for moving efficiently through the entire software lifecycle, smoothly managing change, and consistently delivering systems that are robust, reliable, and cost-effective. Reflecting a deep understanding of the natural flow of system development, "Emergent Design" helps developers work with the flow, instead of against it. Bain introduces the principles and practices of emergent design one step at a time, showing how to promote the natural evolution of software systems over time, making systems work better and provide greater value. To illuminate his approach, Bain presents code examples wherever necessary and concludes with a complete project case study. This book provides developers, project leads, and testers powerful new ways to collaborate, achieve immediate goals, and build systems that improve in quality with each iteration. Coverage includes
  • How to design software in a more natural, evolutionary, and professional way
  • How to use the "open-closed" principle to mitigate risks and eliminate waste
  • How and when to test your design throughout the development process
  • How to translate design principles into practices that actually lead to better code
  • How to determine how much design is enough
  • How refactoring can help you reduce over-design and manage change more effectively
The book's companion Web site, www.netobjectives.com/resources, provides updates, links to related materials, and support for discussions of the book's content. --This text refers to the Paperback edition.

About the Author

Scott L. Bain is a thirty-year veteran in computer technology, with a background in development, engineering, and design. He has also designed, delivered, and managed training programs for certification and end-user skills, both in traditional classrooms and via distance learning. For the past eight years, Scott has been working for Net Objectives in Puget Sound, teaching courses and consulting on design patterns, refactoring, unit testing, and test-driven development. Along with Net Objectives CEO Alan Shalloway, he has contributed significantly to the integration of design patterns in Agile environments. Scott is a frequent speaker at developer conferences such as JavaOne and SDWest.


Product Details

  • Hardcover: 411 pages
  • Publisher: Addison-Wesley Professional; 1 edition (March 8, 2008)
  • Language: English
  • ISBN-10: 0321509366
  • ISBN-13: 978-0321509369
  • Product Dimensions: 7.2 x 1 x 9.3 inches
  • Shipping Weight: 1.8 pounds
  • Average Customer Review: 4.1 out of 5 stars  See all reviews (14 customer reviews)
  • Amazon Best Sellers Rank: #1,905,362 in Books (See Top 100 in Books)

Customer Reviews

Top Customer Reviews

Format: Hardcover
Emergent Design by Scott Bain is a interesting book. The title is very promising, when I first heard about it, I got very excited! Finally a book about how designs emerge, how designs emerge from multiple people and how designs evolve over time compared to specifying. After reading the book, I felt the book was good, but disappointing. It did not cover the topics I would like to have seen.

The general idea of the book is that software should grow better over time instead of decay over time and that the optimal design will emerge. An idea I strongly agree with. The author links this to software development needing to change to become a profession. If SW development is a profession, then people will use proper practices and design will emerge. The practices (in a broad sense) are principles of design, patterns and disciplines. After the first couple of chapters the book was having a good start, though I started wondering if the author didn't bite of more than he could chew. Those are huge topics by themselves!

From chapter 7 to chapter 14 the author just describes good practices. He starts with qualities of code and qualities of designs. He moves to unit-testing, refactoring and then Test-Driven-Development. He ends with the pattern chapter. The last chapter puts all things together in a case study. Scott does a reasonable job in describing all practices. There are a couple of weird things, like the recommendation that every class has exactly one test class. The TDD chapter also seems to have very little TDD in it :)

As a catalog of best practices, this book perhaps does the best of all the current agile related books. Great job by the author.

However, there are some things that personally bothered me. The book seems to be very pattern focused.
Read more ›
Comment 52 people found this helpful. Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again
Report abuse
Format: Hardcover
I've just completed reading "Emergent Design: The Evolutionary Nature of Professional Software Development" by Scott L. Bain; I found the author's writing style to be engaging which made for an easy read. However, from my perspective (someone who has been in the trenches of software development for the past 20 years) I found nothing new in this book for the seasoned professional.

If you are just starting out, I would recommend this book; if you call yourself a programmer, I would recommend this book. However, if you are a trained software professional, and already understand that the phrase "software as an engineering discipline" is an oxymoron, then I would recommend you spend your time elsewhere. This book simply puts into written words what we already know -- waterfall development doesn't work for systems where the requirements aren't well understood or are subject to change during the development effort. The author adequately discusses the importance of patterns and their importance to modern software systems, the importance of paying attention to the details not found in the software, and the fact that you need to get over fear of change. In my opinion, the author does not offer any new insights.

Again, if you are just starting out, or have no exposure to object-oriented theory/practice, patterns and iterative-and-incremental development, this book is a good introductory text. If you are looking for advanced knowledge, in my opinion, its not here.
Comment 8 people found this helpful. Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again
Report abuse
Format: Hardcover Verified Purchase
This book is a gold mine of wisdom.

This book contains a ton of wisdom that has come out of the software engineering field over the years. It brings together a lot of software development best practices that can be found in other resources and puts them together under the umbrella of Emergent Design.

He covers patterns, principles, processes, and practices by presenting the best of each that has been proven to work again and again. The common sense communicated out of this book is priceless.

The author has a presentation that touches on a lot of the content found in the book. It can be viewed by Googling for "EmergentDesign_12_11_2007".

Forward thinking is something that I find lacking in a lot of the environments I am exposed too, especially development environments. This book nails how to do forward thinking when it comes to software design and development. You will end up making your solutions more valuable with each change, instead of degrading them with each change if you follow the advice in this book.

If you do development, this is a must read. I would advise all team leads to get rid of anyone who has not read this book by the end of the year.
Comment 14 people found this helpful. Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again
Report abuse
Format: Paperback
For those who've complained about the title being misleading, what did you expect? As the author clarifies in the chapter on refactoring, emergent design is all about continuously changing code to improve it, to make it easier to add new features and to make it easier to find bugs. The author appropriately makes a reference to Kerievsky's Refactoring to Patterns book, considering that Bain's book also makes extensive use of patterns and Java design idioms to improve code.

My favorite part of this book is actually at the end where the author provides brief overviews of the patterns used in the book. Most helpful are the non-software examples that the author uses to drive home the goal of the pattern.

Four stars rather than five, though, because five stars ought to be reserved for seminal works like the GOF book or books from Martin Fowler's Signature Series, which I relish. Also, the book does venture into at least one contentious area. Bain's colleague, Shalloway, has suggested in his book that a Proxy can also be used to encapsulate a special function or pre-processing required to be carried out prior to calling the underlying object. Bain takes it one step further, suggesting that Proxy is like a Decorator that adds a single responsibility to the underlying class and often graduates to Decorator if multiple additional responsibilities need to dynamically be added to the base class. However, GOF and POSA clarify that although the Proxy implementation resembles that of Decorator, the two have distinctly different purposes.
Comment Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again
Report abuse

Most Recent Customer Reviews

What Other Items Do Customers Buy After Viewing This Item?