Extreme Programming

From Canonica AI

Introduction

Extreme Programming (XP) is a software development methodology that is intended to improve software quality and responsiveness to changing customer requirements. As a type of agile software development, it advocates frequent "releases" in short development cycles, which is intended to improve productivity and introduce checkpoints at which new customer requirements can be adopted.

History

Extreme Programming was created by Kent Beck during his work on the Chrysler Comprehensive Compensation System (C3) payroll project. Beck became the C3 project leader in March 1996. He began to refine the development methodology used in the project and wrote a book on the methodology (Extreme Programming Explained, published in October 1999). Chrysler cancelled the C3 project in February 2000, after seven years, when Daimler-Benz merged with Chrysler.

A team of software developers working together on a project, demonstrating the collaborative nature of Extreme Programming.
A team of software developers working together on a project, demonstrating the collaborative nature of Extreme Programming.

Methodology

Extreme Programming is a solution to the common problem of requirements changing over the course of a project. It does this by implementing a set of practices that allow the team to accommodate changes in requirements at any point in the project. These practices include:

- Pair programming: Two programmers work together at one workstation. One, the driver, writes code while the other, the observer or navigator, reviews each line of code as it is typed in. The two programmers switch roles frequently.

- Test-driven development: Every part of the system is covered by unit tests, which must all pass all the time.

- Continuous integration: The system is built and tested several times a day, usually with a tool like Jenkins or Travis CI.

- Refactoring: The improvement of the design of existing code, without changing its functionality.

- Simple design: The system should be designed as simply as possible at any given moment. Extra complexity is removed as soon as it is discovered.

Practices

Extreme Programming has been described as having 12 practices, grouped into four areas:

1. Fine-scale feedback:

  - Pair programming
  - Planning game
  - Test-driven development
  - Whole team

2. Continuous process:

  - Continuous integration
  - Design improvement
  - Small releases

3. Shared understanding:

  - Simple design
  - System metaphor
  - Collective code ownership
  - Coding standards

4. Programmer welfare:

  - Sustainable pace

Criticisms and controversies

Extreme Programming has been criticized for being too rigid and unrealistic. Some of the practices, such as pair programming and test-driven development, have been controversial and are not universally accepted as good practices. Critics also argue that XP is not suitable for teams working with significant amounts of legacy code or without customer involvement.

See Also

- Agile Software Development - Scrum (software development) - Lean Software Development - Kanban (development)