# Extreme programming

Extreme Programming (XP) is a software development methodology which 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 where new customer requirements can be adopted.

## Quotes

* Extreme Programming is the first popular methodology to view software development as an exercise in coding rather than an exercise in management.
** Ben Aveling (2004) "XP lite considered harmful?." Extreme Programming and Agile Processes in Software Engineering. Springer Berlin Heidelberg. p. 94-103.
* The new concept of Extreme Programming (XP) is gaining more and more acceptance, partially because it is controversial, but primarily because it is particularly well-suited to help the small software development team succeed... XP is controversial, many software development sacred cows don't make the cut in XP; it forces practitioners to take a fresh look at how software is developed.
** Kent Beck (2000) Extreme programming explained: embrace change] ISBN 9780201616415. Abstract
* XP (Extreme Programming) is a system of practices (you can use the m-word if you want to; we'd rather not, thank you) that a community of software developers is evolving to address the problems of quickly delivering quality software, and then evolving it to meet changing business needs.
** Kent Beck & Martin Fowler (2001) Planning extreme programming. p. 7
* One of the things I've been trying to do is look for simpler or rules underpinning good or bad design. I think one of the most valuable rules is avoid duplication. "Once and only once" is the Extreme Programming phrase.
** Martin Fowler as cited in: James Shore, Shane Warden (2007) The Art of Agile Development. p. 319
* One of the central axioms of extreme programming is the disciplined use of regression testing during stepwise software development.
** Thomas A. Henzinger et al. (2004) "Extreme model checking." Verification: Theory and Practice. p. 180-181.
* Extreme Programming is a discipline of software development with values of simplicity, communication, feedback, and courage. We focus on the roles of customer, manager,and programmer and accord key rights and responsibilities to the people in those roles.
** Ronald E. Jeffries (2001) Extreme programming installed. Addison-Wesley Professional. p. vii
* Extreme Programming is an “agile methodology” that some people advocate for the high-speed, volatile world of Internet and Web development.
** Mark C. Paulk (2001) "Extreme programming from a CMM perspective." Software, IEEE 18.6. p. 19-26.
* Extreme Programming is the most prominent new, light-weight (or agile) methods, defined to contrast the current heavy-weight and partially overloaded object-oriented methods. It focuses on the core issues of software technology. One of its principles is not to rely on diagrams to document a system.
** Bernhard Rumpe (2002). "Executable Modeling with UML. A vision or a Nightmare." Issues & Trends of Information Technology Management in Contemporary Associations. p. 697
* One of the distinct features of XP is the lack of any documentation whatsoever, except for the code itself. This is a contraposition to the modeling techniques like the Unified Modeling Language (UML), which strongly focus on documentation. XP takes an extreme position there, not even documenting the architecture of the system. Often, it is very difficult to extract the overall structure, behavior or interactions with the environment from the code. The code is a rather detailed and fragile representation of the system’s tasks. Even though the code contains all necessary information about the system, this information is often burdened with details and it is tedious to extract the aspects one is interested in. Therefore, it would be useful to have a more compact system representation. The UML does provide a number of notations that are suited for this purpose. However, the tools so far are not capable of supporting UML in such a manner that it can be well-integrated with the approach of Extreme Programming.
** Bernhard Rumpe (2002). "Executable Modeling with UML. A vision or a Nightmare." Issues & Trends of Information Technology Management in Contemporary Associations. p. 698
* But you could do extreme programming. In fact, I had a college buddy I did pair programming with. We took a compiler writing class together and studied all that fancy stuff from the dragon book. Then of course the professor announced we would be implementing our own language, called PL/0. After thinking about it a while, we announced that we were going to do our project in BASIC. The professor looked at us like were insane. Nobody else in the class was using BASIC. And you know what? Nobody else in the class finished their compiler either. We not only finished but added I/O extensions, and called it PL 0.5. That's rapid prototyping.
** Larry Wall (2007) The State of the Onion 11 ("Programming is Hard. Let's Go Scripting"). on perl.com. December 6, 2012.