Many companies today use agile methodologies. So, most people have heard of Scrum or Kanban by now, but one of the less-known methodologies of agile philosophy is Extreme Programming.
Extreme programming was created in the late 90s to help teams develop software with more quality.
This article will explain what Extreme Programming is and how it can be used to benefit UX Design.
What is Extreme Programming?
Extreme Programming (XP) is a methodology that seeks to Optimize software development processes, creating high-quality programs while taking into account the user experience.
By involving end-users in the development process, XP can minimize risks and prioritize features and characteristics that are essential to customers. While users act as business representatives providing Constant Feedback on the system, Extreme Programming also focuses on Collaborative work between teammates.
Like the Agile Philosophy, Extreme Programming works with values and principles that guide implementing best practices. The forerunner of XP was Kent Beck, author of the book Extreme Programming Explained: Embrace Change, released in 1999, and who, in 2001, also participated in the creation of the Agile Manifesto.
Moreover, there is also a strong relationship between XP and User-Centered Design concepts, which further strengthens software development and user experience.
Extreme Programming Values
1) Communication
Communication is essential because it prevents mistakes and keeps everybody on the same page about difficulties, concerns, and achievements.
When there's poor communication or lack of it, the consequences can be dreadful, and the following situations can be a sign of that:
- The team didn't ask users the right questions;
- A team member failed to report a problem;
- Someone didn't inform a change request to the team;
- A leader/manager failed to mention essential information about the project development.
All the situations above could be avoided if communication between team members was successful.
Reading tip: Emotional Design: Adding Value to Your Products
2) Simplicity
Simplicity refers to doing simple things that work rather than complex things that won't be used.
In XP, It's better to develop something simple and fast and then improve it over time than to take longer to deliver something complex that, in the end, might not even serve the users.
3) Feedback
The feedback process is critical to understanding if the team is on the right path.
In Extreme Programming, the goal of feedback is to get information quickly and continuously to adjust any errors in the path or to validate that things are going as planned.
It is essential to understand that feedback happens at several levels, such as:
- Comments of your partner in a pair-programming session;
- In the Opinions of team members, in meetings, or even informally;
- Results and Comments from user tests;
- During Formal meetings with leaders or managers.
However, be careful because the high number of feedback can also be challenging if the team doesn't know how to handle a large number of impromptions/errors.
There might be a problem in the process or task prioritization if there is too much to change. So understand that feedback is essential, but be careful not to drown in it.
4) Courage
According to Kent Beck, courage is acting effectively in the face of fear.
In this sense, courage in Extreme Programming can manifest itself in many situations like:
- Telling the truth about deadlines, inconsistencies, and mistakes;
- Giving and receiving feedback;
- Adapting quickly to changes;
- Knowing when to let go — what's done can't be undone.
In a broader analysis, we could say that courage is closely related to ethical issues and taking ownership of what we do. After all, bravery usually means overcoming our fears to do the right thing.
5) Respect
Respecting the people on the team and their individual opinions and differences is indispensable to building a healthy work environment. And consequently, it helps to establish more efficient and productive processes.
Reading tip: Usability: How To Develop A User-friendly Website
Principles of Extreme Programming
1) Rapid Feedback
Rapid feedback addresses the need to act quickly on the feedback received.
Generally speaking, we shouldn't wait weeks or months to address an issue reported by feedback. Instead, XP must work with quick responses, developing the necessary solutions to the appointed problems.
2) Simplicity
Simplicity is about having a mindset to solve all problems as simply as possible.
We are often asked to think ahead and prepare for future situations. Extreme Programming works with the problems we have to solve today rather than thinking about issues that don't exist yet.
The focus should be on simply solving the needs that exist today and relying on team members' abilities to crack the problems that will appear in the future.
It is important to emphasize that working with simplicity means working on functional solutions.
3) Incremental change
Instead of creating a complex solution that tries to meet all users needs — which unfortunately won't — it's better to opt for simplicity and work on incremental changes as feedback comes in.
Extreme Programming works by taking one small step at a time, guaranteeing good results, and always looking for feedback from customers and users.
4) Embracing change
Every project must embrace change and not dread it. Whether in software development, UX Design, or Product Manager, it is essential to have a mindset focused on the present instead of getting stuck on what doesn't work.
5) Quality work
Humans are emotional beings. Everybody wants to feel appreciated and be part of something, to have a purpose.
So, of course, if you work knowing that you're directly improving the lives of others (users) and see that your efforts have paid off, You will probably feel proud of it. And that's the spirit when we say quality work here.
Working on a valuable product will motivate employees to keep doing their best.
Companies with this approach expect developers and designers to produce and work for the best results. And for that, companies and leaders must provide good working conditions, partnership, psychological safety, and mental health for everyone on the team.
Reading tip: Why Is Empathy Essential For UX Design?
Combining Extreme Programming with UX Design
As seen so far, XP has values and principles to guide teams on being more productive and supportive of one another.
Extreme Programming didn't initially come from UX Design despite having similar values. So complementing XP perspectives with UX improves product development as a whole, with issues such as:
- Research, user people, and tests with users;
- Information Architecture;
- Problem identification;
- Prototyping and wireframe creation.
The expertise that UX Design has in collecting, analyzing, and identifying user needs means that XP benefits from these practices and is able to gather better and more accurate feedback for its development cycles.
Wait a minute, there's also Lean UX!
Another methodology that complements Extreme Programming practices is Lean UX.
As with UX Design, some Lean UX practices and values are very similar to those of XP; therefore, combining these three perspectives becomes very powerful.
We've seen that XP also values rapid testing and learning through feedback, iteratively.
If you are already familiar with Lean UX, you can see how much they are similar in these matters. In this sense, combining the two methodologies will help to further improve:
- Understanding and creating a Minimum Viable Product (MVP);
- Validating new changes quickly;
- Be data-driven and make more assertive decisions.
Adopting all these methods requires different types of professionals. We emphasize the importance of building a Balanced Team, including Product Managers, UX Designers, developers, and other specialists who help implement all practices in the best possible way.
The benefits of combining XP, UX Design, and Lean UX
A study carried out to analyze the impacts of this approach on development teams have identified the following benefits of combining multiple methods:
Problem-solving mindset
Teams that used all three approaches saw an exciting shift in mindset: from reactive to more focused on understanding and solving problems.
Team Engagement
From this change in mindset, people on the team started to get more engaged with the project.
Once everyone starts to understand the needs and problems that users want to solve, they begin to understand the value of their work and, consequently, feel more motivated and engaged.
Shared Responsibilities
As a result of the team's engagement, more responsibilities began to be shared. In addition, when there's more contact between team members, stakeholders, and users, the understanding of impact and responsibility is even greater.
Involving everyone in the project—and not only Product Designers and Project Managers— in this level of responsibility fosters collective ownership, encouraging the team to cooperate more.
Greater user involvement
Thanks to User-Centered Design concepts widely used in UX Design, the study teams felt a big difference in the level of user participation in the project development.
Increasing user involvement benefits both sides, as it aligns the company's objectives with what users want.
Use of more assertive tools
Methods within Lean Startup, such as Build-Measure-Learn, establish iterative cycles more efficiently, helping throughout the product development process.
XP improved the quality of deliverables
With Extreme Programming practices, the teams felt that software development projects gained more agility and quality.
Final Considerations
Although Extreme Programming is a methodology created to help and improve software development processes, its values and principles are closely linked with UX Design.
Therefore, adopting XP also needs to open your eyes to other practices, such as User-Centered Design and Lean UX.
It is essential to always keep in mind that different methods and concepts are not necessarily exclusive; they are often Complementary and necessary to improve processes and, ultimately, overall user experience.