Extreme Programming (XP) is a software development process. In contrast to the Waterfall process, extreme programming is an agile development process where software is incrementally developed in short iterations with many releases.
Extreme programming introduces many interesting practices including:
- Timeboxed iterations
- Pair programming
- Customer involvement
- Test-first development
- Extensive code reviews
- Unit testing for all code
- You ain't gonna need it
- Flat management structure
- Overtime limits
- User stories
Extreme programming was first proposed by OO gurus including Kent Beck and Ward Cunningham.
The idea of extreme programming and agile software development in general may have originated from the works of architect Christopher Alexander (see The Alexander conspiracy). Alexander for example suggested that users of a building should be directly involved in the design process because they know better than the architect what needs they have for the building. This is similar to XP where customers play a central role in the development process. Alexander philosophy of incremental, organic, coherent design is also evident in agile development processes.
- Extreme Programming @ Wikipedia
- eXtreme Programming: A Practitioner's Approach Short slide about XP, illustrating a few basis