The eXtreme Programming or XP methodology is a project management method that applies the principles of agile development to the extreme, i.e. focusing on customer needs, implementing iterative development and integration keep on going. The project team and its customer relations are at the heart of XP.
This method was created by Kent Beck between 1996 and 1999, when he was working on a project for Chrysler. Originally developed for the computer industry, eXtreme Programming is now very popular because it works for all types of projects of all sizes and sectors, all over the world. This methodology is ideal for small and medium-sized teams, i.e. no more than about twenty people.
Principles of Extreme Programming
The principles of the eXtreme Programming method are not new since they are those of agile methods. The difference and the originality lie in the fact that they are pushed to the extreme. The eXtreme Programming method relies on:
- Strong responsiveness to changing customer needs
- Team work
- The quality of the work provided
- The quality of the tests carried out at the earliest
XP is based on Five Core Values
- Communication: It is essential that each member of the team communicates daily with his or her colleagues as well as with the client. It is an unavoidable way to solve problems.
- Simplicity: the simplest way to achieve the result is privileged. The project team does what is needed and requested, nothing more. A simple application will be easier to do next.
- Feedback: Feedback between the project team and the customer is essential. Each step of the project is sent as quickly and as often as possible to the client so that it tests, gives its opinion and validates the step. Each change request is taken into account immediately.
- Respect: Respect for each member of the team and their work is paramount. The management, the project team and the customer respect each other.
- Courage: It takes courage to make changes such as trying a new technique, repeating an uncommitted iteration, or reviewing the organization of the project. Courage makes it possible to get out of an inadequate situation.
Process of Extreme Programming
The five XP values are available in thirteen mutually reinforcing practices:
- Client on site: the client must be represented on site during the entire duration of the project. This representative must have an overall view of the result to be obtained and be available to answer questions from the team.
- Game planning (or planning poker): the planning is done in collaboration with the customer. The latter creates scenarios for the features it wishes to achieve. The team evaluates the time required to implement them. The client then selects scenarios based on priorities and available time.
- Continuous Integration: When a task is completed, it is immediately integrated into the complete product. This avoids the overload of work due to the integration of all elements before delivery. The tests facilitate this integration: when all the tests are positive, the iteration is finished.
- Small Deliveries: Deliveries should be as frequent as possible so that the customer gives his opinion and the changes are quickly taken into account by the team.
- Sustainable rhythm: no overtime is tolerated. If there are, then the schedule must be reviewed. A tired employee works badly and makes more mistakes.
- Functional Tests: Based on client-defined scenarios, the team creates test procedures to verify development progress. When all functional tests pass, the iteration is completed.
- Unit Tests: For each feature, a test is written to verify that it will work as expected. This test will be retained until the end of the project, as long as the functionality is required. Each time the code is changed, all tests are started to identify immediately if there is a malfunction.
- Simple design: we go straight to the basics by focusing solely on the current needs of the customer. The simpler the application, the easier it will be to evolve it during the next iterations.
- Using metaphors: XP teams use metaphors to describe the system and how it works to clarify the functionality to be achieved. Everyone speaks the same language.
- Refactoring (or redesign the project): the project has improved steadily. The goal is to have a good foundation and better working conditions for the team.
- Collective ownership of the project: the responsibility of the project is collective. Each team member can modify all portions of the project, even those on which it has not worked. The goal is to be efficient and fast.
- Language Standards: Since everyone works together on the project, it is essential to facilitate everyone’s work by using the same terms, the same style and clear communication rules.
- Work in pairs: employees work in pairs. The pilot and copilot change regularly to improve communication and collective knowledge of the project.
Projects managed by the eXtreme Programming method are based on short and rapid development cycles that are carried out collectively by the project team and the client whose involvement is constant.
Counterproductive activities were suppressed to reduce the costs and frustration of all involved.
Conditions for the Success of eXtreme Programming
- To be implemented effectively, the eXtreme Programming methodology requires a change of mentality and acceptance by all the teams involved.
- In order to guarantee the success of XP, it is essential that the client or a representative is fully invested in the project.
- This method cannot work with large teams, if pair work is impossible or if feedback is long and difficult to obtain.
With the eXtreme Programming methodology, managers, project team and client work together. This approach favors the simplest method, promotes team responsiveness and ensures continuous quality control.
Concretely, XP is not obvious to apply and to master because it requires a lot of discipline and communication. We must move quickly, without losing sight of the rigor of the work and the final functions of the project. The great strength of the eXtreme Programming method lies in its simplicity and the fact that one goes straight to the essential, following a rhythm that must remain constant.