Buy new:
-42% $17.52$17.52
Delivery Friday, July 5
Ships from: Amazon Sold by: BOZ LLC
Save with Used - Good
$9.06$9.06
Delivery Monday, July 8
Ships from: Amazon Sold by: Martistore
Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet, or computer - no Kindle device required.
Read instantly on your browser with Kindle for Web.
Using your mobile phone camera - scan the code below and download the Kindle app.
Follow the authors
OK
Extreme Programming Explained: Embrace Change First Edition
There is a newer edition of this item:
Purchase options and add-ons
Extreme Programming (XP) was conceived and developed to address the specific needs of software development conducted by small teams in the face of vague and changing requirements. This new lightweight methodology challenges many conventional tenets, including the long-held assumption that the cost of changing a piece of software necessarily rises dramatically over the course of time. XP recognizes that projects have to work to achieve this reduction in cost and exploit the savings once they have been earned.
Fundamentals of XP include:
* Distinguishing between the decisions to be made by business interests and those to be made by project stakeholders. * Writing unit tests before programming and keeping all of the tests running at all times. * Integrating and testing the whole system-several times a day. * Producing all software in pairs, two programmers at one screen. * Starting projects with a simple design that constantly evolves to add needed flexibility and remove unneeded complexity. * Putting a minimal system into production quickly and growing it in whatever directions prove most valuable.
Why is XP so controversial? Some sacred cows don't make the cut in XP:
* Don't force team members to specialize and become analysts, architects, programmers, testers, and integrators-every XP programmer participates in all of these critical activities every day. * Don't conduct complete up-front analysis and design-an XP project starts with a quick analysis of the entire system, and XP programmers continue to make analysis and design decisions throughout development. * Develop infrastructure and frameworks as you develop your application, not up-front-delivering business value is the heartbeat that drives XP projects. * Don't write and maintain implementation documentation-communication in XP projects occurs face-to-face, or through efficient tests and carefully written code.
You may love XP or you may hate it, but Extreme Programming Explained will force you to take a fresh look at how you develop software.
- ISBN-100201616416
- ISBN-13978-0201616415
- EditionFirst Edition
- PublisherAddison-Wesley
- Publication dateJanuary 1, 1999
- LanguageEnglish
- Dimensions6.75 x 0.5 x 8.75 inches
- Print length190 pages
Frequently bought together

