Go to app
GuidesProduct developmentWhat is extreme programming (XP)?

What is extreme programming (XP)?

Last updated

31 January 2024

Author

Dovetail Editorial Team

Reviewed by

Mary Mikhail

Working in a large organization with over 100+ employees? Discover how Dovetail can scale your ability to keep the customer at the center of every decision. Contact sales.

There are numerous ways to go about agile software development, including Extreme Programming (XP). 

XP is a set of engineering practices that involves concentrating on one current feature (without focusing too much on the long-term product) so that changing requirements have minimal impact. Tactically, XP also prescribes five values and concepts that guide the team’s composition and behavior.  

When combined with other agile methodologies, such as Scrum, XP can unleash its full potential. (Methodologies like Kanban or Scrum can provide a foundation for regulating workflow). By layering XP on top of that structure and emphasizing best practices, teams can significantly enhance their quality of life and output.

What’s the history of XP?

XP is currently considered the most comprehensive agile software development methodology. Its history dates back to the 1990s when the growth of the Internet triggered major changes in software development. 

The speed at which companies grow and bring products to market is crucial to their success, so most organizations have looked for ways to dramatically shorten the software development life cycle.

This environment inspired software developers Ron Jeffries, Ward Cunningham, and Kent Beck to create extreme programming. The new agile project management approach became famous largely because it allows for frequent releases in brief development cycles. As a result, developers could drastically improve software quality and swiftly respond to varying customer requirements. 

The developers primarily chose to call the strategy “extreme” because its adherence to highly disciplined tactics is much more central to how the work is done than the less-detailed methodology adopted by traditional (waterfall) tactics.

The first-ever XP team was tasked with developing a rewrite of Chrysler Corporation’s payment processing system. The work began in early 1996, and in the following year, the system went live for a huge population of Chrysler employees. Since then, XP has been used by countless development teams from all over the world to provide a variety of solutions to complex business issues.

XP roles

In XP, all team members are regarded as developers. The customer also has a crucial role. Still, depending on which XP source you consult, some offer little or no guidance on roles. Here’s how certain classic project roles tend to work cross-functionally within an XP framework:

The customer:

Considered the primary focus of XP, the customer is part of the development team and always has at least one on-site representative. The main work of the customer is to define the product requirements without dictating how you should accomplish the work. They prioritize individual phases of the project, including clarifying requirements (stories about what the user should eventually be able to do with the product). More than one person can assume the role of the customer. In practice, marketing staff or product managers often handle these tasks (soliciting feedback from their organization when needed). 

The developer:

Anyone actively participating in the product’s development in XP is classified as a developer. There are no unique subdivisions within the development team. Developers generally help build the product and respond to customers’ needs through time and effort estimation, scheduling and executing development, and planning. When necessary, developers are also empowered to ask for help, which may mean requesting additional resources. Developers in XP also stick to a 40-hour work week. If they are overburdened or overworked, the project suffers (it is common for developers to set their own schedules).   

The tracker:

Also called ‘the manager’ since the individual responsible links customers and developers, the tracker gathers developers and customers and moderates meetings. One of their chief duties is ensuring meeting discussions are constructive and everyone adheres to the established conventions and rules. They also track key metrics (such as the time each individual takes on a project) and, when necessary, act as the mediator. 

The coach:

A project should have a mentor or a coach to ensure everything runs smoothly and stays within XP’s best practices—ideally, an individual with advanced XP knowledge who helps ensure all involved parties have a shared understanding of processes. It is usually an external consultant, separate from the product development team or someone from another department within the organization. This role is similar to that of a scrum master as they help review rules and practices with the team during preliminary meetings. Avoiding dual roles (e.g., a developer who still acts as the coach) is generally ideal. 

XP characteristics

Nowadays, XP is one of the most popular software development methods, with its lightweight nature being characterized by:

  • Concentrating more on getting continuous feedback rather than having the customer state what they want from the onset and using that as the basis for development

  • Delivering value to the client in small bits (Weekly Cycle)

  • Focusing on the need to include all essential changes during the development period (accommodating every adjustment that customer feedback points out by redesigning, re-coding, and re-testing the changes)

  • Eliminating defects during the preliminary stages to save on rework and expenses

  • Ensuring that the customer stays updated throughout the Weekly and Quarterly cycles   

What do your users really want?

Just upload your customer research and ask your insights hub - like magic.

Try magic search

XP values and principles

XP has five essential core values that serve as its foundation:

1. Communication

XP prioritizes communication to ensure that all team members work toward delivering quality outcomes. Consistent communication between developers and customers ensures that information flows swiftly and teams can handle problems almost instantly. Every individual must maintain communication with the other involved parties to identify errors early on. Team members also conduct daily standup meetings to track and discuss the project’s progress.     

