History And Introduction

This book is about people — people who write software. No, this isn't a Dilbertesque look at our profession or an analysis of the minds of cult figures in the profession. It is about teams of real people who write real software. You see, over the last ten years or so, we have studied how people work together to create software. And we have seen that these organizations have a lot in common, whether they are writing software for telephone systems, banks, or oil exploration. The people issues shine through whatever application they are developing. And that is comforting, in a way.

At the same time, though, it is disconcerting. For while organizations are inanimate, they take on a life of their own. We see that organizations grow, learn, and sometimes even get sick! Yet they can heal themselves, and can become healthy again. Of course, we are most interested in the characteristics of the healthy organizations; perhaps other organizations can learn from those experiences.

It is this notion of healing, repair and growth that are the foundations of Agile development. O.K., we'll be frank: we chose "Agile" for the title out of marketing concerns. It seems to be the current term of choice for the kinds of things we describe in this book. It is a term that rolls off the tongue more easily that other clever names that clamor for your attention on today's bookshelves. This manuscript has been evolving piecemeal for over a decade, and the early pre-publication manuscripts have been a foundation and source of inspiration for many contemporary popular approaches. For example, Jeff Sutherland notes that an early publication on this work, related to the Borland case study in this book, was one early influence on SCRUM [BibRef-Sutherland2003]. Ken Schwaber notes that the early background of these pattern languages "were the genesis of some of the agile processes" [BibRef-Schwaber2003]. Gabriel's early article [BibRef-Gabriel1994] and later book [BibRef-Gabriel1996] discuss the successful application of these techniques at ParcPlace Systems as a key part of a broader effort that transformed the organization. And these patterns have the dubious distinction of earning the criticism of one notable software person who was the primary reviewer of the first published version of these patterns. He noted that anyone who worked on organizational issues was avoiding doing real work (which by his own admission was limited to anything directly related to Smalltalk programming). He would later go on to be one of the founders of Extreme Programming — a discipline that builds in part on the patterns that have been in this language (such as DevelopingInPairs) for almost a decade.

Yet this book is broader than so-called agile development. We are really concerned with effective software development -- the ability to produce good software efficiently, time after time. Many of the organizations we studied and learned from would not be considered "agile", but they were highly effective. The 5ESS development in AT&T, for example, would fit nobody's definition of agile. But year after year, they produced software for a system that was not only one of the largest software systems in the world, but among the world's most reliable. Yes, many of these patterns contribute to agility, but our chief aim is effectiveness.

We have captured the good things organizations do and have written them down as patterns. We hope these patterns will be as interesting and useful to you as they have been to us. Many others have found them useful: at conferences, we find that these patterns are the foundation of improvement programs in many companies world-wide.
We have divided this book into four parts:
  • Part I: History and Introduction, the section you are reading
  • Part II: The patterns themselves
  • Part III: Foundations and History
  • Part IV: Case Studies
  • Part V: Appendices

Here in the introduction, we provide background material that will help you better understand the core of the book, which is the patterns themselves. It is an ideal goal that each pattern should convey everything you need to know to touch the resources within you that will allow you to apply it. But more practically, experience has shown that a knowledge of the history behind the gathering and publication of patterns can help the reader better understand their scope and applicability. For example, John Vlissides' book "Pattern Hatching," [BibRef-Vlissides1998] a reflection on the seminal Gang of Four book, offers commentary that takes the pattern practitioner to a new level of depth in understanding both the strengths and limitations of the techniques. Here, we package both parts into the same book. And furthermore, we present the ideas up front as a foundation for what follows.

After you read the patterns, the case studies follow to revisit and reinforce the principles and practices that the patterns offer. The appendices include miscellaneous supporting material.