
5 Essential Values in Extreme Programming
Explicit content warning
08/12/19 • 50 min
Season 7 Epsiode 2
A weekly podcast about programming, development, and design through the lens of amazing books, chapter-by-chapter
5 Essential Values in Extreme Programing
Extreme Programing By Kent Beck - Chapters 2,3 and 4
Chapter 2 - Learning to Drive
frequent, small corrections
don't wait to find out if you are going in the wrong direction
Chapter 3 - Values, Principles, and Practices
values are the roots of things we like and don't like in a situation.
Making values explicit is important because without values, practices quickly become rote (habitual repetition), activities performed for their own sake buck lacking any purpose or direction.
practices are evidence of values
Practices are clear. Everyone knows if I've attended the morning standup meetings. Whether I really valuecommunication is fuzzy. Whether I maintain practices that enhance communication is concrete.
principles bridge the gap between values and practices
START HERE
Chapter 4 - Values
Chapters 2 and 3 are small introductory sections, here is the TLDR:
Software, teams, and requirements change. We need to be able to adapt
to such change. The next 3 sections will be about values, practices,
and principles of Extreme Programming
Chapter 4 is about values
Everyone who touches software has a sense of what matters. One person might think what really matters is carefully thinking through all conceivable design decisions before implementing. Another might think what really matters is not having any restrictions on his own personal freedom.
What actually matters is not how any given person behaves as much as how the individuals behave as part of a team and as part of an organization.
Sometimes it's easy to bikeshed over things like code style. Arrow functions vs function declaration, inline functions vs methods, etc
XP embraces 5 values to guide development
- Communication
- Simplicity
- Feedback
- Courage
- Respect
- Communication
When you encounter a problem, ask yourselves if the problem was caused by a lack of communication. What communication do you need now to address the problem? What communication do you need to keep yourself out of this trouble in the future?
JP: Retro feedback and postmortem feedback often includes communication - both good and bad
2. Simplicity
To make a system simple enough to gracefully solve only today's problems is hard work.
"What is the simplest thing that could possible work?"
JP: Emphasis on "today's problems" - how can we provide value to the customer without compromising on theirexperience and without overengineering a solution?
JS: Stakeholder communicatinon, actively work to include everyone in at the key touchpoints, initial concept, mokcup, prototype, final review.
JS: Have something to look at / talk about. Somebody make a mockup, somebody write some pseudocode
- Feedback
Being satisfied with improvement rather than expecting instant perfection, we use feedback to get closer and closer to our goals. Feedback comes in many forms.
opinions about an idea, yours or your teammates
how the code looks when you implement the idea
whether the tests were easy to write
whether the tests run
how the idea works once it has been deployed
JP: Be agile! Look to build an MVP. Get analytics on things and make decisions from there. It's hard to invest in an idea entirely and then end up ditching the whole thing. Everyone feels burned.
JS: Again, think through key touchpoints, (99%, 50%, 1%)[https://medium.com/the-mission/how-to-scale-yourself-the-99-50-1-framework-7798518f36e1]
- Courage
Courage as a primary value without counterbalancing values is dangerous. Doing something without regard for the consequences is not effective teamwork. [...] The courage to speak truths, pleasant or unpleasant, fosters communication and trust. The courage to discard failing solutions and seek new ones encourages simplicity. The courage to seak real, concrete answers creates feedback.
JP: Being able to speak up when you disagree with people's ideas and being able to listen and exercising patience.
JS: Being honest with yourslef and stakeholders about timelines, replytimes, scope.
JS: Having the courage to set boundries. - "I need this by tomorrow" - I'm sorry, I can't make that happen for you.
5. Respect
If members of a team don't care about each other and what they're doing, XP won't work. If members of a team don't care about a project, nothing can save it. Every person whose life is touched by software development has equal value as a human being. No one is intrinsically worth more than anyone else.
JP: It's much easier when everyone respects each other.
JS: Reconize there's rarely a "wrong"...
Season 7 Epsiode 2
A weekly podcast about programming, development, and design through the lens of amazing books, chapter-by-chapter
5 Essential Values in Extreme Programing
Extreme Programing By Kent Beck - Chapters 2,3 and 4
Chapter 2 - Learning to Drive
frequent, small corrections
don't wait to find out if you are going in the wrong direction
Chapter 3 - Values, Principles, and Practices
values are the roots of things we like and don't like in a situation.
Making values explicit is important because without values, practices quickly become rote (habitual repetition), activities performed for their own sake buck lacking any purpose or direction.
practices are evidence of values
Practices are clear. Everyone knows if I've attended the morning standup meetings. Whether I really valuecommunication is fuzzy. Whether I maintain practices that enhance communication is concrete.
principles bridge the gap between values and practices
START HERE
Chapter 4 - Values
Chapters 2 and 3 are small introductory sections, here is the TLDR:
Software, teams, and requirements change. We need to be able to adapt
to such change. The next 3 sections will be about values, practices,
and principles of Extreme Programming
Chapter 4 is about values
Everyone who touches software has a sense of what matters. One person might think what really matters is carefully thinking through all conceivable design decisions before implementing. Another might think what really matters is not having any restrictions on his own personal freedom.
What actually matters is not how any given person behaves as much as how the individuals behave as part of a team and as part of an organization.
Sometimes it's easy to bikeshed over things like code style. Arrow functions vs function declaration, inline functions vs methods, etc
XP embraces 5 values to guide development
- Communication
- Simplicity
- Feedback
- Courage
- Respect
- Communication
When you encounter a problem, ask yourselves if the problem was caused by a lack of communication. What communication do you need now to address the problem? What communication do you need to keep yourself out of this trouble in the future?
JP: Retro feedback and postmortem feedback often includes communication - both good and bad
2. Simplicity
To make a system simple enough to gracefully solve only today's problems is hard work.
"What is the simplest thing that could possible work?"
JP: Emphasis on "today's problems" - how can we provide value to the customer without compromising on theirexperience and without overengineering a solution?
JS: Stakeholder communicatinon, actively work to include everyone in at the key touchpoints, initial concept, mokcup, prototype, final review.
JS: Have something to look at / talk about. Somebody make a mockup, somebody write some pseudocode
- Feedback
Being satisfied with improvement rather than expecting instant perfection, we use feedback to get closer and closer to our goals. Feedback comes in many forms.
opinions about an idea, yours or your teammates
how the code looks when you implement the idea
whether the tests were easy to write
whether the tests run
how the idea works once it has been deployed
JP: Be agile! Look to build an MVP. Get analytics on things and make decisions from there. It's hard to invest in an idea entirely and then end up ditching the whole thing. Everyone feels burned.
JS: Again, think through key touchpoints, (99%, 50%, 1%)[https://medium.com/the-mission/how-to-scale-yourself-the-99-50-1-framework-7798518f36e1]
- Courage
Courage as a primary value without counterbalancing values is dangerous. Doing something without regard for the consequences is not effective teamwork. [...] The courage to speak truths, pleasant or unpleasant, fosters communication and trust. The courage to discard failing solutions and seek new ones encourages simplicity. The courage to seak real, concrete answers creates feedback.
JP: Being able to speak up when you disagree with people's ideas and being able to listen and exercising patience.
JS: Being honest with yourslef and stakeholders about timelines, replytimes, scope.
JS: Having the courage to set boundries. - "I need this by tomorrow" - I'm sorry, I can't make that happen for you.
5. Respect
If members of a team don't care about each other and what they're doing, XP won't work. If members of a team don't care about a project, nothing can save it. Every person whose life is touched by software development has equal value as a human being. No one is intrinsically worth more than anyone else.
JP: It's much easier when everyone respects each other.
JS: Reconize there's rarely a "wrong"...
Previous Episode

New Book: Extreme Programming
Iteration — A weekly podcast about programming, development, and design through the lens of amazing books, chapter-by-chapter.
Extreme Programing Explained Embrace change
By Kent Beck
Chapter 1 - What is XP?
"Extreme Programing is about social change. It's about letting go of habits and patterns that were adaptive in the past, but now in the way of us doing out best work. It's about giving up the defenses that protect us but interfere with our productivity. It may leave us feeing exposed.
It's about being open about what we are capable of doing and then doing it. And, allowing and expecting others to do the same...
...It's about the process of becoming more of our best selves and in the process our best as developers. And, it's about writing great code...
"Philosophy of software based on... communication, feedback, simplicity, courage and respect.
"XP is my attempt to reconcile humanity and productivity in my own practice of software development..."
- John — Humanity and productivity. Pomodoro timers, too much coffee, pushing weekends.
"How would you do it if you had enough time? — Fussing about the constraints distracts you from your goals. Your clear self does the best work no matter what the constraints are"
- John — Riff on Time Constraints — Time is always my blocker. Is that a good one?
Final Summary — What is XP?
- Giving up old habits
- Fully appreciating yourself for total effort today
- Striving to do better tomorrow
- Consistently Evaluating yourself
- Meeting your Human needs
Next Episode

Principles in Extreme Programing
Season 7 Episode 3
A weekly podcast about programming, development, and design through the lens of amazing books, chapter-by-chapter
Hi, I'm John and I'm joined by JP.
Today we will be going through chapter 5 and continuing our discussion about the guiding principles of Extreme Programming.
- Intros
- Chit Chat
Recap:
- values are the roots of things we like and don't like in a situation
- communication, simplicity, feedback, courage, respect
- practices are evidence of values
- principles bridge the gap between values and practices
Values are too abstract to directly guide behavior. (This is why we discuss things in the context of principles)
Other principles may guide your team, but these are the principles that guide XP:
- Humanity
- Economics
- Mutual benefit
- Self-similarity
- Improvement
- Diversity
- Reflection
- Flow
- Opportunity
- Redundancy
- Failure
- Quality
- Baby steps
- Accepted responsibility
Now obviously we aren't going to bore you with discussion on all 14 of these principles, so today we'll only talk about a handful of them.
Humanity - noun, the characteristics that make us human 🐸
Copy and paste alert
What do people need to be good developers? What are some basic human needs?
- Safety - freedom from hunger, physical harm and threats to loved ones. Fear of job loss threatens this
- Accomplishment - opportunity to contribute to their society
- Belonging - ability to identify with a group from which they receive validation
- Growth - opportunity to expand their skills and perspective
- Intimacy - ability to understand and be understood by others
Interestingly, satisfying these requisites meets both business and human needs.
Self-Similarity 👻
"Fractal Nature of geology" When nature finds a shape that works, she uses it wherever she can.
A crystal is a material whose constituents, such as atoms, molecules or ions, are arranged in a highly ordered microscopic structure — the same arrangment all the way to an atomic level. The same shape, makes up arrangments that make the same shape, that makes up arrangements that make the same shape.
All's to say - I've found that many things that prove useful at a small scale, work at larger scales
Concepts like
- Good names work for functions, methods, models, controllers, variables and namespaces
— breaking things up into smaller peices, methods, functions, models controllers, etc - process If it works to break up a method, it will probably work to break up a controler
- extraction Definining data in one organized place (switch statment Javascript example?)
- Simplicity
Diversity 🐸
Software development teams where everyone is alike, while comfotable, are not effective. Teams need to bring together a variety of skills, attitudes, and perspectives to see problems and pitfalls, to think of multiple ways to solve problems, and to implement the solutions. Teams need diversity
The principle of diversity suggets that the programmers should work together on the problem and both opinions should be valued.
Oppourtunity 👻
"Learn to see problems as opportunities for change."
To reach exellence, problems need to turn into opportunities for learning and improvment, not just survival.
Conciously choose to transform each problem into an opportunity. Good book on this the obsticle is the way
Example: .env files for all of our projects got posted to a public repo. We migrated toward a better more secure system, credentials that would be harder to leak and are easier to rotate. We used the problem as an oppourtunity to improve our architecture.
Quality 👻
Sacrificing quality is not effective as a means of control... Quality should not be a control variable.
- These are the variables you should change: Time, Cost, Money and Scope. Never quality
This is really extreme.
Author makes the aurgument that when you skimp on quality you end up spending even more time or money. This rings true, I have often taken the wrong approach in projects of skipming on design, testing or refacting and it doesn't really help in the long run.
We'd all like to get more features out the door for less money, it's just not doable. Less is less.
Failure 🐸
If you're having trouble succeeding, fail. Don't know which of the three ways to imple...
If you like this episode you’ll love
Episode Comments
Generate a badge
Get a badge for your website that links back to this episode
<a href="https://goodpods.com/podcasts/iteration-225636/5-essential-values-in-extreme-programming-25584494"> <img src="https://storage.googleapis.com/goodpods-images-bucket/badges/generic-badge-1.svg" alt="listen to 5 essential values in extreme programming on goodpods" style="width: 225px" /> </a>
Copy