You are previewing Extreme Programming Explained.
O'Reilly logo
Extreme Programming Explained

Book Description

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.



0201616416B04062001

Table of Contents

  1. Copyright
    1. Dedication
  2. Foreword
  3. Preface
    1. This Book
    2. What Is XP?
    3. Enough
    4. Outline
    5. Acknowledgments
  4. 1. The Problem
    1. 1. Risk: The Basic Problem
      1. Our Mission
    2. 2. A Development Episode
    3. 3. Economics of Software Development
      1. Options
      2. Example
    4. 4. Four Variables
      1. Interactions Between the Variables
      2. Focus on Scope
    5. 5. Cost of Change
    6. 6. Learning to Drive
    7. 7. Four Values
      1. Communication
      2. Simplicity
      3. Feedback
      4. Courage
      5. The Values in Practice
    8. 8. Basic Principles
    9. 9. Back to Basics
      1. Coding
      2. Testing
      3. Listening
      4. Designing
      5. Conclusion
  5. 2. The Solution
    1. 10. A Quick Overview
      1. The Planning Game
      2. Small Releases
      3. Metaphor
      4. Simple Design
      5. Testing
      6. Refactoring
      7. Pair Programming
      8. Collective Ownership
      9. Continuous Integration
      10. 40-Hour Week
      11. On-Site Customer
      12. Coding Standards
    2. 11. How Could This Work?
      1. The Planning Game
      2. Short Releases
      3. Metaphor
      4. Simple Design
      5. Testing
      6. Refactoring
      7. Pair Programming
      8. Collective Ownership
      9. Continuous Integration
      10. 40-Hour Week
      11. On-Site Customer
      12. Coding Standards
      13. Conclusion
    3. 12. Management Strategy
      1. Metrics
      2. Coaching
      3. Tracking
      4. Intervention
    4. 13. Facilities Strategy
    5. 14. Splitting Business and Technical Responsibility
      1. Business
      2. Development
      3. What to Do?
      4. Choice of Technology
      5. What if It's Hard?
    6. 15. Planning Strategy
      1. The Planning Game
        1. The Goal
        2. The Strategy
        3. The Pieces
        4. The Players
        5. The Moves
          1. Exploration Phase
          2. Commitment Phase
          3. Steering Phase
      2. Iteration Planning
        1. Exploration Phase
        2. Commitment Phase
        3. Steering Phase
      3. Planning in a Week
    7. 16. Development Strategy
      1. Continuous Integration
      2. Collective Ownership
      3. Pair Programming
    8. 17. Design Strategy
      1. The Simplest Thing That Could Possibly Work
      2. How Does "Designing Through Refactoring" Work?
      3. What Is Simplest?
      4. How Could This Work?
      5. Role of Pictures in Design
      6. System Architecture
    9. 18. Testing Strategy
      1. Who Writes Tests?
      2. Other Tests
  6. 3. Implementing XP
    1. 19. Adopting XP
    2. 20. Retrofitting XP
      1. Testing
      2. Design
      3. Planning
      4. Management
      5. Development
      6. In Trouble?
    3. 21. Lifecycle of an Ideal XP Project
      1. Exploration
      2. Planning
      3. Iterations to First Release
      4. Productionizing
      5. Maintenance
      6. Death
    4. 22. Roles for People
      1. Programmer
      2. Customer
      3. Tester
      4. Tracker
      5. Coach
      6. Consultant
      7. Big Boss
    5. 23. 20–80 Rule
    6. 24. What Makes XP Hard
    7. 25. When You Shouldn't Try XP
    8. 26. XP at Work
      1. Fixed Price
      2. Outsourcing
      3. Insourcing
      4. Time and Materials
      5. Completion Bonus
      6. Early Termination
      7. Frameworks
      8. Shrinkwrap Products
    9. 27. Conclusion
      1. Expectation
    10. A. Annotated Bibliography
      1. Philosophy
      2. Attitude
      3. Emergent Processes
      4. Systems
      5. People
      6. Project Management
      7. Programming
      8. Other
    11. Glossary