Extreme programming (XP) is an agile methodology, considered one of the most effective in software development. It operates with a test-first development scheme. It has short-term planning, while being highly adaptive to changes of requirements, and consists of highly productive teams that produce quality software rapidly and effectively.
In extreme programming, the involvement of the customer is higher than in any other agile methodology. They are an active member of the team throughout the project life cycle.
Indeed, it is truly “extreme,” as it requires a lot of effort. The release of the software should answer the client’s needs as soon as possible. Typically, the code must be designed and tested today, not tomorrow.
It requires high levels of persistence and discipline. The frequent use of functional tests and automated units stands in need of logical thinking, relevant experience, and quick problem-solving skills.
Is XP highly effective? Let's take a look at the roles and principles on the XP team.
The Extreme Programming Team
XP team size varies from a small number of five people up to 12. The positions on the team are: tracker, programmer, coach, tester, and customer. Due to the complexity and high velocity of work, they are in frequent verbal communication.
The customer sets the rules: functional tests, priorities, and user stories. They have regular meetings with the tracker to keep them well-informed about project progress.
The tracker is like the manager of the XP team. They take responsibility to support the team and make sure the project is going the right way.
The programmer implements the customer’s requirements for the project. They define the tasks and estimate the workloads in relevance to the user stories.
The tester carries out trials of the code and analyzes graphs. They report the results to the rest of the team.
The coach arranges the daily and weekly meetings. Typically, they are responsible for passing valuable information to the tracker.
In extreme programming, there are daily meetings called stand-ups that last up to 15 minutes. Usually, the stand-ups are at the start of the day. During these meetings goals are introduced and collaborated with the team. However, at the end of each cycle, there is a longer meeting where the project velocity is measured.
Pair programming is when two developers work on one station together. They work in time blocks, usually one or two weeks maximum. Thus, XP reduces the cost of changes in requirements by having many cycles rather than just one long one.
Principles of Extreme Programming
XP follows the agile principles. However, it has five key values: simplicity, communication, courage, respect, and feedback.
Each of the key values has a strong impact on the flow of work in extreme system programming. From my experience at an Angular development company, simplicity, communication, and feedback are core methods for maximizing efficiency in both Scrum and XP.
Courage allows the programmers to modify the code regardless of the risks. It is a necessary skill when critical decisions must be taken, such as refactoring the code or removing the source code.
Respect is essential to XP team members. They need to show understanding and support when it comes to providing and accepting constructive feedback. Only a respectful team can handle the speed of work required in XP projects.
Unlike in other methods, testing comes first. In each cycle, instead of creating code and tests and then running them, the XP team first codes failing automated tests, then runs them, and then develops the code to make the tests pass. Sounds longer, right? Yet the chances that the code will work from the start are higher than in traditional programming.
The delivery of the system on time requires the coders to write and test it constantly. Risks are usually taken by fixed time schedules using the latest technology. However, during the weekly cycle (usually at the beginning), the XP team gathers to analyze progress, risks, and weekly tasks.
Both the advantages and disadvantages of extreme programming should be recognized before applying this approach to your project.
Pros of Extreme Programming
Fast. Instead of a couple of years, like in other software development methods, extreme programming projects last only several months. There is a fast-paced work environment with no wasting of time. There is continuous integration and deployment.
Visible. Open communication within the team helps everyone keep up with the project progress. Everyone works on individual tasks, yet the regular meetings record the improvement collectively. Due to the visibility of XP projects, failures and bugs are limited.
Reduces costs. In extreme programming, the feedback loop is reduced. Thus, the cost of change is also reduced. In other methodologies, the code is remanufactured only after customer feedback. Here, changes are implemented throughout the developmental period.
Teamwork. In XP the developers work hard to accomplish goals within tight deadlines. They support each other throughout the entire project. They design and test the code together. Pair programming gathers them in groups of two where they share ideas and create software side by side. Hence, there is increased employee commitment and satisfaction.
Cons of Extreme Programming
Code overcomes design. The focus of XP is definitely the code rather than the design. The design is what sells the application, so the customer could be unhappy with the end product if the design is not good enough. Sometimes this can result in failing to implement the software requirements fully.
Location. XP projects are difficult to implement when the customer is away from the developmental team. Typically the XP interactions are successful when the team members meet face to face. Therefore applying extreme programming limits the range of projects.
Lack of documentation. The constant changes cannot be documented properly. Thus, there are high risks of unexpected failures that cannot be tracked. Even when bugs are fixed, without accurate documentation it’s possible that the same errors can recur.
Stress. There is a lot of pressure working with tight deadlines. If the developers have high stress levels completing tasks on time, they are more likely to make mistakes while coding. Subsequently, software quality could be reduced due to the scheduling.
Consider Extreme Programming for Your Team
Extreme programming might be the right management approach to your project if you prefer your team to code within a short time frame.
Like other agile methodologies, extreme programming aims to cope easily with changing requirements. However, it's advantage is that it is developed to create products faster.
Both the customer and the development team are committed and equally involved in the project life cycle.
The golden rule of XP is test first, then develop. Of course, there are risks when you go to “extreme” testing and then coding. However, this approach is highly efficient, and that is why it is widely used in software development.
Let me know about your experiences with extreme programming. Leave a comment for further discussions.