agile > chapter 1 the agile approach > 14 XP (extreme programming)

XP (eXtreme Programming)

This is an agile methodology developed by Kent Beck in 1996 and revolves around thirteen (13) practices seemingly related to the 12 principles in the Agile Manifesto.

The XP engineering practices

These practices are:

  1. Compact team - immediate access to clients is essential because the customer (the person paying for the system) isn't always the same as the client (the person using the system). We may be making a system for students to access quiz questions for a school (the client) so we should have teachers readily accessible to test the system
  2. Planning games - this is a planning process in XP consisting of iteration planning and release planning
  3. User tests - the customer defines the acceptance criteria for the product. We include these details in the definition of "Done"
  4. Small deliverables (aka releases) - these are small increments that add business value to the product. They are usually accompanied by pitches which introduce the customer to the new changes and increase their confidence in the progress
  5. Simple design - the work team develops the software in the simplest way. This helps us to avoid over-engineering
  6. Pair programming - the coding is done by pairs of programmers at a work station. One of them does the actual coding and the other reviews the code in light of the overall goal of the requirements. This prevents the former from adding code that does not serve to add business value or complete useful work. The 2 individuals interchange roles throughout the day
  7. Refactoring - this is where the programmers improve the internal aspects of the system (the implementation) without changing its external behaviour (the interface)
  8. Test-driven development (TDD) - unit tests are used to validate the performance of the code under specific conditions which may cause the code to fail. The unit test is passed when code no longer fails under the conditions simulated
  9. Continuous integration - the team tries to keep working on the current version of the project and merging these changes with the code repository
  10. Collective ownership of the code - every member of the development can access and is responsible for the code. Unit tests help to fix the possibility of unexpected errors even if a less experienced developer is working on the code
  11. Coding standards - this is a standard set of rules that the development team agrees on and follows throughout the project's lifetime. It includes details of the coding style, the programming languages to be used and constructs and design patterns to avoid
  12. System metaphor - a story of the customers, programmers and admins
  13. Sustainable pace - overtime work is avoided

XP values

XP activities

The four (4) activities in XP are:

XP roles