To call a software development team a well-oiled machine may be taken as a compliment or an insult. Software development isn’t mechanical work, and machines belong in software factories, and nobody likes the idea of a software factory. (Well, maybe somebody does, but that’s not the point.) On the bright side, the phrase can denote a team that functions very well.
In discussions about what makes for a good team, there’s a lot of emphasis on technical skills and also on the importance of collaboration. I’ve noticed the “lubricant” for that well-oiled team machine is not always as obvious as that. Sometimes there’s a key individual on the team who keeps things from falling apart. Sometimes that person’s contribution is not recognized.
A Case in Point
I was serving as the Scrum Master and technical coach for a certain development team back in 2006. The team comprised several highly opinionated software developers who often got into circular debates about technical details that were, perhaps, not as significant as they thought they were. They had a tendency to bog down, spending many minutes per occurrence in these debates. More on that in a moment.
One of the team members was a woman who was keen to become a strong developer. She worked very hard at it. Unfortunately, she lacked aptitude. Over time, the other developers began to avoid pairing with her. One day she complained about that at the daily standup.
We did the old style “three questions” type of standups in those days. Pairs, rather than individuals, spoke, and they spoke about the card they were playing. When it was her turn to speak, she said she didn’t have a pairing partner and wasn’t working on a card. I looked around the group and everyone was avoiding eye contact.
Offline, one by one, the other developers told me that they were tired of trying to teach her, because she didn’t seem to “get it.” They wanted to invoke one of the ancient rituals of old-style agile development, and “vote her off the island.”
I had a minority opinion.
Remember those circular debates I mentioned? Remember how they tended to bog the team down and waste time? Well, guess who broke them up and got things moving again?
She had a knack for empathizing with different people and acknowledging the value of different viewpoints. Time and time again, she got the opinionated developers feeling good about each other and accepting one another’s ideas. She kept the team moving.
Sometimes, having a person like that on board is more important than anyone’s individual technical skills.