Software development projects can be fun, productive, and even daring. Yet they can consistently deliver value to a business and remain under control. 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.
Review By: Mark L. Krug 12/01/2005I found "Extreme Programming Explained: Embrace Change" to be an excellent source for process improvement and incremental release practices. The authors do a wonderful job of explaining what Extreme Programming is, what the individual components are, and some possible ways to implement the practices. I gained a better understanding of the overall terms, principles, and practices without feeling overwhelmed by the information. The examples appropriately demonstrate the concepts and are sufficient to help the reader envision how these concepts could be put into effect within their organization. I found it to be relevant to the issues that most development organizations face in their day-to-day business. I particularly like the fact that the author stresses writing test before you write the application because I feel like this is a practice that should be implemented in all development organizations. I was impressed with the thorough coverage of each concept, especially since the book is not large book and takes a minimum amount of time to read. Everything in this book is pertinent to software development, process improvement, and quality assurance. In fact after my peers and colleagues briefly glanced at the book, they've requested to borrow the book from me.
In my opinion, the subject matter is handled in a superb manner. Each chapter flows into the next in a logical order, built upon the concepts covered in the previous chapters, and were taught at a level that both the novice and the expert could follow and understand easily. The author presents the material using wording, logical progression and examples that made retaining the material easy. The author also uses illustrations to appropriately demonstrate the concepts, which keeps the reader from becoming distracted by excessive supplemental information. The illustrations are not flashy and do not detract from the material being covered.
The authors' thoughts are well organized and written, and seem to express the sentiments and concerns of software development professionals throughout the business world. The authors do not attempt to impress the reader with their level of expertise, nor do they express their ideas as if they were the only acceptable options. They repeatedly state that the concepts within the book are to be used as a starting point or a foundation upon which we can base our best practices. The writing style is informal and relaxed, but teaches the concepts thoroughly enough that the reader can implement the concepts with a minimal amount of additional investigation or effort. The book includes references to additional materials on the concepts and encourages the reader to use these additional sources for further clarification of the concepts.
"Extreme Programming Explained" is an excellent source for process improvement and incremental release practices. The authors do a wonderful job of explaining Extreme Programming, the individual components of it, and possible ways to implement the practices. Overall, I felt this book was one of the best technical books I have read in a long time, and I would recommend it to other software development professionals.