Extreme Programming (XP)
This article explains Extreme Programming (XP) in a practical way. After reading this article, you’ll understand the basics of this powerful internet technology.
What is Extreme Programming (XP)?
Extreme Programming (XP) is a software development framework that consists of various agile techniques. This principle is used to improve the quality of software solutions, and is additionally used to anticipate the client’s wants and needs. Extreme Programming, amongst other things, consists of various past principles and best practices that have clearly proven to be effective in software development.
This branch is called software engineering. Just like with every other type of engineering and business operation, IT professionals have to find new ways to satisfy consumers’ ever-changing needs. To meet this requirement, an organisation has to find a way to monitor changes, and to easily implement developments.
The origin of Extreme Programming
In 2001, 17 software specialists created the Agile project management philosophy. These principles were based on flexibility, speed, and cooperation in the development of new software solutions. These principles were explained in the Agile Manifesto.
Extreme Programming (XP) is one of these Agile frameworks. This method’s main emphasis lies on technical aspects of software development, which, by definition, makes it different from other approaches.
Software engineer Ken Beck introduced XP in the nineties. His goal was to find new ways to quickly deliver high quality software solutions that satisfied consumers’ wants and needs. In 1999, he refined the method in his book Extreme Programming Explained: Embrace Change.
Extreme Programming today
Extreme Programming (XP) was received with considerable interest by software communities in the late 1990s and early 21st century.
However, the praising of this approach only lasted shortly. Due to the high level of discipline necessary for successfully executing software adjustments with Extreme Programming (XP), a lot of these practices were regarded as rigid.
They were depreciated and not completed. During these times, other agile methods were also developed, and therefore XP kept improving. In the second edition of Extreme Programming Explained, Beck added more practices and principles, to which he added more distinction between primary and secondary issues.
What are the values of Extreme Programming?
Extreme Programming (XP) is a series of technical practices and measures. Developers have to do everything they can to make the execution of these practices successful. That’s what the “extreme” in Extreme Programming stands for.
To understand what it means for managers to surpass themselves, it’s important to understand the principles of Extreme Programming (XP). These are explained below.
Simplicity is one of the core components of Extreme Programming. Simplicity is pursued by constantly asking yourself: what is the easiest solution that will still work? Simplicity is important because it prevents waste (LEAN).
Only absolutely necessary things are executed and implemented. Examples of necessary elements are design and basic functionalities. Everything should be about a design that is so simple that maintenance, support, and revision are an easy task.
Communication is a second important value of Extreme Programming (XP). Software development is often done in a team. To transfer knowledge from one team member to another, communication is crucial.
Extreme Programming emphasises the importance of proper use of communication through this value. As such, personal discussions and group conversations are stimulated, and the use of whiteboards and other tools is strongly encouraged.
Beck defines courage as the ability to act effectively in situations where fear is prevalent. Courage is necessary to bring organisational issues that hamper a team’s effectiveness to light. You need courage to stop things that don’t work, and to try other things. You need courage to take feedback, to reflect on it, and to change the way things are done depending on the situation.
It is a generally known fact that both individuals and teams can identify points of improvement and revise their actions through feedback. Feedback is an important part of Extreme Programming (XP) and is also very easily applied. A team will convene from time to time to talk about developments or a product or provided service. By collecting feedback about the design and the implementation, and implementing changes where necessary, the product will become simpler, more effective, and more efficient.
The last value of Extreme Programming (XP), which was later added during the first revision of the method, is respect. All members of a team have to respect one another to apply the beforementioned values. Only in the presence of mutual respect, it is possible to give feedback, and have it be interpreted correctly. A sense of solidarity in working and designing solutions together, is essential. It can make or break a project.
What are the principles of Extreme Programming?
The principles of Extreme Programming are based on the values of XP. The principles are more tangible than the values, and are intended to support decision making within a team. The principles’ feedback, simplicity, and changes are explained in short below:
As previously discussed, feedback is an important component of Extreme Programming (XP). Feedback is most useful when it is given frequently and quickly. These two points are important to ensure minimal delay between feedback and the follow-up action.
To learn this is crucial, as it is especially important to be able to respond rapidly in a fast changing and highly competitive environment. Consumers’ feedback plays an important role as well. The customer has practical insight into the system and can give specific feedback.
This feedback directs the development of the product. Frequent feedback moments can show design errors in a timely fashion, allowing them to be solved quickly.
Extreme Programming (XP) dictates that every problem must be treated as if the solution to it is extremely simple. Traditional methods often say: plan, and code for re-use. XP rejects this view. XP proponents say that implementing massive updates at once does not work. Rather, XP applies smaller, incremental updates. This means that the updates will not result in major changes in neither design nor use.
On the other hand, change is stimulated. This principle of XP dictates that change must not be opposed. If, for instance, the consumer’s wants and needs have changed drastically, one must not stop and think about why this is the case. Instead, action must be taken immediately.
What are the different phases of Extreme Programming (XP)?
Extreme Programming comes with a manual that describes various phases. Every phase lists a number of activities that are essential for a successful implementation of the Extreme Programming (XP) methods. The different phases, and their relevant activities are explained below.
Phase 1: planning
During the first phase, plans are made. The consumer writes short user stories instead of long documents with requirements. These user stories reveal all the functionalities that the software solution must entail. User stories do not have to be long or technical.
It is enough to just have sufficient details to help the team develop an appropriate solution. User stories can be supported with a basic flow chart that, for example, includes all desired functionalities.
From this, the team creates a release schedule. The project is then divided into various iterations (Product Breakdown System).
Phase 2: managing
During the second phase, the project manager ensures the forming of a suitable team to start work on the project. A dynamic, cooperative team is incredibly important for the execution of Extreme Programming, therefore the project manager will take a number of measures beforehand:
- The project manager will ensure that there is an open workspace for the team
- The project manager will set a sustainable working pace
- The project manager plans daily stand-up meetings and feedback sessions
- The project manager measures the project speed
- The project manager will assign work packages to prevent loss of knowledge and double work
- The project manager changes the rules of Extreme Programming if they are not working correctly
Phase 3: designing
In the third phase, the value of simplicity is emphasised. The team is supposed to start with the simplest design in their search for a suitable end product. Complex functionalities are not implemented hastily, rather the team will look for simpler solutions.
Without a good design, the implementation of a system is extremely difficult. When a design has very complex components, its maintenance will always be expensive. Good and simple design will result in the elimination of complex dependencies, and will ensure maintenance to remain affordable.
Phase 4: coding
The code, or software solution, is implemented in the fourth phase. In some situations, Extreme Programming requires an entirely new solution, in other cases, merely a small adjustment of an already existing design is necessary. During this phase, it is important to maintain continuous contact with the client. Preferably, the client is present at the location, so that both needs can be addressed, and questions asked.
Phase 5: testing
The new solution is tested in the fifth, and final, phase. The project team will continuously conduct tests during this phase. Additionally, minor errors, such as bugs, are fixed. Acceptance tests are also conducted. Extreme Programming (XP) places a great deal of value on testing the solution to improve the likelihood of flawless software.
Listening and feedback
During all previously mentioned phases, it is important that the client is listened to, and that feedback is shared between team members. Firstly, it is important that developers and project managers listen to the client’s wants and needs.
It is essential that the organisation provides good quality work. The programmers who develop the system’s functionalities must be fully aware of everything the client expects and demands. Additionally, feedback is also important during these phases.
Feedback is one of the most important factors of XP, and not without reason. Frequent contact with the client offers perspective and makes the development of the final product effective. The team members themselves also benefit from feedback sessions. By helping each other, they help each other grow.
What are the benefits and drawbacks of Extreme Programming?
Below, both the benefits and drawbacks involved in using the Extreme Programming (XP) method are described. Consider these carefully, and then decided if XP is suitable for your task at hand.
Benefits of Extreme Programming
- The biggest benefit of XP is that this method allows companies to save time in the successful completion of projects.
- Time saving is possible because XP focuses on the timely delivery of final products.
- Money and other resources are saved as teams do not require a lot of documentation.
- The entire XP process is transparent.
- Developers have to stick to the task and show progress
- Constant feedback is a strong benefit, and necessary to implement changes in a timely fashion
- XP helps to create faster and more reliable software thanks to the testing phase
- XP contributes to employee satisfaction and staff retention
Extreme Programming Drawbacks
- Various specialists have pointed out that XP is more focused on code than design. This can lead to issues, as design is important for software application
- Various XP projects have shown that defect documentation does not always run smoothly. This can lead to so-called bugs and other defects
- No extra attention is paid to quality management. This could result in additional defects.
Now it’s your turn
What do you think? Do you recognise the explanation of Extreme Programming (XP)? Are you familiar with programming? What else would you like to know about Extreme Programming? Does this method sound complex or simple? Is this framework used in your own work environment? Do you have any tips or comments?
Share your experience and knowledge in the comments box below.
- Beck, K. (1999). Embracing change with extreme programming. Computer, 32(10), 70-77.
- Beck, K., & Fowler, M. (2001). Planning extreme programming. Addison-Wesley Professional.
- Beck, K. (2000). Extreme programming explained: embrace change. addison-wesley professional.
How to cite this article:
Janse, B. (2020). Extreme Programming (XP). Retrieved [insert date] from toolshero: https://www.toolshero.com/information-technology/extreme-programming/
Add a link to this page on your website:
<a href=”https://www.toolshero.com/information-technology/extreme-programming/”>toolshero: Extreme Programming (XP)</a>
We are sorry that this post was not useful for you!
Let us improve this post!
Tell us how we can improve this post?