Michael Feathers of ObjectMentor led a three-hour workshop, “Coaching Software Development Teams”.
If you’re after a quick fix, jump straight to Michael’s patterns below.
The Nature of Coaching
Discussion prompted by definition of coaching as causing change. Coaching in the business community is more about fostering change, like counselling – don’t have to have the business knowledge. In IT, tends to be more about leading, provoking on design, etc. Is the coach part of team? In XP, yes; a bit like a sport coach, usually a player as well.
Coaching and Human Behaviour/Psychology
Coaching must build on model of human behaviour. “Agile about people, but
people and human behaviour not often talked about”. Also, we rarely talk about
whether people want to be working – many people treat it as “just a job”, don’t
want to devote too much mental effort. Age and lifestyle effects too.
Stereotyping and pigeonholing people was a major theme of this workshop.
Important to avoid stereotyping, try understanding reasons for behaviour.
Two problems with stereotyping:
* Warp the team’s perspective on someone – an individual becomes “the guy who
can’t write test code”, etc.
* Can be a self-fulfilling prophecy…people will see themselves according to
the label and act accordingly. [Cognitive dissonance?]
Role-playing stereotypes exercise.
Being aware of emotions
Some research indicates men tend to be less capable of reading emotions, and
this is probably even more true for software developers. Due to selection bias
or reinforcement or both? Don’t know. But if that’s the case for a coach, then
the coach needs to be aware of blind spots.
Seeing the group as an individual
Groups tend to act as a whole. Every class has its own personality. So it can
be interesting to anthropomorphise the entire team as an individual, although Michael admits that this is a bit funky, not something that will resonate with everyone. A participant
mentioned that when people leave, others ends up filling the same role. Which
is interesting if true, because certain ways of doing things are systemic. This
indicates firing someone for not being part of the team may not solve a
problem because someone else might solve the problem.
Listed motivations for working in software – about 15 of them (achievement,
money, learning, etc.)
How can such a model be used?
Understand impact on interventions. Point about agile is how it topples
some of those, e.g. people’s sense of prestige and status can be destroyed
if they feel like they’re just another coder again.
Hiring strategies. Michael observed that greater companies devote much
greater care to hiring people, to ensure they fit in. They don’t just
focus on the technical side, look more at collaboration skills. A
participant noted this can be a problem for companies in growth phase –
companies hiring too quickly often end up with different types of people.
Learning and Tension
See Ward’s Cunningham’s “Episodes” pattern language (especially the graph, apparently not online). Tension can be a tool. Ideally, let people learn the lesson themselves by resolving tension. So creating that tension, in the right way, can be good.
Coaches should learn to feel the tension in the room, helps them find the right level.
Ethical Questions on Coaching
Should manipulations be conducted? Above board? One view, to paraphrase Kent
Beck, is that manipulation is when you wouldn't get the same effect if you
were upfront about the intervention. Or is there an issue about the coach
seeing themselves as more experienced, qualified, etc. Should they use that
knowledge to encourage someone to do something they wouldn't normally do,
because they see the genuine benefit? And the person may see the benefit in
hindsight, but not upfront. (Here I'm thinking the Karate Kid snatching flies
with chopsticks.) Ultimately, the distinction may come down to respect: a
care for the individuals and the outcome.
One view: Sometimes, it’s simply not possible to explain why we’re doing everything in advance. People can only learn some things by doing.
Michael presented these patterns towards the end. Note: I missed a couple of these patterns!
**Go Sideways:** Look at another problem completely. Usually people are still
working on it in their background.
**Go Home:** Just stop working on it - go get some water, etc. We all have
experiences of the answer coming to us in the shower, while jogging, etc. So
can be good if team members are able to suggest taking
**Antennae Up:** Develop a sensitivity for what's happening. Focusing on the
human side. ** Gerald Weinberg: when called in for what's perceived as a technical
problem, it's usually a people problem. Participant: Can be useful to
keep a diary to order your thoughts, and even better to discuss it with
others. Writing is good for looking at things analytically.
**Pair Coaching:** Discuss with someone who knows the team. Can check
observations before acting.
**Ask the Room:** Encourage team to think hard when they feel like they need
to break a rule that's been adopted.
**Active Listening:** With minimal judgment. When it's not recognised,
*resistance* has been identified. Participants mentioned the virtues of
paraphrasing what's been said, and this can overcome listening based on the
stereotype. Also, it's about checking your own understanding. Sometimes,
coaches can have a great technical theory in the head, but the developer has
a real code that doesn't fit the textbook.
**Advance/Retreat:** Judiciously retreating from helping someone with a
problem and helping them take control of the problem themselves;
**Tending 'Pat':** If this team was a person, what would the person be right
now? Is Pat tired? Scared, relaxed?
**Personal Encouragement/Discouragement:** Most coaching is one-on-one.
"Know the person, know the feeling, feel it first, address." Will often be
wrong, but better preparation. Someone also mentioned getting beyond the
**The 'Flounce':** Identifying the elephant in the room (i.e. a big issue
no-one wants to talk about). Pointed questions, soliciting comments, ending
with silence ... and suddenly a stark, emotional, assessment of the problem.
Then "leave" the conversation (probably stay there, but quieten down and
withdraw in body language, etc.) Again, quite idiosyncratic (Used by a
former colleague of Michael. Sounds very dramatic!) The intention is to open
the floodgates and let people discuss it openly among themselves.
**Team Surgery:** Perform surgery on 'Pat'. Can be difficult due to politics,
etc. Adding a person forces the greatest change.
**Push in the Water:** Sometimes have to ask people to confront their fears
and go beyond their limits.
**Self-Disintermediation:** Works well with Tension-Release. Encourage
people to help each other rather than go to the leader. Someone noted it's
difficult for consultants, because no-one wants to pay them anymore. (Maybe
that's why it doesn't happen so often - people like to see big
**Cheerleading:** Not necessarily overt, but identifying what's gone well,
which means relating back to goals.
**Cultivate Respect:** Sometimes people develop intimacy by complaining
about others. Coach's reaction makes a big difference.