2. Simplicity

In XP, developers always try to apply the most straightforward solution. This principle leads to a very modest development approach and execution. The development team thus saves time and effort by writing simple code that adds great value to the product. The team does not dwell on unimportant things. Rather than focusing on requirements that could be necessary in the future, the developers prioritize the features that are needed right now in a swift and effective development process. A simpler code is also easier to understand, which enhances communication. Furthermore, it is much easier to manage the maintenance and enhancements of a lean project. 

3. Feedback

Direct communication, with timely and constructive customer feedback, leads to developing high-quality software. The customer must express criticism as often as needed. XP also considers the system’s messages (logs) to be feedback. To ensure that the entire process is feedback-oriented, it’s essential to think in small steps: the team should operate in brief cycles, continuously testing the code and letting the customer know about each deployed update. This core value ensures that developers can make necessary changes quickly and fix bugs as early as possible. 

4. Courage

In extreme programming, courage is considered the willingness to say the truth, however unpleasant. You have to point out any errors in the product, even if you are the one who made the mistake. There are no excuses for a team that works using the XP methodology. Since all team members work toward a common objective, mistakes are everyone’s responsibility. This principle is why XP developers are generally more open to changing organizational structures, questioning tactics, accepting criticism, and completely rewriting code when necessary.    

5. Respect

Everyone needs to observe mutual respect for an XP team to work harmoniously and deliver superb results. Respect should not only be between the developers themselves but also extend to the customers by taking all their concerns and feedback seriously. Finally, managers must treat the development team respectfully and provide all employees with a respectful culture.  

XP practices

The XP process involves a collection of 11 unique practices that shape the entire project. 

1. Test-driven development

Since XP focuses on delivering the next feature, the typical development process is modified. The emphasis shifts to writing test cases first and then writing the code that allows the tests to pass versus writing the code followed by writing the test cases. This test-driven development eventually reduces debugging time and makes it easier to evolve the design as time passes. Furthermore, the tight test-code cycle results in plenty of opportunities for feedback. The team can also create a comprehensive (automated) test suite that assesses the code's behavior from the onset.  

2. The planning game

XP planning occurs on a smaller scale (one release) in conjunction with the overall project release. It is considered the first process in the XP lifecycle, and the customer needs to be involved so that they can outline their user requirements. This results in a clear outline of what you are aiming to achieve, by when, and what you plan to do next.  

Then, the team can develop several iterations essential to building the desired functionality on a bit-by-bit basis. When it is impossible to have user stories that can help estimate and generate iterations, the team can introduce spikes, which are time-boxed efforts focused on research only. 

3. On-site customer

An on-site customer should be available during the entire XP period. They work closely with the development team, ensuring the developers understand and meet all requirements. They also facilitate feedback and communication. 

4. Pair programming

In XP programming, no developer works individually. Rather, they practice a highly collaborative coding tactic called pair programming, where they sit with a partner at a workstation. The first programmer (driver) normally controls the workstation and handles all the key coding details. The next developer (navigator) sits beside the driver and progressively reviews the code as it’s being written, all while considering the bigger picture. Pair programming helps keep each developer focused on the task and enables the driver to brainstorm ideas or seek real-time feedback. If the driver is stuck or tired at any point, the navigator can take over, ensuring that each developer stays fresh and on task. Furthermore, throughout the process, the pair has enhanced collaboration and communication, which makes it easy for them to keep each other accountable and enforce good XP practices.

5. Code refactoring

The main goal of refactoring in XP development is to ensure that each product iteration is well-designed and the overall software delivers the intended business value. Thus, this technique continuously improves the code throughout the development period. It is all about eliminating redundancy, removing unnecessary functions, improving the coherency of the code, and simultaneously decoupling various elements. Every XP team member wants to keep their code simple so they can seamlessly understand and modify it when necessary. 

6. Continuous integration

Rather than waiting for completed iterations, XP teams integrate code changes frequently. They practice continuous delivery, which involves committing code multiple times daily versus waiting for a scheduled release. XP practitioners understand the need for seamless communication and frequently discuss the parts of the code they can reuse or share. By sharing code, XP teams know which parts of the code base each feature will impact and can significantly lower integration problems. Furthermore, they practice automated testing, ensuring they can detect and rectify issues before they deploy.  

7. Small releases

This software delivery method allows for frequent customer feedback. ‘Small release’ refers to swiftly releasing the minimum viable product (MVP) and further enhancing it through smaller, cumulative updates. Small, regular releases help XP teams gain insights throughout the project period. They can get feedback, detect bugs early, and assess the product’s operational potential.

