Organizational Patterns of Agile Software Development James O. Coplien Neil B. Harrison PEARSON Prentice Hall Upper Saddle River, NJ 07458
Contents PART I History and Introduction 1 1 An Overview of Patterns and Organizational Patterns 3 1.1 What Are Patterns? 3 1.1.1 Team Per Task** 5 1.2 What Are Pattern Languages? 6 1.3 Organizational Pattern Languages 8 1.3.1 The Structure of Social Systems 8 1.3.2 The Multiple Structures of Social Systems 8 1.3.3 Pattern Languages and Sequences 9 2 How the Patterns Came to Us 11 2.1 Gathering Organizational Data 12 2.1.1 Introspection in and Analysis of Organizations 12 2.1.2 Shortcomings of State of the Art 13 2.1.3 The CRC Card Methodology 14 2.1.4 Analyzing Roles and Relationships 16 2.2 Creating Sequences 18 2.2.1 Why Sequences Are Important 18 2.2.2 Our Sequences 19 2.3 History and Related Work 20
xiv Contents 3 How to Use This Book 22 3.1 Reading the Patterns 22 3.1.1 The Form 22 3.1.2 Understanding the Models Behind the Patterns 22 3.1.3 Stories and Pictures in the Patterns 25 3.1.4 Finding Your Way 26 3.2 Applying the Patterns 26 3.2.1 Sequences 26 3.2.2 Which Patterns? 26 3.2.3 Human Concerns 27 3.3 Updating the Patterns 27 3.4 Who Should Use This Book? 27 PART II The Pattern Languages 29 4 Organization Design Patterns 31 4.1 Project Management Pattern Language 31. 1 Community of Trust ** 34.2 Size the Schedule ** 36.3 Get On with It ** 38.4 Named Stable Bases * 42.5 Incremental Integration ** 44 4.1.6 Private World ** 46 4.1.7 Build Prototypes ** 49 4.1.8 Surrogate Customer 53 4.1.9 Take No Small Slips ** 54 4.1.10 Completion Headroom ** 56 4.1.11 Work Split* 58 4.1.12 Recommitment Meeting * 60 4.1.13 Work Queue * 62 4.1.14 Informal Labor Plan ** 64 4.1.15 Development Episode * 66 4.1.16 Implied Requirements 68 4.1.17 Developer Controls Process ** 70 4.1.18 Work Flows Inward ** 73 4.1.19 Programming Episodes ** 78 4.1.20 Someone Always Makes Progress* 80 4.1.21 Team Per Task ** 82 4.1.22 Sacrifice One Person * 85 4.1.23 Day Care * 88 4.1.24 Mercenary Analyst * 92
Contents xv 4.1.25 Interrupts Unjam Blocking ** 96 4.1.26 Don't Interrupt an Interrupt * 98 4.2 Piecemeal Growth Pattern Language 99 4.2.1 Community of Trust 102 4.2.2 Size the Organization ** 103 4.2.3 Phasing It In ** 106 4.2.4 Apprenticeship * 108 4.2.5 Solo Virtuoso * 110 4.2.6 Engage Customers ** 112 4.2.7 Surrogate Customer * 116 4.2.8 Scenarios Define Problem * 118 4.2.9 Firewalls ** 120 4.2.10 Gatekeeper ** 122 4.2.11 Self-Selecting Team ** 124 4.2.12 Unity of Purpose ** 126 4.2.13 Team Pride ** 128 4.2.14 Skunk Works * 130 4.2.15 Patron Role ** 133 4.2.16 Diverse Groups * 135 4.2.17 Public Character ** 137 4.2.18 Matron Role * 140 4.2.19 Holistic Diversity * 142 4.2.20 Legend Role * 145 4.2.21 Wise Fool * 148 4.2.22 Domain Expertise in Roles ** 150 4.2.23 Subsystem by Skill * 152 4.2.24 Moderate Truck Number 155 4.2.25 Compensate Success ** 158 4.2.26 Failed Project Wake * 162 4.2.27 Don't Interrupt an Interrupt 164 4.2.28 Developing in Pairs ** 165 4.2.29 Engage Quality Assurance ** 168 4.2.30 Application Design Is Bounded by Test Design * 171 4.2.31 Mercenary Analyst 173 4.2.32 Group Validation * 174 5 Organization Construction Patterns 176 5.1 Organizational Style Pattern Language 176 5.1.1 Community of Trust 179 5.1.2 Few Roles ** 180 5.1.3 Producer Roles * 182 5.1.4 Producers in the Middle ** 184
xvi Contents 5.1.5 Stable Roles * 187 5.1.6 Divide and Conquer ** 189 5.1.7 Conway's Law ** 192 5.1.8 Organization Follows Location ** 194 5.1.9 Organization Follows Market * 197 5.1.10 Face to Face Before Working Remotely ** 199 5.1.11 Form Follows Function 202 5.1.12 Shaping Circulation Realms * 204 5.1.13 Distribute Work Evenly * 206 5.1.14 Responsibilities Engage 209 5.1.15 Hallway Chatter * 213 5.1.16 Decouple Stages 217 5.1.17 Hub, Spoke, and Rim 219 5.1.18 Move Responsibilities * 222 5.1.19 Upside-Down Matrix Management * 224 5.1.20 The Watercooler * 226 5.1.21 Three to Seven Helpers Per Role 229 5.1.22 Coupling Decreases Latency * 231 5.1.23 Standards Linking Locations 234 5.2 People and Code Pattern Language 235 5.2.1 Community of Trust 237 5.2.2 Conway's Law 238 5.2.3 Architect Controls Product ** 239 5.2.4 Architecture Team * 241 5.2.5 Lock 'em Up Together * 243 5.2.6 Smoke-Filled Room 245 5.2.7 Stand-Up Meeting ** 247 5.2.8 Deploy along the Grain ** 250 5.2.9 Subsystem by Skill 253 5.2.10 Architect Also Implements ** 254 5.2.11 Generics and Specifics 257 5.2.12 Standards Linking Locations ** 259 5.2.13 Code Ownership ** 261 5.2.14 Feature Assignment * 264 5.2.15 Variation Behind Interface ** 266 5.2.16 Private Versioning ** 268 5.2.17 Loose Interfaces ** 270 5.2.18 Subclass Per Team 272 5.2.19 Hierarchy of Factories 274 5.2.20 Parser Builder * 278 5.2.21 Incremental Integration 281 5.2.22 Private World 282 5.2.23 Named Stable Bases 283
Contents xvii PART 111 Foundations and History 285 6 Organizational Principles 287 6.1 Priming the Organization for Change 287 6.1.1 Dissonance Precedes Resolution 288 6.1.2 Team Burnout 288 6.1.3 Stability and Crisis Management 290 6.1.4 The Open/Closed Principle Of Teams 293 6.1.5 Team Building 295 6.1.6 Building on the Solid Core 297 6.2 Piecemeal Growth 297 6.2.1 The Fundamental Process 299 6.2.2 When Do I Apply These Patterns? 301 6.2.3 Writing Your Own Patterns 301 6.2.4 Master Planning and the Theory of Constraints 301 6.2.5 Communication and Organizational Learning 302 6.3 Some General Rules 302 6.3.1 Make Love, Not War 302 6.3.2 Organizational Patterns Are Inspiration Rather than Prescription... 303 6.3.3 It Depends on Your Role in Your Organization 303 6.3.4 It Depends on the Context of the Organization 303 6.3.5 Organizational Patterns Are Used by Groups Rather Than by Individuals 304 6.3.6 People Are Less Predictable Than Code 304 6.3.7 The Role of Management 305 7 Anthropological Foundations 307 7.1 Patterns In Anthropology 307 7.2 Beyond Process to Structure and Values 309 7.2.1 The Shortcomings of Process 309 7.2.2 Structure 310 7.2.3 Values: The Human Element 311 7.3 Roles and Communication 311 7.4 Social Network Analysis 312 7.5 Distilling the Patterns 313 7.5.1 CRC Cards and Roles 313 7.5.2 Social Network Theory Foundations 314 7.5.3 Scatterplots and Patterns 318
xviii Contents PART IV Case Studies 321 8 Borland Quattro Pro for Windows 323 8.1 Introduction to the QPWCase Study 323 8.2 Origins and Description of QPW 324 8.3 Analysis of QPWData 327 8.4 Personal Excellence and Integrity 330 8.5 Do One Thing and Do It Well 330 8.6 A Piecemeal Architecture Process 331 8.7 Personality and Development 332 8.8 No Wine Before Its Time 333 8.9 Create Rather Than Conform 333 8.10 California Gold Rush? 334 8.11 Introspection by the Team 334 8.12 Process and Quality 335 8.13 Concluding Thoughts about QPW 336 9 A Hyperproductive Telecommunications Development Team 338 9.1 The Culture 339 9.2 The Development Process 340 9.3 The Pasteur Analysis of the Process 340 9.4 The Human Side 342 9.4.1 Engineering People Issues into the Process 342 9.4.2 Code Ownership and Programming Anthropomorphism 343 9.4.3 Growing a Garden 344 9.4.4 Rewarding Excellence 344 9.5 The Small Team Spirit 345 9.6 Process Improvement Opportunities 345 9.7 Thoughts and Conclusions 346 A Summary Patlets 349 A.I Project Management Patlets 349 A.2 Piecemeal Growth Patlets 352 A.3 Organizational Style Patlets 356 A.4 People and Code Patlets 359 A.5 Patlets from Other Pattern Languages 362 A.5.1 Arranging the Furniture 362 A.5.2 Ad-Hoc Corrections 363 A.5.3 All at Once 363 A.5.4 Architecture Definition Team 363 A.5.5 Balanced Team 363 A.5.6 Business Process Model 363
Contents xix A.5.7 Clear the Fog 363 A.5.8 Creator-Reviewer 363 A.5.9 Demo Prep 364 A.5.10 Designers Are Our Friends 364 A.5.11 Early and Regular Delivery 364 A.5.12 Establish the Business Objectives 364 A.5.13 Get Involved Early 364 A.5.14 Gradual Stiffening 364 A.5.15 Guru Does All 365 A.5.16 Market Walkthrough 365 A.5.17 Master-Journeyman 365 A.5.18 Microcosm 365 A.5.19 Owner per Deliverable 365 A.5.20 Participating Audience 365 A.5.21 Peacemaker 366 A.5.22 Product Initiative 366 A.5.23 Prototypes 366 A.5.24 Query Objects 366 A.5.25 Shared Clear Vision 366 A.5.26 Shearing Layers 366 A.5.27 Small Writing Team 367 A.5.28 Skill Mix 367 A.5.29 Work Allocation 367 A.5.30 Work Group 367 B Bibliography 368 C Photo Credits 379 Index 385