DEV Community

Iteration Podcast

Essential Practices

A weekly podcast about programming, development, and design through the lens of amazing books, chapter by chapter

John: Hi, I'm John and I'm joined by JP.

JP: Today we will be going through chapters 6, 7, and 8 for those following alone - which are all about Extreme Programming practices. These are the things that XP teams are doing on a daily basis. Kent Beck defines two categories for practices: Primary Practices and Corollary Practices. You must first master the primary practices before considering corollary ones. This episode focuses on primary practices.

Practices that do not serve a purpose or have values are empty. For example, pair programming for the sake of making your boss happy doesn't make much sense. However, pair programming to communicate, get feedback, simplify the system, catch errors, and bolster courage makes a lot of sense.

Reminder - XP Principles

  • Humanity
  • Economics
  • Mutual benefit
  • Self-similarity
  • Improvement
  • Diversity
  • Reflection
  • Flow
  • Opportunity
  • Redundancy
  • Failure
  • Quality
  • Baby steps
  • Accepted responsibility

Primary Practices (Chapter 7)

Sit together

XP predicts that the more face time you have, the more humane and productive the project.

👨‍🏫 humanity

👨‍🏫 improvement

👨‍🏫 quality

Informative workspace

Make your workspace about work. An interested observer should be able to walk into the team space and get a general idea of how the project is going in 15 seconds.

  • 🐶 Digital workspace counts for remote teams — hygiene on backlogs, clarity on where project status is.

👨‍🏫 mutual benefit - doing stuff today that benefits me now and in the future

👨‍🏫 flow

Energized work 🔥

Work only as many hours as you can be productive and only as many hours as you can sustain. Burning yourself out unproductively today and spoiling the next two days' work isn't good for you or for the team.

Taking care of yourself is the quickest way back to energized work.

I turn to long work hours as a way of grabbing control in a situation in which I am otherwise out of control

👨‍🏫 flow

👨‍🏫 humanity

👨‍🏫 improvement

👨‍🏫 mutual benefit

Hot tips:

➡️ stay the same amount of time but manage time better

➡️️️️️ block off 2 hours at a time in your calendar just for coding

➡️ turn off phone, email, and slack notifications

Pair programming

  • 🐶 Nothing better for getting better and writing better code. Need to make a more regular practice of this.

Stories

Plan using customer-visible functionality. As soon as the story is written, try to estimate the development effort necessary to implement it.

Write stories on index cards and put them on a frequently passed wall. Every attempt I've seen to computerize stories has failed to provide a fraction of the value of having real cards on a real wall.

  • 🐶 Small discrete shippable changes. Should fit on an index card.
  • 🐶 I've written my share of stories that are 2.0 Messaging tool. That's waaaay too open ended.

👨‍🏫 flow

👨‍🏫 reflection

👨‍🏫 quality

Ten-minute build

  • 🐶 Absolutely true, anything more than 10-15 mins you end up with a bunch of PR's with a broken build.

Continuous integration

  • 🐶 If you don't have CI set up, even for a solo project. Do it.

Getting Started (Chapter 8)

REMEMBER! XP is a way to improve both your development process and your experience in it.

  • adapt by adding practices that meet your goals and express your values
  • you don't have to implement all of the practices at once. pick one, see how they meet your goals and align with your values.
  • baby steps!
  • 🐶 Even if you can't get your team to switch, adopt a practice on your own.
  • 🐶 The only person you can actually change is yourself, even if you are the boss!

Change always starts at home. The only person you can actually change is yourself. [...] Dictating practices to a team destroys trust and creates resentment.

  • lead by example

  • 🐶 Find a practice - List out Things that drain you, list out things that energize your work, adopt practices around these two things, preventing drain and supporting energizing!

Picks

  • JP: http://www.pythontutor.com/visualize.html#mode=edit - so cool!
  • John: https://github.com/sirupsen/airrecord - Worked so well to hack to gather an MVP, incredible. No migrations and the rest of the team could read / write data to the database.

Episode source