8. Simple design

In XP, the best-designed software is the most basic product that functions well. The optimal design should meet the customer’s requirements,  pass all tests, and have zero duplicate or overly complicated code. Practitioners of XP believe a design can be simplified more easily after it has been in production for a while. Some experts even recommend writing code for the features you plan to implement now rather than writing it in advance for future features or architecture. Focusing on the specific design for the current set of requirements allows you to create the simplest design. You can then refactor incrementally to incorporate new knowledge, design, and requirements. 

9. Coding standards

XP projects have one code standard. Just like writers have to assume a brand’s voice to sound like it’s always written by one person, XP developers write code in the same style so that one developer’s code looks like all others. With coding standards clearly outlined, the entire code base is structured similarly so that each contributor can navigate it well and add code according to the same standards. Furthermore, consistent and recognizable coding standards encourage a sense of collective ownership.  

10. Collective code ownership

Any coding pair can alter the code at any point, regardless of who developed it. The code production in XP is done by a team, with each individual’s work held to the same high standards. No individual developer sits above or below the rest of their colleagues, as everyone works together to produce an excellent product. Due to collective code ownership, the entire development team feels responsible for the product being developed, which facilitates knowledge-sharing and decision-making. The team members challenge each others’ coding and enforce good habits on one another, which increases the chances of ending up with higher-quality code. Furthermore, code reviews are effective because the reviewer is more familiar with the coding style and collective code. There are fewer errors or defects and a reduced likelihood of creating single points of failure.

11. 40-hour week

For a project to be successful, the team’s welfare is crucial. To deliver high-quality work, they must remain well-rested and motivated. This belief is why XP teams maintain a 40-hour week. Avoiding overtime at all costs (or only allowing it infrequently) is essential. 

Comparing XP to other frameworks

Here’s how XP compares to other Agile methodologies:

Scrum vs. XP

Scrum is another form of an Agile tactic run by a Scrum Master. Like XP, Scrum develops new software or product features by running sprints off user stories. However, compared to Scrum, XP is more rigid. XP has stricter rules and guidelines around the actual writing of code. Scrum has more of an emphasis on process and project management.   

Kanban vs. XP

The main difference between Kanban and XP is that Kanban does not divide a project into iterations. On the other hand, XP is an iterative methodology. While Kanban optimizes efficiency and offers a visualized workflow, XP prioritizes continuous feedback and collaboration. 

Lean vs. XP

Lean, like XP, is an agile methodology that helps deliver a high-quality product to a client quickly. However, the priority of XP is to deliver small chunks of features in production to get frequent customer feedback. With Lean, the priority is on generating more value with fewer resources by minimizing waste and optimizing the flow of work.  

Here is a side-by-side comparison:

Advantages and disadvantages of XP

Advantages

XP mainly helps cut down on development costs and time and has the following major advantages:

Continuous testing and refactoring

  • XP encourages ongoing testing and refactoring for stable and efficient systems

  • Minimizes debugging needs

Client-centric development

  • Small iterations with constant client feedback

  • Changes aligned with customer input to minimize costs and effort

Clear and concise code

  • Enables writing clear and concise code for easy interpretation and future changes

Streamlined documentation

  • User stories replace requirement documents

  • Reduces the need for cumbersome documentation

Constant communication

  • Throughout development, constant communication ensures effective project monitoring

  • Facilitates progress tracking and timely delivery

Pair programming benefits

  • Results in higher-quality products with fewer bugs

  • Enhances collaboration and code quality

Continuous customer engagement

  • Ensures ongoing customer engagement throughout the project

  • Aligns development with customer expectations for successful outcomes

Disadvantages

Some of the disadvantages of XP include:

Uncertain customer requirements

  • Difficulty assessing project time, cost, and scope due to uncertain customer requirements

  • Challenges in project planning and estimation

Programming-centric focus

  • XP prioritizes programming over design, which can be difficult when frequent design changes impact the end-user experience.

Customer engagement challenges

  • Potential hurdles with regular customer meetings

  • Lack of expertise or time from customers can impede product development

Feedback delays

  • Quality of feedback challenges may cause delays

  • Potential hindrance to progress in building the current iteration

Structural and cultural shifts

  • Transitioning from traditional tactics to XP requires significant structural and cultural changes

  • Adoption challenges may hinder a smooth transition

When to use XP

