September 12, 2014

...Learn TDD with Codemanship

Exothermic vs. Endothermic Change - Why Coaches Should Be A Match, Not The Sun

An analogy I sometimes use to explain my approach to promoting positive change in software development organisations is the difference between exothermic and endothermic reactions.

If you think back to high school chemistry, an exothermic reaction is that generates heat from within. The combustion of fuels like petrol and wood is an example of an exothermic reaction. Sitting around a campfire on a cold night is one way in which we benefit from exothermic reactions.

Conversely, an endothermic reaction is one that draws energy (heat) in from its surroundings to make it go. For example, photosynthesis in plants is an endothermic reaction powered by the sun.

The key here to understanding the Codemanship way is to appreciate that if the sun stops shining then photosynthesis stops, too. Whereas a campfire may keep on burning until all the useful fuel - in the form of combustible carbohydrates - is used up. In the case of the campfire, the reaction is triggered by an outside force - e.g., a match - but once the fire's going it sustains itself from within. An endothermic reaction needs continued outside stimulation - a constant input of external energy - or it stops.

Projecting that idea - albeit spuriously - on to fostering change in dev teams, as an outside force I would rather be a match lighting a campfire than the sun driving chemical reactions in a plant. (The two are, of course, related. The energy we're burning on the campfire came from the sun via photosynthesis, but that's the problem with analogies.)

My approach is to turn up, inject a big dose of external energy into the system, and try to get a fire started. For that, we need the system to have its own fuel. This is the people, and their energy and enthusiasm for doing things better.

The conditions need to be right, or once I stop injecting energy, the reaction will stop, too. Many development teams are the equivalent of damp wood, their enthusiasm having been dampened by years of hard grind and demotivation. They need some preparing before we can light the fire.

The calories to burn, though, are always there. It's not easy becoming even a mediocre software developer. There would have been a time when anyone who does it for living was enthused and motivated to work through the pain and learn how to make programs work. That enthusiasm is rarely lost forever, even though it may often be buried deep beneath the battle-scarred surface.

So my focus tends to be on recapturing that joy of programming so that the latent energy and enthusiasm can be more easily ignited, starting a self-sustaining process of change that mostly comes from within the teams and doesn't have to be continually driven from outside.

This is why, putting specific practices and technical knowledge aside, Codemanship is chiefly about addressing developer culture. Workshops on TDD, refactoring, OO design and all manner of goodly Extreme stuff are really just hooks on which to hang that hat: an excuse to have conversations about what being a software developer means to you, about the developer culture in your organisation, and to do more than a little rabble rousing. That you leave having learned something about red-green-refactor is arguably less important than if you leave thinking "I'm as mad as hell, and I'm not going to take it any more!"

This is all because I believe that writing software can be, and for some people, is the best job in the world. Well, maybe not the best - but it's certainly got the potential to be a great way to make a living. I wake up every day thankful that I get to do this. It pains me to see developers who've had that beaten out of them by the school of hard knocks.

Real long-term change seems always to come from within. It has to be a self-sustaining process, driven almost unconsciously by teams who love what they do. Ultimately, it's something teams must do for themselves. All I can do is light the match.

Posted 3 years, 3 months ago on September 12, 2014