Customers who bought this item also bought
Editorial Reviews
Amazon.com Review
The book intends to describe what XP is, its guiding principles, and how it works. Simply written, the book avoids case studies and concrete details in demonstrating the efficacy of XP. Instead, it demonstrates how XP relies on simplicity, unit testing, programming in pairs, communal ownership of code, and customer input on software to motivate code improvement during the development process. As the author notes, these principles are not new, but when they're combined their synergy fosters a new and arguably better way to build and maintain software. Throughout the book, the author presents and explains these principles, such as "rapid feedback" and "play to win," which form the basis of XP.
Generally speaking, XP changes the way programmers work. The book is good at delineating new roles for programmers and managers who Beck calls "coaches." The most striking characteristic of XP is that programmers work in pairs, and that testing is an intrinsic part of the coding process. In a later section, the author even shows where XP works and where it doesn't and offers suggestions for migrating teams and organizations over to the XP process.
In the afterword, the author recounts the experiences that led him to develop and refine XP, an insightful section that should inspire any organization to adopt XP. This book serves as a useful introduction to the philosophy and practice of XP for the manager or programmer who wants a potentially better way to build software. --Richard Dragan
Topics covered: Extreme Programming (XP) software methodology, principles, XP team roles, facilities design, testing, refactoring, the XP software lifecycle, and adopting XP.
From the Inside Flap
This is a book about Extreme Programming (XP). XP is a lightweight methodology for small-to-medium-sized teams developing software in the face of vague or rapidly changing requirements. This book is intended to help you decide if XP is for you.
To some folks, XP seems like just good common sense. So why the iextremei in the name? XP takes commonsense principles and practices to extreme levels.
If code reviews are good, weill review code all the time (pair programming). If testing is good, everybody will test all the time (unit testing), even the customers (functional testing). If design is good, weill make it part of everybodyis daily business (refactoring). If simplicity is good, weill always leave the system with the simplest design that supports its current functionality (the simplest thing that could possibly work). If architecture is important, everybody will work defining and refining the architecture all the time (metaphor). If integration testing is important, then weill integrate and test several times a day (continuous integration). If short iterations are good, weill make the iterations really, really shortoseconds and minutes and hours, not weeks and months and years (the Planning Game).
When I first articulated XP, I had the mental image of knobs on a control board. Each knob was a practice that from experience I knew worked well. I would turn all the knobs up to 10 and see what happened. I was a little surprised to find that the whole package of practices was stable, predictable, and flexible.
XP makes two sets of promises.
G To programmers, XP promises that they will be able to work on things that really matter, every day. They wonit have to face scary situations alone. They will be able to do everything in their power to make their system successful. They will make decisions that they can make best, and they wonit make decisions they they arenit best qualified to make. G To customers and managers, XP promises that they will get the most possible value out of every programming week. Every few weeks they will be able to see concrete progress on goals they care about. They will be able to change the direction of the project in the middle of development without incurring exorbitant costs.
In short, XP promises to reduce project risk, improve responsiveness to business changes, improve productivity throughout the life of a system, and add fun to building software in teamsoall at the same time. Really. Quit laughing. Now youill have to read the rest of the book to see if Iim crazy. This Book
This book talks about the thinking behind XPoits roots, philosophy, stories, myths. It is intended to help you make an informed decision about whether or not to use XP on your project. If you read this book and correctly decide not to use XP for your project, I will have met my goal just as much as if you correctly decide to use it. A second goal of this book is to help those of you already using XP to understand it better.
This isnit a book about precisely how to do Extreme Programming. You wonit read lots of checklists here, or see many examples, or lots of programming stories. For that, you will have to go online, talk to some of the coaches mentioned here, wait for the topical, how-to books to follow, or just make up your own version.
The next stage of acceptance of XP is now in the hands of a group of people (you may be one) who are dissatisfied with software development as it is currently practiced. You want a better way to develop software, you want better relationships with your customers, you want happier, more stable, more productive programmers. In short, you are looking for big rewards, and you arenit afraid to try new ideas to get them. But if you are going to take a risk, you want to be convinced that you arenit just being stupid.
XP tells you to do things differently. Sometimes XPis advice is absolutely contrary to accepted wisdom. Right now I expect those choosing to use XP to require compelling reasons for doing things differently, but if the reasons are there, to go right ahead. I wrote this book to give you those reasons. What Is XP?
What is XP? XP is a lightweight, efficient, low-risk, flexible, predictable, scientific, and fun way to develop software. It is distinguished from other methodologies by
Its early, concrete, and continuing feedback from short cycles. Its incremental planning approach, which quickly comes up with an overall plan that is expected to evolve through the life of the project. Its ability to flexibly schedule the implementation of functionality, responding to changing business needs. Its reliance on automated tests written by programmers and customers to monitor the progress of development, to allow the system to evolve, and to catch defects early. Its reliance on oral communication, tests, and source code to communicate system structure and intent. Its reliance on an evolutionary design process that lasts as long as the system lasts. Its reliance on the close collaboration of programmers with ordinary skills. Its reliance on practices that work with both the short-term instincts of programmers and the long-term interests of the project.
XP is a discipline of software development. It is a discipline because there are certain things that you have to do to be doing XP. You donit get to choose whether or not you will write testsoif you donit, you arenit extreme: end of discussion.
XP is designed to work with projects that can be built by teams of two to ten programmers, that arenit sharply constrained by the existing computing environment, and where a reasonable job of executing tests can be done in a fraction of a day.
XP frightens or angers some people who encounter it for the first time. However, none of the ideas in XP are new. Most are as old as programming. There is a sense in which XP is conservativeoall its techniques have been proven over decades (for the implementation strategy) or centuries (for the management strategy).
The innovation of XP is
Putting all these practices under one umbrella. Making sure they are practiced as thoroughly as possible. Making sure the practices support each other to the greatest possible degree. Enough
In The Forest People and The Mountain People, anthropologist Colin Turnbull paints contrasting pictures of two societies. In the mountains, resources were scarce and people were always on the brink of starvation. The culture they evolved was horrific. Mothers abandoned babies to roving packs of feral children as soon as they had any chance of survival. Violence, brutality, and betrayal were the order of the day.
In contrast, the forest had plenty of resources. A person had only to spend half an hour a day providing for their basic needs. The forest culture was the mirror image of the mountain culture. Adults shared in raising children, who were nurtured and loved until they were quite ready to care for themselves. If one person accidentally killed another (deliberate crime was unknown), they were exiled, but they only had to go a little ways into the forest, and only for a few months, and even then the other tribespeople brought them gifts of food.
XP is an experiment in answer to the question, iHow would you program if you had enough time?i Now, you canit have extra time, because this is business after all, and we are certainly playing to win. But if you had enough time, you would write tests; you would restructure the system when you learned something; you would talk a lot with fellow programmers and with the customer.
Such a imentality of sufficiencyi is humane, unlike the relentless drudgery of impossible, imposed deadlines that drives so much talent out of the business of programming. The mentality of sufficiency is also good business. It creates its own efficiencies, just as the mentality of scarcity creates its own waste. Outline
The book is written as if you and I were creating a new software development discipline together. We start by examining our basic assumptions about software development. We then create the discipline itself. We conclude by examing the implications of what we have createdohow it can be adopted, when it shouldnit be adopted, and what opportunities it creates for business.
The book is divided into three sections.
The ProblemoThe chapters from iRisk: The Basic Problemi to iBack to Basicsi set up the problem Extreme Programming is trying to solve and present criteria for evaluating the solution. This section will give you an idea of the overall worldview of Extreme Programming. The SolutionoThe chapters from iQuick Overviewi to iTesting Strategyi turn the abstract ideas in the first section into the practices of a concrete methodology. This section will not tell you exactly how you can execute the practices, but rather talks about their general shape. The discussion of each practice relates it to the problems and principles introduced in the first section. Implementing XPoThe chapters from iAdopting XPi to iXP at Worki describe a variety of topics around implementing XPohow to adopt it, what is expected from the various people in an extreme project, how XP looks to the business folks. Acknowledgments
I write in the first person here, not because these are my ideas, but rather because this is my perspective on these ideas. Most of the practices in XP are as old as programming.
Ward Cunningham is my immediate source for much of what you will read here. In many ways I have spent the last fifteen years just trying to explain to other people what he does naturally. Thanks to Ron Jeffries for trying it, then making it much better. Thanks to Martin Fowler for explaining it in a nonthreatening way. Thanks to Erich Gamma for long talks while watching the swans in the Limmat, and for not letting me get away with sloppy thinking. And none of this would have happened if I hadnit watched my dad, Doug Beck, ply his programming craft all those years.
Thanks to the C3 team at Chrysler for following me up the hill, then storming past me on the way to the top. And special thanks to our managers Sue Unger and Ron Savage for the courage to give us the chance to try. Thanks to Daedalos Consulting for supporting the writing of this book. Champion reviewer honors go to Paul Chisolm for his copious, thoughtful, and often downright annoying comments. This book wouldnit be half of what it is without his feedback.
I have really enjoyed my interactions with all my reviewers. Well, at least I have gained tremendous help from them. I canit thank them enough for wading through my 1.0 prose, some of them in a foreign language. Thanks to (listed in the random order in which I read their reviews) Greg Hutchinson, Massimo Arnoldi, Dave Cleal, Sames Schuster, Don Wells, Joshua Kerievsky, Thorsten Dittmar, Moritz Becker, Daniel Gubler, Christoph Henrici, Thomas Zang, Dierk Koenig, Miroslav Novak, Rodney Ryan, Frank Westphal, Paul Trunz, Steve Hayes, Kevin Bradtke, Jeanine De Guzman, Tom Kubit, Falk Bruegmann, Hasko Heinecke, Peter Merel, Rob Mee, Pete McBreen, Thomas Ernst, Guido Haechler, Dieter Holz, Martin Knecht, Dierk K^nig, Dirk Krampe, Patrick Lisser, Elisabeth Maier, Thomas Mancini, Alexio Moreno, Rolf Pfenninger, and Matthias Ressel.
0201616416P04062001
From the Back Cover
Extreme Programming (XP) was conceived and developed to address the specific needs of software development conducted by small teams in the face of vague and changing requirements. This new lightweight methodology challenges many conventional tenets, including the long-held assumption that the cost of changing a piece of software necessarily rises dramatically over the course of time. XP recognizes that projects have to work to achieve this reduction in cost and exploit the savings once they have been earned.
Fundamentals of XP include:
- Distinguishing between the decisions to be made by business interests and those to be made by project stakeholders.
- Writing unit tests before programming and keeping all of the tests running at all times.
- Integrating and testing the whole system--several times a day.
- Producing all software in pairs, two programmers at one screen.
- Starting projects with a simple design that constantly evolves to add needed flexibility and remove unneeded complexity.
- Putting a minimal system into production quickly and growing it in whatever directions prove most valuable.
Why is XP so controversial? Some sacred cows don't make the cut in XP:
- Don't force team members to specialize and become analysts, architects, programmers, testers, and integrators--every XP programmer participates in all of these critical activities every day.
- Don't conduct complete up-front analysis and design--an XP project starts with a quick analysis of the entire system, and XP programmers continue to make analysis and design decisions throughout development.
- Develop infrastructure and frameworks as you develop your application, not up-front--delivering business value is the heartbeat that drives XP projects.
- Don't write and maintain implementation documentation--communication in XP projects occurs face-to-face, or through efficient tests and carefully written code.
You may love XP, or you may hate it, but Extreme Programming Explained will force you to take a fresh look at how you develop software.
0201616416B04062001
About the Author
Kent Beck, one of the software industry’s most creative and acclaimed leaders, passionately employs patterns, extreme programming, and test-driven development. Currently affiliated with the Three Rivers Institute, he has been an author of many Addison-Wesley titles.
0201616416AB09112002
Excerpt. © Reprinted by permission. All rights reserved.
To some folks, XP seems like just good common sense. So why the "extreme" in the name? XP takes commonsense principles and practices to extreme levels.
* If code reviews are good, we'll review code all the time (pair programming). * If testing is good, everybody will test all the time (unit testing), even the customers (functional testing). * If design is good, we'll make it part of everybody's daily business (refactoring). * If simplicity is good, we'll always leave the system with the simplest design that supports its current functionality (the simplest thing that could possibly work). * If architecture is important, everybody will work defining and refining the architecture all the time (metaphor). * If integration testing is important, then we'll integrate and test several times a day (continuous integration). * If short iterations are good, we'll make the iterations really, really short-seconds and minutes and hours, not weeks and months and years (the Planning Game).
When I first articulated XP, I had the mental image of knobs on a control board. Each knob was a practice that from experience I knew worked well. I would turn all the knobs up to 10 and see what happened. I was a little surprised to find that the whole package of practices was stable, predictable, and flexible.
XP makes two sets of promises.
* To programmers, XP promises that they will be able to work on things that really matter, every day. They won't have to face scary situations alone. They will be able to do everything in their power to make their system successful. They will make decisions that they can make best, and they won't make decisions they they aren't best qualified to make. * To customers and managers, XP promises that they will get the most possible value out of every programming week. Every few weeks they will be able to see concrete progress on goals they care about. They will be able to change the direction of the project in the middle of development without incurring exorbitant costs.
In short, XP promises to reduce project risk, improve responsiveness to business changes, improve productivity throughout the life of a system, and add fun to building software in teams-all at the same time. Really. Quit laughing. Now you'll have to read the rest of the book to see if I'm crazy.
This Book
This book talks about the thinking behind XP-its roots, philosophy, stories, myths. It is intended to help you make an informed decision about whether or not to use XP on your project. If you read this book and correctly decide not to use XP for your project, I will have met my goal just as much as if you correctly decide to use it. A second goal of this book is to help those of you already using XP to understand it better.
This isn't a book about precisely how to do Extreme Programming. You won't read lots of checklists here, or see many examples, or lots of programming stories. For that, you will have to go online, talk to some of the coaches mentioned here, wait for the topical, how-to books to follow, or just make up your own version.
The next stage of acceptance of XP is now in the hands of a group of people (you may be one) who are dissatisfied with software development as it is currently practiced. You want a better way to develop software, you want better relationships with your customers, you want happier, more stable, more productive programmers. In short, you are looking for big rewards, and you aren't afraid to try new ideas to get them. But if you are going to take a risk, you want to be convinced that you aren't just being stupid.
XP tells you to do things differently. Sometimes XP's advice is absolutely contrary to accepted wisdom. Right now I expect those choosing to use XP to require compelling reasons for doing things differently, but if the reasons are there, to go right ahead. I wrote this book to give you those reasons.
What Is XP?
What is XP? XP is a lightweight, efficient, low-risk, flexible, predictable, scientific, and fun way to develop software. It is distinguished from other methodologies by
* Its early, concrete, and continuing feedback from short cycles. * Its incremental planning approach, which quickly comes up with an overall plan that is expected to evolve through the life of the project. * Its ability to flexibly schedule the implementation of functionality, responding to changing business needs. * Its reliance on automated tests written by programmers and customers to monitor the progress of development, to allow the system to evolve, and to catch defects early. * Its reliance on oral communication, tests, and source code to communicate system structure and intent. * Its reliance on an evolutionary design process that lasts as long as the system lasts. * Its reliance on the close collaboration of programmers with ordinary skills. * Its reliance on practices that work with both the short-term instincts of programmers and the long-term interests of the project.
XP is a discipline of software development. It is a discipline because there are certain things that you have to do to be doing XP. You don't get to choose whether or not you will write tests-if you don't, you aren't extreme: end of discussion.
XP is designed to work with projects that can be built by teams of two to ten programmers, that aren't sharply constrained by the existing computing environment, and where a reasonable job of executing tests can be done in a fraction of a day.
XP frightens or angers some people who encounter it for the first time. However, none of the ideas in XP are new. Most are as old as programming. There is a sense in which XP is conservative-all its techniques have been proven over decades (for the implementation strategy) or centuries (for the management strategy).
The innovation of XP is
* Putting all these practices under one umbrella. * Making sure they are practiced as thoroughly as possible. * Making sure the practices support each other to the greatest possible degree.
Enough
In The Forest People and The Mountain People, anthropologist Colin Turnbull paints contrasting pictures of two societies. In the mountains, resources were scarce and people were always on the brink of starvation. The culture they evolved was horrific. Mothers abandoned babies to roving packs of feral children as soon as they had any chance of survival. Violence, brutality, and betrayal were the order of the day.
In contrast, the forest had plenty of resources. A person had only to spend half an hour a day providing for their basic needs. The forest culture was the mirror image of the mountain culture. Adults shared in raising children, who were nurtured and loved until they were quite ready to care for themselves. If one person accidentally killed another (deliberate crime was unknown), they were exiled, but they only had to go a little ways into the forest, and only for a few months, and even then the other tribespeople brought them gifts of food.
XP is an experiment in answer to the question, "How would you program if you had enough time?" Now, you can't have extra time, because this is business after all, and we are certainly playing to win. But if you had enough time, you would write tests; you would restructure the system when you learned something; you would talk a lot with fellow programmers and with the customer.
Such a "mentality of sufficiency" is humane, unlike the relentless drudgery of impossible, imposed deadlines that drives so much talent out of the business of programming. The mentality of sufficiency is also good business. It creates its own efficiencies, just as the mentality of scarcity creates its own waste.
Outline
The book is written as if you and I were creating a new software development discipline together. We start by examining our basic assumptions about software development. We then create the discipline itself. We conclude by examining the implications of what we have created-how it can be adopted, when it shouldn't be adopted, and what opportunities it creates for business.
The book is divided into three sections.
* The Problem-The chapters from "Risk: The Basic Problem" to "Back to Basics" set up the problem Extreme Programming is trying to solve and present criteria for evaluating the solution. This section will give you an idea of the overall worldview of Extreme Programming. * The Solution-The chapters from "Quick Overview" to "Testing Strategy" turn the abstract ideas in the first section into the practices of a concrete methodology. This section will not tell you exactly how you can execute the practices, but rather talks about their general shape. The discussion of each practice relates it to the problems and principles introduced in the first section. * Implementing XP-The chapters from "Adopting XP" to "XP at Work" describe a variety of topics around implementing XP-how to adopt it, what is expected from the various people in an extreme project, how XP looks to the business folks.
Acknowledgments
I write in the first person here, not because these are my ideas, but rather because this is my perspective on these ideas. Most of the practices in XP are as old as programming.
Ward Cunningham is my immediate source for much of what you will read here. In many ways I have spent the last fifteen years just trying to explain to other people what he does naturally. Thanks to Ron Jeffries for trying it, then making it much better. Thanks to Martin Fowler for explaining it in a nonthreatening way. Thanks to Erich Gamma for long talks while watching the swans in the Limmat, and for not letting me get away with sloppy thinking. And none of this would have happened if I hadn't watched my dad, Doug Beck, ply his programming craft all those years.
Thanks to the C3 team at Chrysler for following me up the hill, then storming past me on the way to the top. And special thanks to our managers Sue Unger and Ron Savage for the courage to give us the chance to try.
Thanks to Daedalos Consulting for supporting the writing of this book. Champion reviewer honors go to Paul Chisolm for his copious, thoughtful, and often downright annoying comments. This book wouldn't be half of what it is without his feedback.
I have really enjoyed my interactions with all my reviewers. Well, at least I have gained tremendous help from them. I can't thank them enough for wading through my 1.0 prose, some of them in a foreign language. Thanks to (listed in the random order in which I read their reviews) Greg Hutchinson, Massimo Arnoldi, Dave Cleal, Sames Schuster, Don Wells, Joshua Kerievsky, Thorsten Dittmar, Moritz Becker, Daniel Gubler, Christoph Henrici, Thomas Zang, Dierk Koenig, Miroslav Novak, Rodney Ryan, Frank Westphal, Paul Trunz, Steve Hayes, Kevin Bradtke, Jeanine De Guzman, Tom Kubit, Falk Bruegmann, Hasko Heinecke, Peter Merel, Rob Mee, Pete McBreen, Thomas Ernst, Guido Haechler, Dieter Holz, Martin Knecht, Dierk Knig, Dirk Krampe, Patrick Lisser, Elisabeth Maier, Thomas Mancini, Alexio Moreno, Rolf Pfenninger, and Matthias Ressel.
Excerpt. © Reprinted by permission. All rights reserved.
This is a book about Extreme Programming (XP). XP is a lightweight methodology for small-to-medium-sized teams developing software in the face of vague or rapidly changing requirements. This book is intended to help you decide if XP is for you.
To some folks, XP seems like just good common sense. So why the iextremei in the name? XP takes commonsense principles and practices to extreme levels.
- If code reviews are good, weill review code all the time (pair programming).
- If testing is good, everybody will test all the time (unit testing), even the customers (functional testing).
- If design is good, weill make it part of everybodyis daily business (refactoring).
- If simplicity is good, weill always leave the system with the simplest design that supports its current functionality (the simplest thing that could possibly work).
- If architecture is important, everybody will work defining and refining the architecture all the time (metaphor).
- If integration testing is important, then weill integrate and test several times a day (continuous integration).
- If short iterations are good, weill make the iterations really, really shortoseconds and minutes and hours, not weeks and months and years (the Planning Game).
When I first articulated XP, I had the mental image of knobs on a control board. Each knob was a practice that from experience I knew worked well. I would turn all the knobs up to 10 and see what happened. I was a little surprised to find that the whole package of practices was stable, predictable, and flexible.
XP makes two sets of promises.
- G To programmers, XP promises that they will be able to work on things that really matter, every day. They wonit have to face scary situations alone. They will be able to do everything in their power to make their system successful. They will make decisions that they can make best, and they wonit make decisions they they arenit best qualified to make.
- G To customers and managers, XP promises that they will get the most possible value out of every programming week. Every few weeks they will be able to see concrete progress on goals they care about. They will be able to change the direction of the project in the middle of development without incurring exorbitant costs.
In short, XP promises to reduce project risk, improve responsiveness to business changes, improve productivity throughout the life of a system, and add fun to building software in teamsoall at the same time. Really. Quit laughing. Now youill have to read the rest of the book to see if Iim crazy.
This Book
This book talks about the thinking behind XPoits roots, philosophy, stories, myths. It is intended to help you make an informed decision about whether or not to use XP on your project. If you read this book and correctly decide not to use XP for your project, I will have met my goal just as much as if you correctly decide to use it. A second goal of this book is to help those of you already using XP to understand it better.
This isnit a book about precisely how to do Extreme Programming. You wonit read lots of checklists here, or see many examples, or lots of programming stories. For that, you will have to go online, talk to some of the coaches mentioned here, wait for the topical, how-to books to follow, or just make up your own version.
The next stage of acceptance of XP is now in the hands of a group of people (you may be one) who are dissatisfied with software development as it is currently practiced. You want a better way to develop software, you want better relationships with your customers, you want happier, more stable, more productive programmers. In short, you are looking for big rewards, and you arenit afraid to try new ideas to get them. But if you are going to take a risk, you want to be convinced that you arenit just being stupid.
XP tells you to do things differently. Sometimes XPis advice is absolutely contrary to accepted wisdom. Right now I expect those choosing to use XP to require compelling reasons for doing things differently, but if the reasons are there, to go right ahead. I wrote this book to give you those reasons.
What Is XP?
What is XP? XP is a lightweight, efficient, low-risk, flexible, predictable, scientific, and fun way to develop software. It is distinguished from other methodologies by
- Its early, concrete, and continuing feedback from short cycles.
- Its incremental planning approach, which quickly comes up with an overall plan that is expected to evolve through the life of the project.
- Its ability to flexibly schedule the implementation of functionality, responding to changing business needs.
- Its reliance on automated tests written by programmers and customers to monitor the progress of development, to allow the system to evolve, and to catch defects early.
- Its reliance on oral communication, tests, and source code to communicate system structure and intent.
- Its reliance on an evolutionary design process that lasts as long as the system lasts.
- Its reliance on the close collaboration of programmers with ordinary skills.
- Its reliance on practices that work with both the short-term instincts of programmers and the long-term interests of the project.
XP is a discipline of software development. It is a discipline because there are certain things that you have to do to be doing XP. You donit get to choose whether or not you will write testsoif you donit, you arenit extreme: end of discussion.
XP is designed to work with projects that can be built by teams of two to ten programmers, that arenit sharply constrained by the existing computing environment, and where a reasonable job of executing tests can be done in a fraction of a day.
XP frightens or angers some people who encounter it for the first time. However, none of the ideas in XP are new. Most are as old as programming. There is a sense in which XP is conservativeoall its techniques have been proven over decades (for the implementation strategy) or centuries (for the management strategy).
The innovation of XP is
- Putting all these practices under one umbrella.
- Making sure they are practiced as thoroughly as possible.
- Making sure the practices support each other to the greatest possible degree.
Enough
In The Forest People and The Mountain People, anthropologist Colin Turnbull paints contrasting pictures of two societies. In the mountains, resources were scarce and people were always on the brink of starvation. The culture they evolved was horrific. Mothers abandoned babies to roving packs of feral children as soon as they had any chance of survival. Violence, brutality, and betrayal were the order of the day.
In contrast, the forest had plenty of resources. A person had only to spend half an hour a day providing for their basic needs. The forest culture was the mirror image of the mountain culture. Adults shared in raising children, who were nurtured and loved until they were quite ready to care for themselves. If one person accidentally killed another (deliberate crime was unknown), they were exiled, but they only had to go a little ways into the forest, and only for a few months, and even then the other tribespeople brought them gifts of food.
XP is an experiment in answer to the question, iHow would you program if you had enough time?i Now, you canit have extra time, because this is business after all, and we are certainly playing to win. But if you had enough time, you would write tests; you would restructure the system when you learned something; you would talk a lot with fellow programmers and with the customer.
Such a imentality of sufficiencyi is humane, unlike the relentless drudgery of impossible, imposed deadlines that drives so much talent out of the business of programming. The mentality of sufficiency is also good business. It creates its own efficiencies, just as the mentality of scarcity creates its own waste.
Outline
The book is written as if you and I were creating a new software development discipline together. We start by examining our basic assumptions about software development. We then create the discipline itself. We conclude by examing the implications of what we have createdohow it can be adopted, when it shouldnit be adopted, and what opportunities it creates for business.
The book is divided into three sections.
- The ProblemoThe chapters from iRisk: The Basic Problemi to iBack to Basicsi set up the problem Extreme Programming is trying to solve and present criteria for evaluating the solution. This section will give you an idea of the overall worldview of Extreme Programming.
- The SolutionoThe chapters from iQuick Overviewi to iTesting Strategyi turn the abstract ideas in the first section into the practices of a concrete methodology. This section will not tell you exactly how you can execute the practices, but rather talks about their general shape. The discussion of each practice relates it to the problems and principles introduced in the first section.
- Implementing XPoThe chapters from iAdopting XPi to iXP at Worki describe a variety of topics around implementing XPohow to adopt it, what is expected from the various people in an extreme project, how XP looks to the business folks.
Acknowledgments
I write in the first person here, not because these are my ideas, but rather because this is my perspective on these ideas. Most of the practices in XP are as old as programming.
Ward Cunningham is my immediate source for much of what you will read here. In many ways I have spent the last fifteen years just trying to explain to other people what he does naturally. Thanks to Ron Jeffries for trying it, then making it much better. Thanks to Martin Fowler for explaining it in a nonthreatening way. Thanks to Erich Gamma for long talks while watching the swans in the Limmat, and for not letting me get away with sloppy thinking. And none of this would have happened if I hadnit watched my dad, Doug Beck, ply his programming craft all those years.
Thanks to the C3 team at Chrysler for following me up the hill, then storming past me on the way to the top. And special thanks to our managers Sue Unger and Ron Savage for the courage to give us the chance to try.
Thanks to Daedalos Consulting for supporting the writing of this book. Champion reviewer honors go to Paul Chisolm for his copious, thoughtful, and often downright annoying comments. This book wouldnit be half of what it is without his feedback.I have really enjoyed my interactions with all my reviewers. Well, at least I have gained tremendous help from them. I canit thank them enough for wading through my 1.0 prose, some of them in a foreign language. Thanks to (listed in the random order in which I read their reviews) Greg Hutchinson, Massimo Arnoldi, Dave Cleal, Sames Schuster, Don Wells, Joshua Kerievsky, Thorsten Dittmar, Moritz Becker, Daniel Gubler, Christoph Henrici, Thomas Zang, Dierk Koenig, Miroslav Novak, Rodney Ryan, Frank Westphal, Paul Trunz, Steve Hayes, Kevin Bradtke, Jeanine De Guzman, Tom Kubit, Falk Bruegmann, Hasko Heinecke, Peter Merel, Rob Mee, Pete McBreen, Thomas Ernst, Guido Haechler, Dieter Holz, Martin Knecht, Dierk K^nig, Dirk Krampe, Patrick Lisser, Elisabeth Maier, Thomas Mancini, Alexio Moreno, Rolf Pfenninger, and Matthias Ressel.
0201616416P04062001
Product details
- Publisher : Addison-Wesley; First Edition (January 1, 1999)
- Language : English
- Paperback : 190 pages
- ISBN-10 : 0201616416
- ISBN-13 : 978-0201616415
- Item Weight : 12 ounces
- Dimensions : 6.75 x 0.5 x 8.75 inches
- Best Sellers Rank: #974,370 in Books (See Top 100 in Books)
- #1,200 in Software Development (Books)
- #2,989 in Computer Software (Books)
- #34,846 in Unknown
- Customer Reviews:
About the authors

