Extreme Programming
Obsidian Help
Overview of Agile Methods > Extreme Programming (XP)
Definition
It is an agile software development methodology designed to improve software quality and responsiveness to changing requirements through disciplined
engineering practices and tight feedback loops.
It was introduced by Kent Beck in the late 1900s as part of the broader Agile movement.
Core Idea
XP pushes best practices to extreme levels:
If code reviews are good ⇒ review all code If testing is good ⇒ write tests before code If integration is useful ⇒ integrate multiple
continuously times per day
The goal is to minimise risk, improve quality and adapt quickly.
Key Values
Communication: Constant collaboration between developers and Courage: Willingness to refactor and discard bad code
stakeholders Respect: Shared responsibility and trust within the team
Simplicity: Implement only what is needed now
Feedback: Rapid feedback via tests, customers and iterations
Core Practices
Pair Programming
Two developers work together at one workstation:
One writes code (driver) One reviews (navigator)
Tip
This improves code quality and knowledge sharing.
Test Driven Development (TDD)
Write tests before writing the code.
Write a Write minimal code Refactor
failing test to pass
Continuous Integration
Code is integrated into the main branch frequently (even multiple times a day).
Automated tests run every time Errors are caught early
Refactoring
Constantly improving code structure without changing behaviour.
Keeps code clean and maintainable Prevents technical debt buildup
Small Releases
Deliver working software in very short iterations.
Faster user feedback Reduced risk
Customer Involvement Obsidian Help
An on-site (or closely involved) customer defines requirements and provides immediate feedback.
Collective Code Ownership
Anyone can modify any part of the codebase.
Avoids bottlenecks Encourages shared responsibility
Coding Standards
Strict, shared coding conventions improve readability and ensures consistency.
XP Workflow
Developers Continuous
Team plans - Write tests Integration
iteration - Implement features runs
User stories - Pair Program Customer
are defined reviews
Repeat every cycle
Advantages
High code quality (due to TDD + refactoring) Strong collaboration and transparency
Rapid adaptability to changing requirements Early detection of defects
Limitations
Requires high discipline and skilled developers Heavy reliance on customer availability
Pair programming can be resource-intensive Less suitable for very large or distributed teams
Important
XP focuses on engineering practices while Scrum focus on project management.