Have you ever been on a really good software team? There’s this feeling of connectedness, of shared purpose. We know what we’re building, and we are skilled at building it together. This kind of team can grow some amazing software.
When we work at making our team great like this, we look for new ways of working together. The original agile movement scratched out imposed structure and asked the team to make their own. At our conferences, we talk about inclusion, empathy, emphasis on relationships. We talk about endless learning, freedom to fail, curiosity and compassion.
There is an alignment between writing really good software and being good people together.
This alignment has roots in the core activity of software and of humanity: participatory sense-making.
What on earth is that?
In software, participatory sense-making means developing a shared mental model of what the software is, what it’s going to be, and how it works. We need to understand what we’re building deeply, with a clear language to talk about it. It needs to make sense to each of us, and to all of us. We construct this model together: that means there’s more of us to work at making it real in the world. It also means the model is richer, fits with more of the real world, and more rigorous. This comes from our many perspectives participating.
In humanity, participatory sense-making is how we find shared reality in the different pieces of the world that each of us see. We build new concepts that exist only among our minds: money, economy, justice, law, music, conservation, fashion. These are real things that have causal effects on the physical world because we collectively create them.
When we’re good at participatory sense-making, we can become societies that support each member, where we can each bring as much of ourselves as we like. We can build conscientiously, instead of reducing everything to numbers, people to resources, so that some people can feel a sense of control.
On our software teams, we have to get good at participatory sense-making to make strong, consistent software. To do this, we are conscious of each other, we coregulate, we develop norms that serve us and change them when they don’t. We get better at personing.
The software benefits, even though sometimes it feels harder and less efficient to work together than alone. We get farther together; that frustration has value.
I hope that these skills we learn on great software teams will someday help us build kinder societies in the larger world. We are already pressured to build better companies. Meanwhile, choose to work on a great team when you can (like mine). Choose to care about the team you’re on, and recognize that you’re making better software, a better world, and a better next version of you.
“People must adopt a different attitude towards conditions of life and identity from the one prevalent so far — based as it is on the dogma of the mechanistic world-view and the inordinate desire for command over behavior.” – Walter Volpert, Work Design for Human Development. Software Development and Reality Construction (amazon), 1992
Three Worlds (pdf), KARL POPPER, THE TANNER LECTURE ON HUMAN VALUES, University of Michigan, 2978
“Many participants report experience more difficulty in the interactive situation, even if the goal is reached faster.” Linguistic Bodies (amazon), by Ezequiel A. Di Paolo, Elena Clair Cuffari, Hanne De Jaegher, 2018
“It is not so much that we are persons, as that we are constantly personing.” Avdi Grimm, No Return: Moving Beyond Transactions (video), Nordic.js 2019