Logo

dev-resources.site

for different kinds of informations.

Demystifying XP Values, Principles & Practices

Published at
2/19/2023
Categories
xp
agile
Author
kalarani
Categories
2 categories in total
xp
open
agile
open
Author
8 person written this
kalarani
open
Demystifying XP Values, Principles & Practices

For any team that wants to adopt XP, it is important to make sense of the values, principles and practices and how they are connected to each other. Though, this understanding will solidify itself over time, it can be challenging to the team to sustain till then. And many teams may not have the luxury of allowing themselves the required time. Here, I attempt to put my understanding from practising XP over my years in Thoughtworks into words, hoping it'd help someone who is looking for this.

An Analogy:

Imagine a child, that is learning to speak. Children usually start speaking and create grammatically correct sentences even before they understand the elements of grammar. At this point, they are simply replicating / mimicking what they hear others speak. But, as they grow, they start understanding what they speak. They are able to break it down and label things as nouns / verbs / adjectives / adverbs. They are able to understand the different voices in the sentence. Once they understand this, they'll play around with it. They'll be able to generate more sentences that mean the same. They become capable of expressing themselves creatively and in different forms and without taking much of cognitive load.

In the XP world:

I feel, it is the same with teams that want to practice XP. Often it is useful to start with the practices, since they are more concrete. For example, you can start doing TDD even before you could understand the values of doing so. You can write a test - see it fail (bleeding red) - write the code - and see it pass. These are tangible things. The practices are activities that helps us in our day jobs. We spend most of our time in such practices. It is a very good place to start. But, if we don't understand the values and principles behind them, we risk being dogmatic.

As the team matures, we need to look beyond practices and be able to look at a big picture, be able to pick & choose (or drop) what is appropriate for the given situation.

Consider a scenario to see how these different components come to play with each other. As a team, we've agreed to value Communication. Personally, I'm not a big fan of code commenting. However, there are people on my team who'd see code comments as documentation that accounts to communication. I'd suggest that we address this by adding tests, which is guided by the principle of Quality.

However, if the team publishes an API and if anyone in the world can consume it, then it becomes essential that we add documentation (which could be in the form of comments and using tools to generate docs out of it). Here the documentation is important since it is now guided by a couple of principles Humanity (for external devs who consume our APIs) and Redundancy (by having tests + docs).

Mapping to show adoption of different practices based on context

The Golden circle of XP:

I relate the values, principles and practices to the golden circle. The practices (what we do) form the outer most circle. The principles (how we do) takes the inner circle. The values (why we do) goes into the core.

Lets say, As a team we decide to do TDD. Practising TDD would be hard, if we take a complex problem and attack it as a whole. We'd have to break it down to smaller pieces and attack one at a time - which essentially means we are taking Baby steps - which in turn reflects the fact that we value Simplicity.

Golden circle showing the route from TDD to Simplicity by taking Baby Steps

Similarly, if we take another example - when the team decides to do pair programming. We could trace it to the value of Feedback in the lens of Redundancy.

Golden circle showing the route from Pairing to Feedback by allowing Redundancy

xp Article's
30 articles in total
Favicon
My Favorite Quotes in Extreme Programming
Favicon
Extreme Programming Meets the Cloud: How Serverless Would Have Been XP's BFF
Favicon
Regra 4: A generalização demanda três exemplos
Favicon
Renaming Bugs as "UnWritten Test Cases"
Favicon
AI-XP Unpacked: Integrating AI with Extreme Programming for Enhanced Agility
Favicon
Di una charla sobre cómo trabajamos con XP
Favicon
Quality Coding Manifesto
Favicon
Gradient Descent for XP practitioners
Favicon
Demystifying XP Values, Principles & Practices
Favicon
The Real Reasons for Doing Test-Driven Development 💎
Favicon
TDD: Benefits and Drawback of test-driven development
Favicon
Behaviors for a better pair programming experience
Favicon
Book review: Modern Software Engineering
Favicon
Scrum is great in theory, but "it will never work in the real world"
Favicon
Pair Programming - Why you should try it
Favicon
The importance of seeing red
Favicon
Pick a methodology: Scrum, Kanban, XP, Lean or DevOps?
Favicon
BDUF vs emergant design
Favicon
Hot-air balloon Retrospective Template
Favicon
Three modes for an enhanced pair programming experience
Favicon
Ryan Bergman loves terrible code... and other things I learned recording his DevJourney (#150)
Favicon
Schedule chicken
Favicon
DEV3L on Extreme Programming Explained
Favicon
DEV3L on Certified Scrum Developer
Favicon
Dependências: Bibliotecas ou OTP Applications?
Favicon
The Software Quality Cost Myth
Favicon
What DevOps Engineers can learn from Extreme Programming (XP)
Favicon
Want to run a kata at your company? I did it. Here are some tips.
Favicon
How I use CRC (Class Responsibility Collaboration) Cards every day (Part 1)
Favicon
Soft(er) skills that make you a better programmer

Featured ones: