I want to share an infographic and related narrative that has really helped people emotionally connect with the importance and challenges of sustainable software development practices. I usually show the landscape in a quick introduction to Agile; in two day trainings, I go through an in-depth narrative and discussion.

Sustainable Engineering Practices

The diagram shows technical excellence at the peak of the mountain. The elevation indicates the level of challenge associated with the practices and a reasonable sequence of adoption.

Narrative to Connect at Emotional Level

Here’s an excerpt of the conversation I have when discussing this topic during training:

Michael: Let’s talk about technical practices. How important is version control?

Participants: It’s really important. We use <something>.

Michael: What do you think of someone not using version control?

Participants: High risk, wasteful, unprofessional

Michael: OK, so version control is part of the minimum standard for professional software development. Get a sense of how important it is for you to help someone not using version control.

Michael: Extreme Programming is a part of Agile that is about sustainable software development. This diagram (show diagram) shows the key practices. I am sad to inform you that the bar for what is considered the minimum for professional software development has moved. And this happened over ten years ago. (Dramatic Pause). Where does version control fit on this diagram?

Participants: Before coding standards.

Michael: (explain diagram/practices)

Comments

I almost always get questions about Pair-programming: “Why do we need it?” or “It seems like it would help earlier. Why is it later?”. My answer is as follows. Yes, it really helps to do pair-programming from the start. It is a great practice but it is tricky to get people to buy-in. Pair-programming is located before the sharp ascent required to scale the mountain. The practices here require intensive learning and are difficult to achieve without pairing.

This is a critical topic for anyone building software. See Inventor’s Dilemma and the Design-dead core for another perspective and motivation. For an in-depth simulation to help people experience this, Alistair McKinnell and I created the Sustaining Agility Game.

Acknowledgements

I am deeply appreciative of Alistair McKinnell for developing this infographic with me when building our TDD course.