Applying XP and its rigorous principles can make a lot of sense with 

  • Small teams—Teams of less than 12 people tend to adapt well to XP practices and values (primarily because communication can be more streamlined and efficient). It takes less time to assemble and have meetings and code review sessions.  

  • Active customer participation—XP actively encourages the involvement of customers within the project team. The results of a project are higher quality when the customer is always ready and available to offer their input during the project’s execution.    

  • Highly adaptive development approach—XP is superb for systems that frequently change and adapt. It’s a methodology designed to help developers swiftly and accurately meet evolving requirements.   

  • Ready to accept a new culture and mindset—XP is very different from the conventional approaches to software development, requiring an alteration of the overall work structure and mindset.    

When not to use XP

Here is a list of situations where XP might not be the appropriate framework. This list is a summary via recommendations on the C2 Wiki page, "When is XP Not Appropriate," and may not cover all possible scenarios.

  • Safety-critical systems These systems require careful change management for the sake of preserving safety.

  • Limitations in concurrent middleware development Concurrent middleware—software that bridges different applications or components—  development is limited by unreliable unit testing due to its many use scenarios, making XP impractical. However, CRC cards and low-frequency refactoring may still apply. (CRC cards are commonly used in software development to convert use-case descriptions into class diagrams.)

  • Challenges in OS kernels and device drivers A similar rationale as concurrent middleware applies—XP practices like CRC cards and 'low-frequency' refactoring may be relevant, but not the entire XP methodology.

  • Making adjustments in older systems 'Legacy' systems with extensive code volume may necessitate occasional tinkering. However, if the amount of code is so large that it's challenging to maintain, XP is probably unsuitable.

  • Making costly changes in a project XP might not be the best fit when projects involve making expensive decisions that heavily depend on software. If there's a need to rework decisions that affect the hardware after purchase, a different approach may be necessary.

FAQs

What are the four basic activities in XP?

Planning, designing, coding, and testing are the four basic activities in extreme programming. 

What is a real-life example of extreme programming?

One quintessential example of XP is the development of a Bachelor of Science thesis project titled IMPRO (Image Processing Environment) in 1993. While the methodology became popular in 1996, IMPRO’s project team used most of its features.  

Who invented extreme programming?

Kent Beck, Ron Jeffries, and Ward Cunningham developed XP in the mid-1990s.

What are CRC cards, and how do they affect XP?

During the system and software development design phase, teams frequently use CRC (Class-Responsibility-Collaboration) cards to transition use-case descriptions into class diagrams. These cards are a tangible way to represent the classes in a system, along with their responsibilities and interactions with other classes. The process typically involves brainstorming sessions where team members write the names of each class on an index card, along with their responsibilities and the classes they collaborate with. The cards can then be arranged and rearranged to visually represent the system's classes and interactions, which can be used to design and refine the system's architecture.

Should you be using a customer insights hub?

Do you want to discover previous interviews faster?

Do you share your interview findings with others?

Do you interview customers?

Start for free today, add your research, and get to key insights faster

Get Dovetail free

Editor’s picks

What is continuous improvement?

Last updated: 22 March 2023

What Is a Minimum Viable Product (MVP)?

Last updated: 23 March 2023

What is product design?

Last updated: 2 April 2023

What are user stories?

Last updated: 23 March 2023

What is prototyping?

Last updated: 23 March 2023

What is a product mix?

Last updated: 10 June 2023

What is a product line?

Last updated: 25 June 2023

What is new product development?

Last updated: 27 April 2023

What you need to know about feature flags

Last updated: 23 January 2024

Stakeholder interview template

Last updated: 13 May 2024

Product feedback templates

Last updated: 13 May 2024

Latest articles

Stakeholder interview template

Last updated: 13 May 2024

Product feedback templates

Last updated: 13 May 2024

What you need to know about feature flags

Last updated: 23 January 2024

What is a product line?

Last updated: 25 June 2023

What is a product mix?

Last updated: 10 June 2023

What is new product development?

Last updated: 27 April 2023

What is product design?

Last updated: 2 April 2023

What Is a Minimum Viable Product (MVP)?

Last updated: 23 March 2023

What are user stories?

Last updated: 23 March 2023

What is prototyping?

Last updated: 23 March 2023

What is continuous improvement?

Last updated: 22 March 2023

Related topics

User experience (UX)Product developmentMarket researchPatient experienceCustomer researchSurveysResearch methodsEmployee experience

Decide what to build next

Decide what to build next

Get Dovetail free

Product

OverviewAnalysisInsightsIntegrationsEnterpriseChannelsMagicPricingLog in

Company

About us
Careers15
Legal
© Dovetail Research Pty. Ltd.
TermsPrivacy Policy

Log in or sign up

Get started for free


or


By clicking “Continue with Google / Email” you agree to our User Terms of Service and Privacy Policy