DEV Community

Iteration Podcast

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 implement a story? Try it all three ways.

When you don't know what to do, risking failure can be the shortest, surest road to success

Conclusion:

  • Principles give you a better idea of what the practice is intended to accomplish
  • Understanding the principles gives you the opportunity to create practices that work in harmony with your existing practices and your overall goals

Picks

  • JP: Burke Williams deep tissue massage. I'm all about the self-care
  • John: App called "Mood" free app that helped me be more mindful of my emotions. It's been really insightful and helpful. I've moved from an average of 44% negative emotions to 55% positive emotions in just about 2 weeks. Just stoping and noticing my humanity, how some things make me feel has made a big impact in my overall mental wellness. I'm finding really interesting corollaries between my activities and diet and my overall happiness.

Episode source