Extreme Programming (XP): Definition & Examples

Instructor: Shadi Aljendi

Shadi has a Ph.D. in Computer Science and more than 20 years experience in industry and higher education.

Software fills a very important role in modern life, and needs to be developed using extremely effective methods and processes. One of these methods is extreme programming (XP), and this is the subject of our lesson and examples.


Software today is at the heart of everything. Every day we continuously interact, explicitly or implicitly, with software products. We may use them hundreds or even thousands of times a year. These interactions range from simple tasks to critical missions. Some software needs are as simple as preparing our coffee in the morning so that our coffee is ready when we wake up. Other systems are so complex and so critical, they can mean the difference between life and death... such as controlling the air traffic at a busy airport.

Being that omnipresent, software development itself has reached a stage wherein 'homebrew' approaches (individual or small-scale development practices) are not sufficient to create reliable products that we can depend on for critical missions. Today software development is a true organizational effort that relies on expert teams adopting engineering approaches and complex methodologies to produce the required, reliable software. We could even say that, given the importance of software and the 'extreme' requirements it needs to meet, we need 'extreme' practices as well, when developing reliable software applications.

Having said that, because many existing practices proved to be very efficient (even if they were often performed by individuals) modern development teams did not need to completely reinvent new programming practices. They just focused on migrating these best practices toward more 'extreme' levels, which resulted in what is known as extreme programming.

What Exactly is Extreme Programming?

Extreme programming (sometimes abbreviated XP) is a set of engineering practices which are adopted in whole or in part by software development teams and organizations - to create reliable software products.

Extreme programming is an agile software development methodology. Agile software development is a development approach that favors collaboration - not only among developers, but by actively including different stakeholders. Extreme programming adapts to change by involving everyone with a stake in the outcome in the decision-making process. Extreme programming works because it concentrates on customer satisfaction (by involving the customers as well). Extreme programming is extreme because it transforms development into extremely small but important steps with extensive feedback all along the way.

Extreme Programming Practices

Extreme programming is based on certain practices that aim to enforce:

  • Development in small steps (iterations)
  • Continuous feedback (by empowering development team members and fully engaging with clients)
  • Knowledge sharing (among stakeholders)

The following are some of the main practices of extreme programming.

The Planning Game

The Planning Game is a meeting that includes the developers, the project manager, and the stakeholders in order to define the short-term priorities that will be delivered before the next iteration. An iteration is usually a short period that lasts between 1 to 4 weeks. By the end of the iteration, a deliverable should be available. The primary objective of the planning game is to involve all parties in the planning process, including developers and clients, and not to limit this process to senior management levels.

Pair Programming

In pair programming, development is carried out by two developers sitting at the same workstation. It's almost like two brains masterfully using a single body, a pilot and a copilot, wherein one is accomplishing tasks while the other ensures the tasks are accomplished. At any one time, one is programming and the other is observing. This allows for better quality code, with fewer issues and errors.

Test-Driven Development

Test-Driven Development (TDD) is a development process based on the recursive building of primitive tests based on user stories, and then only adding code that helps the software product to pass this particular test (without breaking the previously passed tests). Since the tests reflect the requirements previously negotiated with the client, both can enjoy the satisfaction of producing a TDD product.

Continuous Integration

Continuous Integration (CI) consists of merging very frequently edited code into the main branch. In fact, in extreme programming, developers are encouraged to (individually) merge their edits as often as needed each day.

Small Releases

This follows directly from continuous integration. In extreme programming, it is preferable to frequently release the current version of the software (even with just a few modifications), and put the product into real testing by real customers. This way, clients and developers will soon be assured of having met the needs of those small modifications, while rapidly discovering any new issues arising from small corrections.

To unlock this lesson you must be a Study.com Member.
Create your account

Register to view this lesson

Are you a student or a teacher?

Unlock Your Education

See for yourself why 30 million people use Study.com

Become a Study.com member and start learning now.
Become a Member  Back
What teachers are saying about Study.com
Try it risk-free for 30 days

Earning College Credit

Did you know… We have over 200 college courses that prepare you to earn credit by exam that is accepted by over 1,500 colleges and universities. You can test out of the first two years of college and save thousands off your degree. Anyone can earn credit-by-exam regardless of age or education level.

To learn more, visit our Earning Credit Page

Transferring credit to the school of your choice

Not sure what college you want to attend yet? Study.com has thousands of articles about every imaginable degree, area of study and career path that can help you find the school that's right for you.

Create an account to start this course today
Try it risk-free for 30 days!
Create an account