Extreme programming (XP)
Extreme Programming (XP) is a software development methodology that emerged in the late 1990s, created by Kent Beck to enhance the efficiency and speed of programming, particularly in response to the demands of the Internet era. XP is part of the broader agile software development movement, which emphasizes flexibility, iterative progress, and collaboration among team members and clients. Central to XP are values such as loyalty, courage, respect, and simplicity, guiding teams to focus on delivering exactly what the client needs without unnecessary complexity.
XP involves a structured process that includes planning, managing, designing, coding, and testing. Teams work closely together, meeting daily to discuss progress and challenges, which fosters open communication and quick feedback. Each team member is assigned user stories—simple features that outline client requirements—and is responsible for integrating their work with the collective effort of the team. Regular interaction with clients ensures that the development stays aligned with their expectations, allowing for timely adjustments. The methodology promotes a culture of accountability where team members are encouraged to be honest about challenges and to collaboratively solve problems, ultimately aiming for a high-quality product that meets client needs efficiently.
On this Page
Subject Terms
Extreme programming (XP)
Extreme programming (XP) is a popular type of software programming. It was developed in the 1990s and was designed to help software development firms write programs in a fast and efficient manner. Extreme programming, established by Kent Beck, is designed to promote a specific set of values to the programmers who utilize it. These include loyalty, courage, respect, and simplicity.
![Extreme Programming (XP) requires planning and feedback at many levels and many frequencies. DonWells [CC BY-SA 3.0 (https://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons rssalemscience-20180712-16-171835.jpg](https://imageserver.ebscohost.com/img/embimages/ers/sp/embedded/rssalemscience-20180712-16-171835.jpg?ephost1=dGJyMNHX8kSepq84xNvgOLCmsE2epq5Srqa4SK6WxWXS)
![The Scrum Framework process, an example of agile software development. Dr ian mitchell [CC BY-SA 4.0 (https://creativecommons.org/licenses/by-sa/4.0) or CC0], from Wikimedia Commons rssalemscience-20180712-16-171836.jpg](https://imageserver.ebscohost.com/img/embimages/ers/sp/embedded/rssalemscience-20180712-16-171836.jpg?ephost1=dGJyMNHX8kSepq84xNvgOLCmsE2epq5Srqa4SK6WxWXS)
Teams utilizing extreme programming are required to follow a strict set of steps during the completion of their product. These steps include planning, managing, designing, coding, and testing. Team members are each assigned individual tasks and are required to integrate their work with the rest of the team’s work upon completion. The team members communicate with one another as much as possible, including through daily team meetings. The team is also expected to regularly communicate with the client, keeping the client updated with the project’s progress. For these reasons, extreme programming works best when the team is able to work closely with the client and when strict deadlines are met.
Background
Extreme programming is one of the most prominent types of agile software development. Agile software development is a methodology developed in the late 1990s. The term was first applied to the collection of techniques when a group of software developers gathered in Snowbird, Utah, and collectively published their ideas about software development. They called this document the “Manifesto for Agile Software Development.” Soon afterward, they created the Agile Alliance to help developers exchange more ideas.
The Agile Alliance promoted several new concepts within the software development community. The alliance suggested that products be divided up into smaller segments called user stories. Each developer on a project works on an individual user story, and each user story contributes directly to the project. The alliance suggested that development teams meet at the same time each day to share up-to-date information on the project and present any completed user stories to the group. The members suggested that products be developed incrementally and that each build of the product be functional. The alliance suggested that all members of the team remain assigned to the same project on a full-time basis and that part-time members should be kept to a minimum. This would enable the developers to be familiar with every stage of the project, allowing them to effectively analyze their progress and notice any potential problems.
Overview
Extreme programming was first started in the late 1990s by Kent Beck, a software developer. It was created to help fledgling software development firms deal with the introduction of the Internet. Because of the Internet, Beck believed that software development firms would need to drastically reduce the time required to code a new piece of software. He believed that his theories, called extreme programming, would help companies accomplish this goal.
Beck’s methodology involved both original concepts and ideas common in development firms of the time. However, Beck required that his teams take traditional concepts to new levels. This resulted in the name extreme programming.
Beck designed extreme programming to promote a set of values among the programmers. These include simplicity of product, meaning that the team accomplishes exactly what the client asked for and nothing else. They also include respect for team members to reduce infighting, bickering, or conflict between members of the development team. It is also expected that all members of the team respect the client and maintain a healthy dialogue. Extreme programming expects programmers and developers to regularly show their work in progress to the client. They are expected to solicit feedback from each version of the product shown to improve its design and ensure that the team is meeting the client’s expectations. To accomplish this successfully, the development team is expected to maintain streamlined forms of communication between all members of the team and the client. Team members are also expected to have the courage to tell the truth about any negative events, including unexpectedly slow progress or negative feedback from the client.
In order to promote these principles, and also to promote the rapid and efficient software development made necessary by the Internet, software development firms utilizing extreme programming are expected to follow certain steps. During the first step, planning, the customer writes user stories. These stories are not to be extremely detailed or technical. Instead, each story simply states a feature that the customer would like to see in the finished software. The team then divides the stories among the members, creating a specific timeline for the creation and integration of each story. In the second step, managing, the project manager begins setting important schedules and deadlines for the project. These include setting a time for daily team meetings, setting the right pace for the team, and assigning work to the appropriate team members.
After the manager completes his or her objectives, the team begins the process of designing. The team needs to ensure that the product is as simple as possible while still meeting the customer’s needs. This helps the team avoid unnecessary work and helps ensure that the project remains on schedule. Once the designing stage is completed, software developers begin coding the project. They must ensure that the code is written to the customer’s standards and should integrate user stories as often as possible to ensure that the code works correctly once integrated. The coders should use collective ownership, ensuring that the entire project is the responsibility of the team. Once the coding is complete, the design team is required to test the code. All units of code must be tested both individually and after integration. Additionally, all pieces of code must completely pass their tests before they can be released to the client. If a defect is found, tests must be repeated until the problem is fixed.
Bibliography
“Agile 101.” Agile Alliance, www.agilealliance.org/agile101/. Accessed 9 Jan. 2019.
“Extreme Programming.” University of Missouri-St. Louis, 2009, www.umsl.edu/~hugheyd/is6840/extreme.html. Accessed 9 Jan. 2019.
“Extreme Programming: A Gently Introduction.” ExtremeProgramming.org, www.extremeprogramming.org/. Accessed 9 Jan. 2019.
Powell-Morse, Andrew. “Extreme Programming: What Is It and How Do You Use It?” Airbreak.io, 20 Jan. 2017, airbrake.io/blog/sdlc/extreme-programming. Accessed 9 Jan. 2019.
“What Is Computer Programming?” CodeAcademy, 13 June 2018, news.codecademy.com/what-is-computer-programming/. Accessed 9 Jan. 2019.
“What Is Extreme Programming?” RonJeffries.com, 16 Mar. 2011, ronjeffries.com/xprog/what-is-extreme-programming. Accessed 9 Jan. 2019.
“What Is Extreme Programming? (XP)” Geeks for Geeks, 29 May 2024, www.geeksforgeeks.org/software-engineering-extreme-programming-xp/#. Accessed 19 Nov. 2024.
“What Is Extreme Programming? (XP)” Select Business Solutions, www.selectbs.com/process-maturity/what-is-extreme-programming. Accessed 9 Jan. 2019.
“What Is Extreme Programming? An Overview of XP Rules and Values.” Lucidchart, 30 May 2018, www.lucidchart.com/blog/what-is-extreme-programming. Accessed 9 Jan. 2019.