Showing posts with label distributed scrum. Show all posts
Showing posts with label distributed scrum. Show all posts

Sunday, January 9, 2011

Top ten tips for distributed scrum team teleconferences

Distributed software teams using scrum can spend a fair bit of time on the telephone. Even if you only talk for just sprint planning, daily stand-ups, reviews and retrospectives that could easily be 6+ hours in a two week sprint.

When the team is spread around geographically you inevitably have a mix of people: some feeling tired because it’s early, some feeling tired because it’s late and always some annoying peppy ones because it’s the middle of their morning and they’ve had 7 coffees so far.

Add in cultural differences and that English (or whatever your primary language for communicating is) might not be someone’s native tongue and you are sometimes going to have challenges.

Here then, after acting as scrum master for several months on a distributed team with people in six different locations, three different time zones and two different countries, are my top ten tips to help get past those inevitable awkward silences:

1. Use a lot of questions.
Sometimes it’s not clear where to go next. If you can think of lots of different ways to frame questions, that can help. A question that wasn’t clear posed one way may be more accessible put in different terms.

2. Ask specific people for their view.
Asking, “Hey Bob, what are your thoughts on this?” will usually trigger one of two things: either Bob is going to tell you he doesn’t really understand what’s going on, or he shares the thoughts he was sitting on. Sometimes you might do this several times in a row. So after Bob you could be following up with, “And what about you Sally?”

3. Ask the quiet people.
This is a variation on #2. When conversation is flowing well sometimes the quieter members of a team can be left without a chance to contribute. When conversation isn’t flowing at all it’s often tempting to prod the more vocal members of the team. Instead of starting with the “easy” targets seek out other team members to encourage their contribution.

4. Volunteer your own opinion.
Just because the Scrum Master is meant to be a facilitator doesn’t mean he or she can’t have a useful opinion. Myself I can often hardly keep my mouth shut. I don’t think it’s a bad thing to throw out what you see, what you think should be done and solicit feedback on that.

5. Volunteer a ridiculous opinion.
This may be a bit Machiavellian for some, but I confess I use it myself: “So how about we use to solve ?” If it’s daft enough, somebody will usually be unable to resist telling you why that won’t work…which is the perfect segue into “Well what could we do instead?”

6. Use some humor.
You don’t need to be a stand up comedian and you don’t need to aim for tears streaming down people’s faces and belly laughs. But a little comedy can help lighten the mood and reenergize a meeting. Self-deprecating humor is a good way to go. Especially easy when you’ve got a ton of things like me to laugh at about yourself.

7. Take a break.
Long meetings need breaks. When you’re all sat in a conference room together nobody thinks twice about nipping out to fetch a cup of water. Everyone else can obviously see who’s gone and carry on accordingly or wait for their return if it’s crucial. But when you’re “blind” at the end of a phone I find more structure helps. I either build in a 10-15 minute break midway through a longer meeting or, if I sense things are flagging, ask if people would like to stop for a bit.

8. Switch topics.
There is, as they say, no point flogging a dead horse. If you’re making no headway as team with something perhaps there’s some other useful topic you can pursue together. Something more interesting or less ambiguous than what you were struggling with.

9. Do a mini-retrospective.
You don’t have to save retrospectives for the end of a sprint. You can retrospect on a single meeting or even midway through: “Is this working OK? Should we go about this differently?”

10. Note when people are “done.”
Now I don’t mean “done-done” in the definition of done sense. I mean worn out and you’re not going to get anywhere. Sometimes it’s just time to stop. There’s always another day.

Do you have any more tips for keeping teleconference meetings for distributed teams going? If so please share in the comments.

Wednesday, December 15, 2010

Fully distributed Scrum

(Or, "How we pitched the idea of letting everyone on our team work from home and got the thumbs up")


Back at the beginning of November I wrote about my recent experience as the scrum master on a highly distributed team.

