Andrew Begel Human Interactions in Programming Microsoft Research CHASE Workshop 2008, Leipzig, Germany

advertisement
Andrew Begel
Human Interactions in Programming
Microsoft Research
CHASE Workshop 2008, Leipzig, Germany
How does coordination occur between
software teams?
What are the pain points?
How does distributed development affect
coordination?
Once coordination problems are identified,
what next?
How can you fix them?
How do you adapt solutions to fit the context?
Qualitative, interview-based study of a web
services team at Microsoft
32 interviews, 26 people
Redmond, WA, USA (20),
Boston, MA, USA (3),
Hyderabad, India (3)
Conducted study with Christopher Poile,
Nachi Naggapan and Lucas Layman
Communication
“We
miss
outanswer
on a other
lot
of priorities
those
would
appreciate
aemail…
week-before
“I
know
they
have
in
“He
doesn’t
If Iwater
have
cooler
conversations…
what
we
end
update
to now
if say…
they’ll
the
their
job…
They
I make
will
give
questions,
I’ll have
to ping
him
ayou
up
doing
sending
an
email,
and
date…
or
where
they
are.”
time
tomorrow…
So
I’m
like,
why
couple
ofis
times
to
get
an
answer.”
the
turnaround
is so15
long
for that.
don’t
you take your
minutes
right
Distribution
Capacity
now and save me an entire day?”
Cooperation
Unhelpful Behaviors
Miscommunication
Mistrust
Misunderstanding
Dysfunction
Unmet expectations
Differing priorities
Unclear ownership
Non-transparent decisionmaking
Missing information
Helpful Behaviors
Prioritizes communication
Avoids escalation
Listens
Aware of problems
Reliable, on-time delivery
Synchronizes schedules
Gives clear instructions
Gives feedback
Smart, respectful
Offers status updates
Informal meetings happen in hallways
Try not to make decisions in informal
meetings.
Send status updates electronically.
Invite non-local team members to discuss
decisions.
Distributed teams feel remote, due to
location, time, and lack of face-to-face
contact.
Get rid of distributed teams.
Arrange face-to-face visits between team
locations.
Hold meetings at times when workday
overlaps.
The lack of information makes people
anxious.
Hold frequent status meetings with
dependencies and post status electronically.
Align priorities and schedules with
dependents.
It is easy to see the problems.
The studied team appreciates your data to
'confirm' their own belief in the problems.
But, it is deceptively easy to come up with
solutions.
Practical, usable changes require buy-in
and adaptation from team management.
We need more evidence of solution
effectiveness in practice.
How do you monitor changes to software
development process? Especially in
distributed teams, far from researchers?
Not easy to adapt solution designs to field
situations. Longitudinal evaluation of
usefulness can take time and effort.
What lessons can be learned from success
of Mylyn, Jazz, CoCoMo, Wikis, Agile,
CMM?
Download