One of the principles of good software framework design is to extract the framework from a working system. Similarly, software design patterns are extracted from many working systems that have used the same solution to solve similar problems. This book was originally extracted from the stories of Dave’s apprenticeship experiences, then tested and supplemented with Ade’s stories, and finally tested against the experiences of about 30 practitioners with experience levels ranging from a couple of years to many decades. We interviewed these people in order to test whether these patterns were actually common solutions to common problems, along with mining for other patterns that we hadn’t recognized yet. We also participated in several workshops (PLoP 2005, Agile Atlanta meeting, and internal ThoughtWorks meetings) to help us focus on improving the structure and rigor of what we believed to be apprenticeship patterns. Finally, we have made much of this material freely available online in order to solicit feedback from the community.