For those that didn’t read (or don’t remember) that post, a key thing to know is that the team is comprised of several people who work from home. I ended that post (partly tongue in cheek I admit) saying how it would be interesting to take those team members that were still office based and have them work from home too. Well, starting early 2011 we’re going to give it a try!

The original suggestion was first seriously discussed in a team retrospective. On the premise that it’s easier to offer an apology than ask permission I sent the appropriate managers in our group an email indicating that the team had decided we were all going to work from home next sprint. That didn’t fly. Which isn’t surprising (although it was worth a try, or at least entertaining, no?) and a more considered proposal was requested.

Myself and the team duly worked on preparing a properly coherent argument, supporting data, benefits we expected, a concrete description of how we would run this little experiment and details on how we would measure the success (or otherwise).

I know there must be many other teams trying to reconcile the demands of their managers to “do agile” and also “leverage offshore resources” so I wanted to share details of the proposal that helped convince ours that trying the rather radical proposal of sending everyone in the office home might help.

What are we trying to do?
Before we go anywhere further, it’s worth properly answering this question. Lest there be any doubt, this isn’t about folks wanting to get up late, watch daytime TV and get their laundry on during teleconferences.

This is an authentic endeavor to make our team work better. You can argue till you’re blue in the face about the benefits of team co-location, or the silliness of splitting teams into onshore and offshore components when you’re trying to simultaneously implement Scrum, but the fact remains that many, many organizations are still going to insist you can’t move the furniture and you have to structure teams this way.

Therefore, if we have to live with this, we’re going to make it work as best we can.

At the heart of much agile advice is an emphasis on communication. The trouble is, with team members scattered across different timezones and locations, communication gets clumped into localized groups. People on the edges miss out. By putting everyone on an equal footing (working from home) everything becomes more equitable and information sharing is normalized allowing for a better functioning team. At least, that’s what we believe, and what we’re trying to do is prove that out.
“Craft a philosophy and live it.” – Umair Haque, bubblegeneration.com

How did we approach this?
Our presentation covered five key areas:
  • Why did we want to try this idea of everybody on the team working from home?
  • A list of benefits, beyond simply the team working ‘better’ that we anticipated
  • A description of how we wanted to run the experiment
  • How we intended to evaluate the outcomes
  • The support we needed to get this going
I’ve already talked about the why, so let’s look at the others:

Anticipated benefits
Besides the hoped for improved communication, there are some other interesting and very tangible benefits we anticipate.

As I write this blog post the time in Colorado is 2.54pm. Meanwhile, in Hyderabad it’s 3.24am the next day. We have quite the time difference between some of our team members. Before Daylight Savings Time (DST) came to an end in the US this year it was just possible (if not entirely pleasant for everyone) to have a daily scrum via phone with all team members present. Now however, since Indian Standard Time doesn’t adjust, the earliest we can hold our daily scrums is just unreasonably late for our colleague there to attend every day. Although they do stay late to attend some of the sprint planning meetings and sprint reviews they’ve been missing a lot, including retrospectives.

One very worthwhile thing we can do operating as a team that works from home is create a more humane work/life balance for people. This will pay particular dividends for our colleagues in Hyderabad, allowing them to work the majority of their days at normal local business hours. They can they stop just early enough and save the remainder for meetings in the evening. Although nobody particularly wants to have to regularly work super early or super late hours, this is a much better arrangement than having to be still stuck in an office at 9pm at night.

In addition, there are another couple of benefits we see. One is immediately realizable, the other perhaps a longer term proposition. They are reduced environmental impact through less travel and reduced office space needs.

An article in Forbes magazine in 2008 indicates there were as many as 17 million software developers in the world at that time.

More than 2 million of them are in India and the US is approaching 3 million.

Most if not all of these people spend time in cars or other transport every day commuting to and from work.

Indian emissions standards for motor vehicles lag about 5 years behind Europe, and in the US of course the majority of us love our gas-guzzling SUVs.

