| Emperor's New Code (a Story) | p. xi |
| Preface | p. xv |
| About the Authors | p. xix |
| Acknowledgments | p. xxi |
| Introduction | p. xxiii |
| Another Fine Mess You've Gotten Me Into (Laurel and Hardy Take Up Programming) | p. 1 |
| XP in a Nuthouse (Oops, We Mean Nutshell) | p. 3 |
| Extreme Programming in Theory | p. 4 |
| What Problems Are Being Targeted by XP? | p. 21 |
| Extreme Programming in Practice: The Voice of eXPerience | p. 23 |
| Knocking It Down ... and Then Rebuilding It | p. 26 |
| Summary | p. 28 |
| Where Did XP Come From? (Chrysler Knows It Ain't Easy ...) | p. 31 |
| Overview of C3 | p. 33 |
| The XP Project Life Cycle (As Illustrated by the Activities at C3) | p. 34 |
| Problems with C3 | p. 53 |
| Summary | p. 56 |
| The Case Against XP | p. 57 |
| A Self-Referential Safety Net (Circle of Snakes) | p. 57 |
| Tailoring a Process to Local Conditions: Why XP Stands on Its Head | p. 78 |
| Summary | p. 82 |
| Social Aspects of XP (Mama Don't Let Your Coders Grow Up to Be Cowboys) | p. 83 |
| Extremo Culture | p. 85 |
| "XP Is Not About Mindless Hacking!" | p. 86 |
| XP Goes Mainstream | p. 88 |
| XP and the Dot-com Boom | p. 92 |
| XP As a People Process | p. 94 |
| XP Terminology | p. 101 |
| Big Words Like Constantinople and TerminationCanBeSuccess | p. 103 |
| Shooting the Messenger | p. 104 |
| Fear | p. 108 |
| Summary | p. 116 |
| The On-site Customer | p. 117 |
| That's the Customer's Problem | p. 118 |
| On-site Customer: The Old Testament | p. 121 |
| On-site Customer: The New Testament | p. 127 |
| Summary | p. 133 |
| Pair Programming (Dear Uncle Joe, My Pair Programmer Has Halitosis) | p. 135 |
| Pair Programming Basics | p. 137 |
| There's a Study That Proves My Point! | p. 139 |
| Wishing for the Sound of Silence | p. 143 |
| It's a Work of Love, Enforced by Coercive Means | p. 144 |
| Productivity: numProgrammers/2 == numProgrammers? Right? | p. 146 |
| Pair Programming Illuminated | p. 154 |
| Summary | p. 160 |
| Oral Documentation (Oxymoronic, or Just Plain Moronic?) | p. 161 |
| "But I Thought You Said ..." | p. 162 |
| Just Plain Moronic | p. 170 |
| Summary | p. 179 |
| We Don't Write Permanent Specs and Barely Do Any Upfront Design, So ... | p. 181 |
| Design After First Testing | p. 183 |
| When All You've Got Is a Hammer | p. 184 |
| XP Design Mantra: No BDUF | p. 187 |
| Problems with Unit Testing | p. 188 |
| Programming Without a Safety Net | p. 197 |
| Summary | p. 199 |
| Constant Refactoring After Programming (If It Ain't Broke, Fix It Anyway) | p. 201 |
| Refactoring Heaven | p. 203 |
| XP Design Mantra: Refactor Mercilessly | p. 206 |
| Is Up-Front Design Sufficient to Avoid Large Refactorings Later? | p. 212 |
| Refactoring with an Installed User Base | p. 218 |
| Summary | p. 225 |
| User Stories and Acceptance Tests | p. 227 |
| Tell Me a Story, Daddy | p. 229 |
| User Stories vs. Use Cases | p. 232 |
| User Stories vs. Requirements | p. 237 |
| "Documenting" Requirements As Acceptance Tests | p. 242 |
| Summary | p. 245 |
| The Perpetual Coding Machine | p. 247 |
| Software Is Never Done (The Schedule Does Not Exist Per Se) | p. 249 |
| The Schedule Doesn't Exist Per Se | p. 250 |
| Optional-Scope Contracts | p. 260 |
| Summary | p. 267 |
| Emergent Architecture and Design | p. 269 |
| XP Design Mantra: YAGNI | p. 274 |
| Building an Infrastructure with Emergent Design | p. 277 |
| Emergent Architecture vs. Early Prototyping | p. 289 |
| Summary | p. 291 |
| Embracing Change (Embrace People, Manage Change) | p. 293 |
| The Cost of Change Curve (aka the Cost to Fix Defects Curve) | p. 295 |
| Release Early, Release Often | p. 297 |
| Release Planning | p. 300 |
| Iteration Planning | p. 301 |
| The Perpetual Coding Machine (Embracing Change) | p. 302 |
| What Is This Change of Which You Speak? | p. 307 |
| Use Up-Front Design to Enhance Agility | p. 307 |
| Summary | p. 310 |
| The Big Picture | p. 311 |
| Scalability | p. 313 |
| Painting Over the Cracks: XP on a 50-Person Project | p. 314 |
| Architectural Scalability | p. 322 |
| When XP Starts to Fail | p. 328 |
| Summary | p. 335 |
| Refactoring XP | p. 337 |
| How to Be Agile Without Being Fragile | p. 339 |
| Extreme Programming Defanged: Taking the "Extreme" out of XP | p. 343 |
| Case Study: The Server Tools Project (Using a Defanged, Much Less Extreme but Still Very Agile Process) | p. 362 |
| Summary | p. 368 |
| Conclusion: Neutralizing the Reality Distortion Field | p. 371 |
| Ethereal Wizardry in Action | p. 372 |
| At the End of the Day | p. 379 |
| In Closing | p. 381 |
| Index | p. 383 |
| Table of Contents provided by Ingram. All Rights Reserved. |