Extreme programming

XPcollective code ownershipcourage in programmingextreme programmerExtreme Programming (XP)
Extreme programming (XP) is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements.wikipedia
159 Related Articles

Agile software development

Agileagile developmentAgile Manifesto
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.
These included: rapid application development (RAD), from 1991; the unified process (UP) and dynamic systems development method (DSDM), both from 1994; Scrum, from 1995; Crystal Clear and extreme programming (XP), both from 1996; and feature-driven development, from 1997.

Software development process

software development methodologydevelopment cyclesoftware development life cycle
Extreme programming (XP) is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements.
Other methodologies include waterfall, prototyping, iterative and incremental development, spiral development, rapid application development, and extreme programming.

Kent Beck

Kent Beck developed extreme programming during his work on the Chrysler Comprehensive Compensation System (C3) payroll project.
Kent Beck (born 1961) is an American software engineer and the creator of extreme programming, a software development methodology that eschews rigid formal specification for a collaborative and iterative design process.

Code review

code reviewspeer code reviewReviews
Other elements of extreme programming include: programming in pairs or doing extensive code review, unit testing of all code, avoiding programming of features until they are actually needed, a flat management structure, code simplicity and clarity, expecting changes in the customer's requirements as time passes and the problem is better understood, and frequent communication with the customer and among programmers.

Ward Cunningham

Cunningham's lawHoward CunninghamCunningham, Ward
He took this opportunity to propose and implement some changes in development practices - based on his work with his frequent collaborator, Ward Cunningham.
A pioneer in both design patterns and extreme programming, he started coding the WikiWikiWeb in 1994, and installed it on the website of the software consultancy he started with his wife, Karen, Cunningham & Cunningham (commonly known by its domain name, c2.com), on March 25, 1995, as an add-on to the Portland Pattern Repository.

Chrysler Comprehensive Compensation System

Kent Beck developed extreme programming during his work on the Chrysler Comprehensive Compensation System (C3) payroll project.
C3 has been referenced in several books on the extreme programming (XP) methodology.

Ron Jeffries

Beck invited Ron Jeffries to the project to help develop and refine these methods.
Ron Jeffries (born December 26, 1939) is one of the three founders of the Extreme Programming (XP) software development methodology circa 1996, along with Kent Beck and Ward Cunningham.

Pair programming

in pairsRemote pair programming
Other elements of extreme programming include: programming in pairs or doing extensive code review, unit testing of all code, avoiding programming of features until they are actually needed, a flat management structure, code simplicity and clarity, expecting changes in the customer's requirements as time passes and the problem is better understood, and frequent communication with the customer and among programmers. Extreme programming's initial buzz and controversial tenets, such as pair programming and continuous design, have attracted particular criticisms, such as the ones coming from McBreen and Boehm and Turner, Matt Stephens and Doug Rosenberg.

You aren't gonna need it

YAGNI principleYou Ain't Gonna Need It
This is sometimes summed up as the "You aren't gonna need it" (YAGNI) approach.
"You aren't gonna need it" (YAGNI) is a principle of extreme programming (XP) that states a programmer should not add functionality until deemed necessary.

Test-driven development

Test Driven Developmenttest-first developmentTDD
Test-driven development is related to the test-first programming concepts of extreme programming, begun in 1999, but more recently has created more general interest in its own right.

Extreme programming practices

planning gameSmall releases
Communication between the customer and programmer is further addressed in the planning game.
Extreme programming (XP) is an agile software development methodology used to implement software projects.

Continuous integration

CIbuild serverintegration is done automatically
Extreme programming (XP) adopted the concept of CI and did advocate integrating more than once per day – perhaps as many as tens of times per day.

Code refactoring

refactoringrefactoredrefactor
Courage enables developers to feel comfortable with refactoring their code when necessary.
Proponents of extreme programming and other agile software development describe this activity as an integral part of the software development cycle.

Unit testing

unit testunit testsunit
Other elements of extreme programming include: programming in pairs or doing extensive code review, unit testing of all code, avoiding programming of features until they are actually needed, a flat management structure, code simplicity and clarity, expecting changes in the customer's requirements as time passes and the problem is better understood, and frequent communication with the customer and among programmers.
In test-driven development (TDD), which is frequently used in both extreme programming and scrum, unit tests are created before the code itself is written.

User story

user storiesstoriescustomer's story language
A customer is able to test the system periodically according to the functional requirements, known as user stories.
With Extreme Programming (XP), user stories were a part of the planning game.

Matt Stephens

Stephens, M.
In 2003, Matt Stephens and Doug Rosenberg published Extreme Programming Refactored: The Case Against XP, which questioned the value of the XP process and suggested ways in which it could be improved.
He is known for having spoken out against what he regards as popular (or populist) software development fashions, most notably Extreme Programming, Enterprise JavaBeans (EJB) and the Ruby programming language.

Big Design Up Front

However, several commentators have argued that what Joel has called Big Design Up Front doesn't resemble the BDUF criticized by advocates of XP and other agile software development methodologies because he himself says his example was neither recognizably the full program design nor completed entirely upfront:

Acceptance testing

acceptance testUser acceptance testingacceptance tests
To shorten the total development time, some formal test documents (such as for acceptance testing) have been developed in parallel with (or shortly before) the software being ready for testing.
Acceptance testing is a term used in agile software development methodologies, particularly extreme programming, referring to the functional testing of a user story by the software development team during the implementation phase.

Customer representative

call centre agentsclient service representative
The term is used in software engineering; especially in development methodology Extreme Programming and Agile software development.

EXtreme Manufacturing

It is often presented as the intersection between three contributing, component circles: that of Scrum (with its standard roles and responsibilities, its principles of iterative design and sprints, and of making work visible), of object-oriented architecture (emphasizing modularity of components, the interface/contract-first rather than contract-last approach to design, as borrowed from web programming, etc.), and of concepts from extreme programming (XP), a software development methodology, extended to engineering (including use of user stories, "pairing and swarming" work patterns, and ideas from test driven development).

Continuous design

Evolutionary design
Extreme programming's initial buzz and controversial tenets, such as pair programming and continuous design, have attracted particular criticisms, such as the ones coming from McBreen and Boehm and Turner, Matt Stephens and Doug Rosenberg.
Continuous design was popularized by extreme programming.

Martin Fowler (software engineer)

Martin FowlerFowler, Martin
Martin Fowler (born 1963) is a British software developer, author and international public speaker on software development, specialising in object-oriented analysis and design, UML, patterns, and agile software development methodologies, including extreme programming.

Waterfall model

waterfallwaterfall methodadvanced programming methods
Some of these XP sought to replace, such as the waterfall methodology; example: Project Lifecycles: Waterfall, Rapid Application Development (RAD), and All That.
In the same paper Royce also advocated large quantities of documentation, doing the job "twice if possible" (a sentiment similar to that of Fred Brooks, famous for writing the Mythical Man Month, an influential book in software project management, who advocated planning to "throw one away"), and involving the customer as much as possible (a sentiment similar to that of Extreme Programming).