Extreme Programming (XP) - Wa1ssy/Agiilsed-Tarkvaraarendus GitHub Wiki
What is Extreme Programming?
Extreme Programming (XP) is an Agile software development methodology that emphasizes customer satisfaction, continuous feedback, and rapid iteration. It was introduced by Kent Beck in the late 1990s to address the challenges of rapidly changing software requirements and improve software quality.
XP encourages frequent releases in short development cycles, paired programming, test-driven development, and constant communication between developers and customers.
Where is XP Used?
-
XP is especially useful in:
-
Small to medium-sized development teams
-
Projects with frequently changing requirements
-
Startups or innovative products where customer feedback is vital
-
Agile software development environments
-
Teams focused on high-quality, maintainable code
Core Values of XP
XP is built around five key values:
-
Communication – Continuous collaboration among team members.
-
Simplicity – Build only what is needed right now.
-
Feedback – Regular feedback from the customer and automated tests.
-
Courage – Make bold changes when necessary.
-
Respect – Mutual respect among all team members.
Key Practices of XP
-
Pair Programming – Two developers work together at one workstation to write code.
-
Test-Driven Development (TDD) – Write automated tests before writing the code itself.
-
Continuous Integration – Integrate and test code frequently, usually multiple times a day.
-
Refactoring – Continuously improve and simplify code without changing functionality.
-
Small Releases – Deliver working software in short, frequent iterations.
-
Simple Design – The simplest solution that works is preferred.
-
Collective Code Ownership – Everyone on the team can modify any part of the codebase.
-
Coding Standards – Follow shared coding practices to maintain consistency.
-
Sustainable Pace – Avoid burnout by keeping a steady and reasonable work pace.
-
On-site Customer – A real customer representative should be available full-time for questions and feedback.
Pros of XP
-
High-quality, maintainable code
-
Fast response to changing requirements
-
Tight feedback loops and early bug detection
-
Improves collaboration and team communication
-
Encourages a clean and simple codebase
Cons of XP
-
Requires a high level of discipline and experience
-
Pair programming can feel inefficient or exhausting to some developers
-
Not ideal for very large teams or fixed-scope, fixed-deadline projects
-
On-site customer availability may not always be realistic
SOURCES: Scrum org Atlassian Agile Aliance