21

What are some strategies, methodologies and best-practices for managing a distributed team?

  • What can be done to encourage and enforce communication between the various team members?

  • Is it possible to adapt/implement existing agile development methodologies over a distributed team?

Related but not identical:

1

3 Answers 3

12

Andrew Kazyrevich's presentation is an excellent guide to agile development in distributed development teams.

The main suggestions are:

  • Group chats & frequent calls
  • Desktop sharing, pair programming
  • Continuous integration
  • Unit tests
  • Work items tracking (TFS, JIRA etc)
  • Short iterations
  • Daily sync between teams through standups etc
  • Travelling
  • Organising teams by functionality
0
9

Please read this excellent article from Martin Fowler: Using an Agile Software Process with Offshore Development.

For the last four years ThoughtWorks has operated a lab in Bangalore India to support our software development projects in North America and Europe. Traditional approaches to offshore development are based on plan-driven methodologies, but we are very firmly in the agile camp. Here I discuss our experiences and lessons learned in doing offshore agile development. So far we've discovered that we can make it work, although the benefits are still open to debate.

The article is very old, but nothing changed so such since that time.

  • It presents a fundamental introduction to setting up distributed team communication:

    Use Continuous Integration to Avoid Integration Headaches
    Have Each Site Send Ambassadors to the Other Sites
    Use Contact Visits to build trust
    Don't Underestimate the Culture Change
    Use wikis to contain common information
    Use Test Scripts to Help Understand the Requirements
    Use Regular Builds to Get Feedback on Functionality
    Use Regular Short Status Meetings
    Use Short Iterations
    Use an Iteration Planning Meeting that's Tailored for Remote Sites
    When Moving a Code Base, Bug Fixing Makes a Good Start
    Separate teams by functionality not activity
    Expect to need more documents.
    Get multiple communication modes working early</li>
    

Even if you decide to skip some of the tips and tricks mentioned there, it could be really helpful as a comprehensive checklist - just to make sure nothing important was missed.

3

The guys at Stack Overflow are a great example of a distributed company and Jeff Atwood offers some great advice - http://www.codinghorror.com/blog/2010/05/on-working-remotely.html

On the question regarding implementing existing agile development methodologies over a distributed team - I consider distributed development as a development approach that attempts to leverage technological advances in internet connectivity and better communication tools to try and minimise the disconnect introduced by working remotely in software teams.

Distributed development places emphasis on communication and interaction between all the members in the virtual team. The idea is to reduce the feeling that we are working in different physical spaces and that everyone is off working on some discrete task on their own. This kind of thinking is in-line with the agile philosophy which emphasizes individuals and interactions over processes and tools.

I have written a blog post regarding this - http://technikhil.wordpress.com/2012/02/20/distributed-development/

Not the answer you're looking for? Browse other questions tagged or ask your own question.