Extreme Programming (XP) - allikvaleria/Phyton GitHub Wiki

Extreme Programming (XP)

Extreme Programming (XP) is one of the agile methodologies. Despite the name, some practices have already become industry standards - such as refactoring and continuous integration. XP focuses on simplifying the development process, minimising documentation and maximising customer feedback.

What Extreme Programming solves

XP helps you adapt to change, respond quickly to customer needs and deliver a quality product. Here are the main problems XP can help with:

  • Changing requirements.

  • Code quality.

  • Team communication.

  • Time estimation and planning: release planning and iteration planning help to estimate the time needed to complete tasks more accurately and allocate resources more efficiently.

  • Continuous testing and integration allows for quick identification and correction of bugs, improvement of product quality and rapid feedback.

Five values of Extreme Programming:

  • Simplicity - XP concentrates on development that is really necessary, avoiding unnecessary complexity.

  • Communication - open and honest communication within the team is considered critical to the success of the project.

  • Feedback - XP includes frequent and rapid feedback from customers, allowing the project to be quickly adapted to market demands.

  • Courage - The team needs courage to make decisions, design changes and maintain high quality standards.

  • Respect - each team member is valued for his or her contribution, and everyone must respect the opinions and work of colleagues.

Five rules of Extreme Programming:

  • Planning - XP requires constant checking of the viability of the project and adjustment of the work plan.

  • Management - In XP, it is important to maintain a balance in the workflow by ensuring adequate information and task sharing.

  • Projecting - starting with as simple a project as possible, which can then be made more complex.

  • Coding - coding should be done with the client and involves pair programming to improve the quality of the code.

  • Testing - all code should be unit tested before being included in the project, additional tests should be created if errors are found.

12 Practices of Extreme Programming (XP):

  1. Collaborative planning - All project participants - clients, architects, developers - plan the work together to have a common understanding of the goals.

  2. Client participation in test development - Clients help create test criteria so that the result meets their expectations.

  3. Regular releases - The team frequently showcases the results of the work to get feedback quickly.

  4. Simple and effective design - As clear and functional solutions as possible are chosen to simplify implementation and maintenance.

  5. Pair programming - Programmers work in pairs, share experience and control code quality at once.

  6. Test-driven development (TDD) - First tests are written, then the code that should pass them.

  7. Constant refactoring - The code is regularly improved: its readability is increased and complexity is reduced.

  8. Collective code ownership - Any programmer can change any part of the project to improve the result.

  9. Continuous integration - Changes are often merged into common code, which helps to find and fix bugs quickly.

  10. Realistic workload estimation - The team takes on as many tasks as it can realistically accomplish without overloading.

  11. Common communication language - All participants use the same terms to describe the project to avoid misunderstandings.

  12. Adherence to code standards - All code is written to generally accepted quality and security standards.

Planning and Feedback Threads in Extreme Programming

In Extreme Programming (XP), planning and feedback play a key role in enabling adaptation to change and continuous product improvement. These processes keep development speed and quality high by preventing functionality obsolescence. The following describes how XP organizes planning and feedback integration.

Planning cycles

  • Release Planning: The team defines the long-term goals, key product features and release schedule together with the customers. This sets the stage for more detailed work in the next phases.

  • Iteration Planning: Before each iteration, the team selects tasks for the sprint, breaking them down into small manageable chunks. This allows for flexibility and faster product improvement.

  • Daily Planning: Each day starts with a short meeting (stand-up) to discuss progress, challenges, and plans for the day. This supports team synchronization and helps focus on iteration goals.

Feedback

  • Customer feedback: Customers are actively involved in the process, regularly checking the results and making adjustments. This helps to steer development in the right direction in a timely manner and increase product satisfaction.

  • Testing: Tests are written before the code, defining the expected behavior of the system. Continuous testing helps to quickly find and fix bugs at all stages of development.

  • Pair programming and code review: Two developers work together, sharing experiences and identifying bugs immediately. This improves code quality and avoids "blurry vision", when one person may miss obvious errors.

  • Retrospectives: At the end of each iteration, the team analyzes what went well, what can be improved, and what changes to make in the next sprint to continually improve process efficiency.

Comparison: XP vs Scrum vs KanbanCriteria

Criteria Extreme Programming (XP) Scrum Kanban
Main Focus Code quality and adaptability to change Project management through sprints Continuous improvement of task flow
Iterations Short (1–2 weeks) Fixed-length sprints (2–4 weeks) No fixed iterations (continuous flow)
Planning Release Planning, Iteration Planning Sprint Planning Planning "on demand"
Roles Customer, Programmers, Coach, Tracker, Tester Product Owner, Scrum Master, Team No strict roles (some guidelines exist)
Engineering Practices Strong focus (TDD, pair programming, refactoring) Lightly mentioned (assumed by default) Not specified
Feedback Continuous: from customer, tests, pair programming At the end of each sprint (review & retro) Continuous via board visualization
Performance Tracking Sustainable pace and testing Measured by sprint velocity Measured by task lead time
Changing Priorities Possible at any time Only between sprints Possible at any time
Team Size Small teams (5–12 people) Small teams (5–9 people) Suitable for teams of any size
Best for Startups and fast-changing environments Projects with clear phases and deliverables Support, maintenance, operational workflows