Foreword by Scott W.Ambler
Preface
Introduction
part I The Game
Chapter 1 Extreme Principles
Work with Your Customers
Use Metaphors to Describe Difficult Concepts
Plan
Keep Meetings Short
Test First
Keep it Simple
Program in Pairs
Code to Standards
Own it Collectively
Integrate Continuously
Refactor
Release in Small Increments
Don't Burn Out (40-Hour Work Week)
Embrace Change
Chapter 2 The Players
Two Teams
The Customer Team
The Development Team
The Role of Roles
Establishing Rights
Conclusion
part II onceptualizing the System
Chapter 3 Creating a Vision of the System
Conceptualizing the System
The Vision Card
The Metaphor
Metaphors for Development
Conclusion
Chapter 4 Writing User Stories
The Philosophy of User Stories
User Stories
Numbering the Stack
Conclusion
Appendix to Chapter 4
Chapter 5 Writing Acceptance Tests
What Is an Acceptance Test?
Writing Tests
Difficulty with Acceptance Tests
Infinitely Many Acceptance Tests
Automating Acceptance Tests
Conclusion
Chapter 6 One Simple Solution
What Are We Looking for?
Keep It Simple
Conceptual Solution Spikes
Conclusion
Chapter 7 Watching Our Words
The Problem
What's in a Name
Constant Refactoring and Communicating
Conclusion
part III Planning
Chapter 8 Providing Estimates
Providing Estimates
Assumptions
Splitting
Planning Spikes
Conclusion
Chapter 9 Planning Releases
Velocity
The Cost of the Release
Establishing Priorities
Pair Programming
Creating the Release Plan
Conclusion
Chapter 10 Planning Iterations
Creating a Series of Iterations
The Setting for Iteration Planning
The First Iteration
Subsequent Iterations
Scheduling Iterations
Conclusion
Chapter 11 Tactical Planning
Beginning an iteration
Volunteering for Tasks
Standup Meetings
Tracking the Project
Finishing Early
Conclusion
part IV Development
Chapter 12 Pair Programming
The Mechanics of Pair Programming
Development as a Conversation
Peer Pressure
Double the Fun
The Net Effect
As Fast as the Slowest
Conclusion
Chapter 13 Test First
The XP Project
Why Test?
What to Test
When to Test
How to Test: A Testing Framework
Warranted Assumptions Revisited:
Test Driven Development
Example
A Case for Test Driven Development
Conclusion
Chapter 14 Design
Design and XP
Where Design Patterns Fit in XP
Architecture and XP
Agile Modeling
What is Agile Modeling (AM)?
Overview of the Values, Principles, and Practices of Agile Modeling (AM)
Conclusion
Chapter 15 Code With Intention
What's in a Name
Simplicity is the Ultimate Complexity
Warranted Assumptions
Let the Compiler Tell You
"No Comment"
Collective Code Ownership
Better to Burn Out than to Fade Away?
Happy Developers Are Productive Developers
Get a Life
Conclusion
Chapter 16 Refactoring
Examples of Refactorings
Courage
Code Smells
When to Refactor
The Two Hats
Refactoring to Patterns
Example of Refactoring
Conclusion
Chapter 17 Relentless Integration
Some Practical Advice
Only Check in When Tests Pass at 100 Percent
An Antipattern
Approaches to Integration
What About Code Reviews
The Impact of Collective Code Ownership
Conclusion
part V Delivery
chapter 18 Delivering the System
Delivery Day
Productionizing
Testing
Celebrating Victories
part VI Additional Topics
Chapter 19 Adopting and Adapting XP
Understanding XP
Adopting XP
Methods of Adoption
Adapting XP
XP Practices
Return on Investment
Conclusion
Chapter 20 Scaling XP
Large-Scale Development
Organizing the Large XP Project
Open and Honest Communication
Integration
The Importance of Good People
Conclusion
Chapter 21 The Future of XP
Where XP is Going
On to the Battlefield
A Holonic Approach to XP
Software Development as a Crt
Evolving XP
Appendix: Example
Bibliography
Index