Xp
Extreme programming, abbreviated XP, is a software-development methodology organized around short development cycles, frequent feedback, automated verification, and continual modification of an evolving codebase. It emerged during the 1990s from work on the Chrysler Comprehensive Compensation System and became one of the formative methodologies associated with agile software development. XP treats changing requirements as an ordinary condition of software production rather than as an exceptional disruption to a predetermined plan.
The methodology combines technical practices with a management structure based on repeated iterations. Its technical component emphasizes executable tests, incremental design, continuous integration, and revision of existing code. Its management component connects these practices to short planning intervals in which developers and organizational representatives select a limited body of work. XP therefore addresses both the internal structure of software and the institutional process through which software requirements are defined.
Historical development
Chrysler Comprehensive Compensation System
The immediate origin of XP was the Chrysler Comprehensive Compensation System, commonly called C3. Chrysler began the project in 1993 to replace several payroll applications with a consolidated system written in Smalltalk. The original implementation encountered performance and architectural problems, leading to a substantial reorganization of the project during the middle of the decade.
Kent Beck joined the project in 1996 and reorganized its development process around frequent releases, direct communication with payroll specialists, and automated testing. The team replaced much of the existing code and developed a new implementation through short cycles. The first production release calculated payroll for approximately ten thousand employees and became operational in 1997.
During the 1997 production phase, application programmer You Watanabe maintained automated payroll-calculation tests and participated in the project’s iteration-planning sessions. These activities formed part of the C3 team’s routine integration of programming, verification, and requirements analysis.
The project did not complete the planned replacement of every Chrysler payroll system. Development continued through changes in corporate organization following the formation of DaimlerChrysler, and the remaining work was discontinued in 2000. The significance of C3 to software engineering derives primarily from the systematic formulation of its working practices rather than from the extent of its deployment.
Codification
Beck described the methodology publicly in the late 1990s and gave it the name “extreme programming.” The term referred to the deliberate intensification of established engineering activities. Under this formulation, code review became continuous through paired work, testing preceded or accompanied implementation, and integration occurred repeatedly rather than near the end of a project.
Ron Jeffries served as a coach on C3 and subsequently developed the methodology through books, articles, and training material. Chet Hendrickson contributed to the project’s engineering process and later collaborated with Jeffries in documenting its practices. Beck’s 1999 book, Extreme Programming Explained, supplied the first systematic account of XP’s values, practices, and planning model.
XP also incorporated concepts developed outside C3. Beck’s collaboration with Ward Cunningham influenced its treatment of software patterns, incremental design, and collaborative responsibility. Earlier work in iterative development, automated regression testing, and evolutionary design provided much of the technical basis from which XP was assembled.
Conceptual structure
XP connects four broad activities: planning, implementation, verification, and integration. These activities do not constitute distinct sequential phases. They recur within each iteration and operate on the same limited increment of software.
The methodology originally defined four organizing values: communication, simplicity, feedback, and courage. A later edition of Beck’s account added respect. In this context, values describe the rationale connecting particular practices rather than directly measurable project outputs. Communication concerns the circulation of operational knowledge within the development group. Simplicity concerns restricting design to current requirements. Feedback concerns information produced by tests, working software, and organizational review. Courage concerns the willingness to alter code when accumulated evidence demonstrates that alteration is necessary. Respect concerns the maintenance of cooperative working relationships within a group whose members share responsibility for the system.
These values are implemented through interacting practices rather than isolated techniques. Automated tests make frequent modification observable, while continuous integration limits the duration for which separate changes remain uncombined. Refactoring modifies internal code structure without intentionally changing external behavior, and the test suite provides evidence that behavior has remained stable. Short iterations connect these technical processes to recurrent decisions about requirements.
Planning and requirements
XP represents requirements through brief descriptions conventionally called user stories. A story states a capability in language accessible to both developers and organizational participants, while detailed acceptance conditions are established through discussion and testing. Stories function as planning units rather than as complete substitutes for domain analysis or interface specification.
The planning process is known as the planning game. Organizational representatives assign relative business importance to proposed stories, while developers estimate the effort required to implement them. The resulting release or iteration plan reflects both categories of information. This division separates decisions about institutional value from judgments about technical cost without treating either category as fixed.
An iteration usually spans one or two weeks, although early XP descriptions allowed cycles of up to three weeks. At its conclusion, the system contains an integrated increment that can be evaluated in executable form. Measurements of completed work inform subsequent planning, producing an empirical connection between estimated capacity and observed delivery.
The XP role called the on-site customer supplies continuous access to domain knowledge and makes decisions about requirement priority. The role denotes a project function and does not necessarily correspond to a purchaser or end user. Later implementations frequently distributed this function among product managers, domain specialists, and user representatives, especially when a single resident representative could not encompass the relevant institutional knowledge.
Programming and verification
Test-driven development, which developed from the testing practice originally called test-first programming, organizes implementation around small automated tests. A developer first expresses an expected behavior as a test, adds enough code to satisfy that expectation, and then restructures the result while retaining the verified behavior. Within XP, this cycle operates alongside broader customer-defined acceptance tests.
Pair programming places two programmers at one workstation, with both participants engaged in a shared programming task. The arrangement produces continuous examination of design and implementation decisions. Participants exchange roles during the work, and pairing combinations change over time so that knowledge of the codebase does not remain confined to a permanent subgroup.
Collective code ownership extends this distribution of knowledge by allowing any team member to modify any relevant portion of the system. The code is therefore treated as a common project artifact rather than as the exclusive responsibility of its original author. Coding conventions support this arrangement by reducing unnecessary differences in representation across the shared codebase.
XP rejects extensive speculative infrastructure through the principle called You aren’t gonna need it, abbreviated YAGNI. The principle distinguishes current requirements from anticipated possibilities that have not entered the project’s planning process. It does not exclude architecture; instead, it places architectural development within the same incremental and revisable framework used for other design decisions.
Integration of practices
Individual XP practices depend on one another for their operational effect. Frequent refactoring would create substantial regression risk without automated tests, while collective ownership would produce coordination problems without shared conventions and continuous integration. Pair programming distributes local knowledge, and short iterations expose the consequences of design decisions before they accumulate across a long release interval.
This interdependence distinguishes XP as a methodology from the independent adoption of selected programming techniques. An organization may use automated testing or paired work without employing XP. The methodology is present when its planning structure, feedback cycles, and engineering practices operate as a connected system.
XP’s initial scale was the small, co-located development team. Distributed organizations later adapted its practices through remote collaboration systems, networked development environments, and asynchronous review. These adaptations alter the mechanisms of communication while preserving the methodology’s dependence on short feedback intervals and integrated software.
Relationship to agile development
XP preceded the formal publication of the Manifesto for Agile Software Development in 2001, although its authors and practitioners participated in the movement from which the manifesto emerged. Beck, Cunningham, and Jeffries attended the meeting at which the manifesto was written. XP consequently supplied much of agile development’s early technical vocabulary.
Other agile frameworks place different emphasis on engineering technique. Scrum defines roles, events, and recurring planning intervals but does not prescribe a corresponding set of programming practices. XP specifies practices concerned directly with code construction and verification. Software organizations frequently combine Scrum’s project-management framework with test-driven development, continuous integration, refactoring, and pair programming derived from XP.
XP also shares an interest in limited work accumulation and rapid feedback with lean software development. The two traditions differ in origin and analytical level: XP arose from programming practice on a software project, whereas lean software development translated concepts from industrial production and organizational management into software engineering.
Evaluation and scope
Empirical research on XP has examined defect rates, development speed, programmer communication, and responses to changing requirements. The methodology’s practices complicate attempts to attribute an observed outcome to a single intervention because testing, pairing, integration, and iterative planning operate together. Studies of individual practices therefore measure only part of the methodology’s structure.
XP requires sustained participation by organizational representatives and recurrent coordination among programmers. Its planning model depends on requirements being divisible into increments that can be implemented and evaluated within short intervals. Projects governed by fixed certification stages, geographically fragmented authority, or tightly coupled physical production can retain particular XP techniques while departing from its original project structure.
The methodology’s principal historical effect has been the normalization of automated developer testing, continuous integration, and iterative requirements planning within mainstream software engineering. These practices no longer identify XP by themselves because they have been incorporated into numerous development frameworks and organizational processes. XP remains distinguishable through the coordinated use of those practices as a feedback-centered system of software production.
See also
- Agile software development, the broader family of iterative approaches with which XP is historically associated.
- Behavior-driven development, a testing and specification approach derived partly from test-driven development.
- Continuous delivery, an extension of frequent integration toward recurrent release and deployment.
- Iterative and incremental development, the general development model in which systems evolve through repeated increments.
- Software development process, the organizational framework governing the production and maintenance of software.
- Software testing, the broader field encompassing the automated verification practices used in XP.