We may not be able to keep millions of these people off the road, but by allowing those that work in our team to do their jobs from home we can have a small but positive environmental impact. Who knows, maybe this innovative idea can spread.

As for the office space thing, if you can establish a team working at home, with perhaps continued but minimal office visits as needed then do you really need such large premises? With enough teams operating this way you could save on what you lease, on what you heat and so forth.

Running the experiment
Being a Scrum team convinced of the benefits of incremental and iterative development, we naturally intend to use the same approach to this experiment. Starting early 2011 we will try a sprint with everyone working from home.

At the end of that sprint, a large part of the retrospective will obviously explore how things worked. We’ll be asking ourselves questions like:
  • How well did that work?
  • What work well and what would we like to change?
  • Can we fix the things that didn’t work well?
If we think it was worthwhile and we can improve those aspects that didn’t go too well then we’ll repeat another sprint with any changes we need. With this approach we can pretty quickly home in on how to do this well, or equally quickly conclude that our original arrangement with two-thirds of the team staying office based was better.

Evaluating the outcomes
Many years ago I used to quite like the idea of capturing data you could analyze to objectively evaluate things. Peter Drucker is renowned for saying “What gets measured gets managed.”

I’ve since learned that if you measure the wrong things in the wrong ways then it’s more a case of “what gets measured gets gamed.” Regrettably I’m not renowned for saying that. Maybe one day.

However, we do need some way to determine how our experiment is going.

Agile thinking provides us with a few simple tools that we can employ: velocity, burn-up charts and cumulative flow spring most readily to mind. To some extent though there is the possibility that these could indeed be gamed, or unconsciously given treatment to provide the desired out come.

So besides those, we will also be looking at some other areas:

  • PO and stakeholder satisfaction. From their point of view are things better, worse or pretty much the same?
  • Team satisfaction. Do we feel that things are better, worse or pretty much the same?
  • If the experiment pans out well enough that we conduct a whole release with people working at home then we can utilize SLIM Metrics to observe productivity benefits.

Required support
Of course my team is not an island unto itself; we needed support to undertake this. First and foremost we needed the support of our management. Luckily the director of our group is open to innovative ideas and. After our presentation to him and a series of questions that the team was able to answer was willing to permit this experiment.

In more material terms we pretty much had all that we needed. People have broadband connectivity and telephones at home. They have quality spaces to work in. We do need to configure a few machines for remote access, and a few people needed new laptops. Other than that though, we’re ready to go.

In conclusion
The whole team is excited to try this. I think we’re onto something. I’m eager to see what our actual experience is like. Will things be better or just different? Next year, after we’ve run this experiment for a bit I’ll report back on how things have turned out.

Wednesday, November 3, 2010

Highly Distributed Scrum

I'm just about to finish sprint four as the Scrum Master for a team that has a higher than average number of distributed members. And I don’t just mean that we got two offices involved, one in the US and one in Europe or India. We have three software engineers spread around the Denver Metro area, all working from their individual homes. Then we have our Product Owner in Billerica, MA. Alongside her are a couple of QA engineers. Then we have some folks over in Hyderabad, India: another software engineer and a couple more QA engineers. Finally we have me, working out of my home in the Rocky Mountains above Denver, CO. That’s six locations for just ten team members.

Add in some interested stakeholders in Berlin alongside those in the US and India and you can see what we’re up against. I’m sure we’re not alone in such a setup, but I suspect that having a number of people, including the scrum master, “decentralized” (my organization’s term for those of us that work permanently from our homes) is less common than a team made of people from two or three offices.

It’s been a fairly interesting experience, and not in the “OMG-what-a-total-disaster-I-have-a-dozen-more-horror-stories-to-take-around-with-me-warning-people-about-the-folly-of-distributed-scrum” sense.

