Friday, April 1, 2022

Why Ensemble Programming/Testing isn't Group Programming/Testing

It's two years since I took action on the words I use around this particular style of collaborative software testing (and development), and decided I will no longer be excluding people uncomfortable with the term mobbing which by vocabulary definition means bullying of an individual by a group. Repurposing mobbing to mean a collaborative programming style that centers kindness, consideration and respect just felt too much of a dissonance. While I don't have the energy to change the world or those who don't follow and choose to change themselves, I committed to changing myself. That alone was quite a significant energy commitment. 

I learned a new language. I would talk of ensembling, and ensemble programming and ensemble testing. Being the person who lead the way in figuring out ensemble testing in the first place, I went back to my old writings and replaced the terminology. I had a book out that I renamed to Ensemble Programming Guidebook. I changed the domain names I had. I made my peace with the fact that I might find myself speaking of the common thing with a new term. 

Soon I started to notice that I was too soon with making peace with acceptance, and many people I hold dear followed. Lisi Hocke, Lisa Crispin, Emily Bache - and with Emily, a lot of the programming world. 

To discover the new world, I collected and investigated options. I learned what different groups of animals are called, and the final selected word was one I would not have come by without the essential contribution from Denise Yu. As per our mutual agreement, this term is a result of collaboration, and the work we both did was essential. 

For two years now, the world has coexisted with the original. It has made its way to Wikipedia, and it is understood as a synonym even amongst people like Mob Mentality Show who have visible high stakes in the original name. Renaming your own thing isn't an easy thing, and the ripple effects of it are quite a commitment. 

I personally have reached a point where I no longer say "ensemble programming, previously known as mob programming" but the term lives on its own. I need to still explain it, as the conversations around the chosen term are no longer about how negative the connotations are but how ensemble is a difficult word for the English native speakers. We could have also said group/team programming as the options were back then, so I wanted to reiterate today on why those words did not get chosen.

Ensemble programming as a word tries to say this technique is different than just some group / team getting together to work. 

Group programming / testing says: 'all hands', with multiple computers. 
Ensemble programming / testing says: 'one hands', with a single (or a few for some activities) computer. 

Group programming / testing says: 'all voices, for themselves, you overhear some stuff'. 
Ensemble programming / testing says: 'all voices, one at a time, listen to the voice'

Both say all brains, but for a very different composition. Group has brains co-located, doing their own thing. Ensemble has brains co-located, doing the same thing. 

With these distinctions in mind, I look back at a training class I provided this week at work. We had whole group working together through single hands that rotated. We had primarily two voices taking turns in guiding the work, as the group did not know how to do the work they were there to learn. 

In an ensemble, hands listen and follow the voices. We work as a single mind that is stronger together through hearing the contributions through verbalizing them. 

Group / team testing does not come even close to expressing how this dynamic is different.