Emergent Design

Buy the Book

Emergent Design: The Evolutionary Nature of Professional Software Development

Emergent Design: The Evolutionary Nature of Professional Software Development

by Scott L. Bain

Buzz about the book

Related courses at Net Objectives

Online repository

Appendix B of the book provided the starting information for this repository, but it will continue to grow and change as readers, students, and other developers join and add their views. It is free for your use. If you wish to contribute, contact Scott Bain at slbain@netobjectives.com. To view, take the link below.

LinkedIn discussion group

A LinkedIn group for questions and comments regarding the book, or any of the concepts surrounding agile software development techniques.

Table of Contents

00 – Introduction
01 – Software as a Profession (Sample available here)
02 – Out of the Closet – Patterns and Professionalism in Software Development
03 – The Nature of Software Development (Sample available here)
04 – Evolution in Code Stage 1
05 – Introduction to Patterns
06 – Building a Pyramid
07 – Paying Attention to Qualities and Pathologies
08 – Paying Attention to Principles and Wisdom (Chapter available here)
09 – Paying Attention to Practices
10 – Paying Attention to Disciplines – Unit Testing
11 – Paying Attention to Disciplines – Refactoring
12 – Test-Driven Development
13 – Patterns and Forces
14 – Emergent Design, a Case Study
15 – A Conclusion: 2020
Appendix A – Evolutionary Paths
Appendix B – Overview of Patterns Used in the Examples
Appendix C – The Principle of the Useful Illusion
Appendix D – For Further Reading


Page Issue
64 Figure 4.3 – The “uses” arrow between “LocalStatusSender” and “PagingStatusSender” should not be there
77 Figure 5.7 caption: “No room” should be “Now room”
84 The last line, “design to over-design”, should be desire to over-design
111 In the box, the word safety appears twice in the wrong font
112 2nd to last line, “were so were” should be “were so”
116 Paragraph 8, final sentence says “drifted back to the right” when it should say “drifted back to the left”
148 3rd line from the bottom, missing closing parenthesis after i++
159 7th line, delete the phrase “a function that is often problematic”
208 Second Code Example, third line from the end, MockDAO should be mockDAO
211 A closing brace is missing from the code example at the bottom of the page
230 The “printReportLines” method and “calculateAverage” method should both take “ArrayList clines” as a parameter
235 I write “At the end of this chapter, I will suggest some books I have found to get started. “. That list is in an appendix at the end of the book, not the chapter
243 Figure 12.5, bottom right, box says “Strategy_V1Test” should be “Strategy_V2Test”. Same on the previous page in Figure 12.4
249 Figure 12.7, case B – Third circle should say DecB rather than DecA appearing twice
285 Final paragraph, second sentence, “mange” should be “manage”
286 All references to “Card” or “Cards” should be “Chip” or “Chips”


Caption to Figure A.6b, the word “Comples” should be “Complex”
323 Figure B.12 – the first Handler should be “Handler1” rather than “Handler2” appearing twice
326 Figure B.12 – the Handlers should not have void return type
343 Figure B.26 – “DateInputStream” should be “DataInputStream”