eXtreme Programming: a tier list of the values

Daniele Scillia (Dan The Dev)
Dan the Dev
Published in
4 min readNov 29, 2021
Photo by Roberto Nickson on Unsplash

Extreme Programming is a path of continuous improvement toward desired excellence, which in broad terms brings ideas like short development cycles, an approach to incremental planning, flexibility and the ability to respond quickly to change, reliance on automated testing, constantly evolving design with features, and close collaboration and ongoing conversations within the team.

Values, principles, and practices are how eXtreme Programming is described by Kent Beck; they are all pieces of the same puzzle, which is not complete without all three being present.

You don’t become an XP programmer just because you’ve read the book or applied all the practices at least once. You can only consider yourself one after you understood the values and principles, and even started applying the practices. And the daily application of the practices, together with the creation of new practices to cover a problem not covered by the suggested practices, if necessary, is another component that will make you grow: every practice is valid as long as it respects the values and principles.

So, let’s get straight to the point: why a tier list and not, for example, a top one? It may seem like a trivial choice, just to follow a trend, but it actually has a very clear rationale behind it.

A top 5 list of principles would send a message like “these 5 are the fundamental ones, you can do without the others”. I don’t feel like saying that you can do without any of the values and principles of XP. The Top 5 format goes much better with the practices, for example.

The point of the tier list is to say: “the values and principles are all needed, but let’s try to prioritize them.” Obviously, the priority is very personal so you probably won’t agree: let me know yours in the comments.

Priority for me basically means making explicit that the absence of the one in the first position is more serious than the absence of the one in the last position. In other words, assuming we are in a place where none of these values and principles are present, where do we start to try to insert them in the context in which we are.

Values

5 - Feedback

As mentioned, all values are fundamental, so even an important value like feedback ends up in the last place. No direction stays true for long in real problems, whether we’re talking about software, requirements, or system architecture. Changes are inevitable, which makes feedback necessary. The main reason for the last position is that looking for (quick) feedback it’s very difficult and IMHO requires a mix of the other's values.

4 - Communication

Communicating is one of the fundamental aspects of an IT team, often the one that brings problems; every time something doesn’t work we should ask ourselves if there was a communication problem at the base. Still, while important, communication is hard, even harder when we are working remotely; communication, in my experience, is definitely favored by courage, simplicity, and respect, so I put it after them.

3 - Simplicity

Often doing simple things comes from great skills: when you know how to do something in a fair and simple way, without excesses, you show great knowledge and experience. It is therefore essential from the beginning to put simplicity at the center of your choices; again, we are trying to give a reasonable order to these values and simplicity becomes possible only from people that show courage and respect.

2 - Courage

Having courage it’s always important: it favors communication and simplicity, enabling more sincere feedback between team members. Having the courage to express a sincere opinion can be a powerful tool, allowing one to make choices that go in the direction of simplicity, but it can become dangerous when respect is missing.

1 - Respect

Respect is necessarily in the first position: is the first thing that a company should guarantee to the team. If people perceive respect, they will respond with the maximum commitment possible, even in front of some organizational issues. That respect will be the foundation of the growth of the team. The feeling of being respected as a professional but also as a human being will set the stage for a lot of good consequences: people will be more confident in following principles like courage, communication, and feedback, leading to simplicity in a smooth way.

Conclusion

This list was a funny game: it’s incredible to realize how many thinking starts trying to order values that are all fundamentals for a team. It doesn’t make sense trying to use this list in a concrete way, but the path that brings you to write down your own list makes emerge how related they are. Any order make sense because they are strictly connected to each other, influencing one another in a positive or negative way, depending on how much the team understands them.

--

--

Daniele Scillia (Dan The Dev)
Dan the Dev

Software Engineer @TourRadar - Passionate Dev, XP Advocate, passionate and practitioner of Agile Practices to reach Technical Excellence