One of the interesting things about this experience was how incredibly smoothly it went. I may just be one of the luckiest scrum masters in the world. I can’t claim superior scrum mastery as the root of this easy transition. The team was a well-established, mature team that had been working well together for a long time. The relationships were strong and team members trusted and respected one another. They had already introduced many agile practices way ahead of other groups within the organization. It seems clear to me that this helped immeasurably as we layered scrum on top of what they were already practicing. The other contributor to this, which I discovered serendipitously earlier this week on Twitter is explained in this excellent blog post by Bob McWhirter. In it, he makes the distinction between simply being a remote worker, and being a remote worker in a distributed team. In a truly distributed team there isn’t a single center of gravity where a ton of conversations occur that remote workers aren’t privy to. Due to people being spread out, a distributed team necessarily uses communication techniques that support remote workers, such as mailing lists, IRC etc.

I think the most interesting thing though is that we haven’t really seemed to need any special dispensations for what is a fairly unusual team configuration. No tweaks to scrum; no special tools, tricks, techniques etc. I’m not saying those won’t necessarily come as the team reflects more on areas for improvement during future retrospectives, just that we’ve been able to get going just by sticking to the basic principles. Our only accommodation has been for the people in Colorado to start a little early and the people in India to finish a little late (it’s a fairly brutal time zone difference).

So how are we doing it? Well, here are the basics:
  • We use Rally as our tool for agile project management, so that’s where our product and sprint backlogs are.
  • We use a wiki to organize a lot of other material. It all starts from a team home page which links to all manner of useful things: our definition of done, agreement on how we document stories, the build server, source code repository, released software etc.
  • We have a build server. This team’s current product is a rather old piece of legacy software that, presently, doesn’t lend itself to CI due to the lengthy build time. But it does still build every night.
  • We have used http://planningpoker.com to do distributed, real time story estimation in points. It’s not quite got the natural feel and immediacy I would like, but it’s not half bad at all.
  • We have daily “stand-ups” held in the morning (US time) which is evening for team members in India.
  • Sprint planning, review and retrospective meetings are, similarly, timed for US AM and India PM.
  • We have a phpBB discussion forum for the team set up…we also have an email distribution list that includes all team members. Interestingly the distro list gets all the action. I’m not sure if that’s because people are less familiar with using the discussion forum medium. I think it might be because there’s a greater immediacy to email based communication.
Interestingly the team has, through retrospectives, identified all the usual early issues I’ve seen other teams come up with during scrum adoption:
  • Big stories are bad
  • Spread out completion of stories during sprint
  • Recognize and raise impediments ASAP
  • Need the right people at the sprint review to make it truly valuable
  • Be clear that we have commitment from people outside the team for stories that depend on them for success
  • We have technical debt and we need to pay it down
We have, of course, faced some challenges; the two key examples being:
  1. Meeting our commitments, i.e. getting stories “done done” by end of sprint. After a couple sprints we realized we would be much better off with smaller stories. Better to slip one small story than fail to finish two large ones.
  2. English is a second language for a number of team members. With more spontaneous verbal and (due to our distributed nature) written communication there has, understandably, been moments of confusion. This isn’t quick to fix, but with more and more practice things can surely only get better.
All things considered, I’m very pleased to be part of what’s shaping up to be a really great scrum team.

Now, I’ve argued hard against distributed scrum before. That piece was mostly borne out of frustration, seeing teams of two halves. I still stand by the views expressed there. Having your whole team co-located alongside your customer still seems, by my experience, the preferable situation. The really interesting lesson for me here though was how, with a truly distributed team, Scrum can be made to work better than I anticipated. Moreover, it seems that by adding more team members at the office based locations we might weaken, not strengthen, our existing team. Perhaps we would do better to let those who are currently office based work from home too. With the right people, it seems that perhaps a fully distributed scrum team could trump a team split between two offices. I remain skeptical that they could better a fully co-located team. That said, I wouldn’t mind the chance to find out. It’d be a fascinating experiment.