Kent Beck is the founder and director of Three Rivers Institute (TRI). His career has combined the practice of software development with reflection, innovation, and communication. His contributions to software development include patterns for software, the rediscovery of test-first programming, the xUnit family of developer testing tools, and Extreme Programming. He currently divides his time between writing, programming, and coaching. Beck is the author/co-author of Implementation Patterns, Extreme Programming Explained: Embrace Change 2nd Edition, Contributing to Eclipse, Test-Driven Development: By Example, Planning Extreme Programming, Smalltalk Best Practice Patterns, and the JUnit Pocket Guide. He received his B.S. and M.S. in Computer Science from the University of Oregon.

Discover more of the author’s books, see similar authors, read author blogs and more
Customer reviews
Our goal is to make sure every review is trustworthy and useful. That's why we use both technology and human investigators to block fake reviews before customers ever see them. Learn more
We block Amazon accounts that violate our community guidelines. We also block sellers who buy reviews and take legal actions against parties who provide these reviews. Learn how to report
-
Top reviews
Top reviews from the United States
There was a problem filtering reviews right now. Please try again later.
XP promotes several worthwhile concepts-- collective owenership (if you find a problem, you fix it, you don't find the owner of the problem), authomated unit testing (write tests once, run them everytime you make a change), heavy communication, and severe flexibility.
The element that most people bite on beyond this is pair programming-- two programmers side by side working on one problem. Another reviewer felt that programming requires a certain depth of concentration to perform, and that a second body could be deterimental to this. I tend to disagree, but I also have a very light-weight, on-the-fly style in my software development style. But then again, I'm a jazz musician writing code, so that only makes sense. :)
Even if you don't embrace all of it (and I'm still not convinced on some issues, like pair programming), it's a worthwhile read for the unit testing bits alone.
One of the more intersting concepts that Kent is pushing is this book is the concept of programming in pairs. This means that whenever code is written that you have 2 people working on the same computer to write code. My first thought was that this would slow down the process, but Kent explains that it does not actually slow down the process, and it actually speeds things up.
This book contains many radical ideas that would really change the development process. For instance Kent explains that its better to meet the requirements as they exist at the end of the project, rather than the requirements that have been set at the begining of the project.
In a day time when progress is measured in "internet time" and requirements are constantly changing, Extreme Programming provides some usefull ideas.
On the down side, you will definitely have to investigate further. The book is a bit light and brief, a manifesto for a new approach to development. The author is loosely collaborating with a group that plans to publish several books to fill this gap, among them the already published and quite excellent "Refactoring" by Martin Fowler. Beck and some co-authors are at work on a follow-up called "Playing to Win."
Recommended.







