views:

302

answers:

8

A group of us are starting a new project and are working in a distributed fashion. Our intention is to use agile development methodologies and in particular Extreme Programming (XP). This is intended as a learning experience, but while some of us have experience with XP in a "traditional" team none of us has experience doing XP with a remote group. Both Agile Development in a Distributed Team and Distributed Development Team - Tools Needed offer some great suggestions but are not specific to XP.

Please elaborate on methodologies and tools used to stay true to the spirit of XP while working remotely. Specifically, what technologies were employed for story cards and peer programming.

Edited to include technology stack per Felix's recomendation

We are writing a Ruby on Rails on Windows Machines. We are interested in what tools can be used to adapt the primary practices of Extreme Programming for a remote team.

+2  A: 

Design Pattern - Model View Controller (MVC) or Page Front Controller for providing thin client applications.(possibly ASp.NET MVC Framework 1.0)

Methodology - Agile Along with TDD(Test Driven Development). as ur working on remotely.

Data Flow - Follow Repository pattern and dependency injection (by [Martin]) to facilitate loose coupling and unit testing

Tools

for testing - NUNIT 2.0

for mocking -rhino mocks, moq framework.

for code optmization and refactoring - resharper 4.0

for Object-Relation Mapping - N hibernate.

for checking Views(in MVC) - Use Firebug in FF and Fiddler in IE.

for Constructing Bussiness objects (from Data Objects) - AutoMapper

vijaysylvester
+1  A: 

Mingle was a suggested tool for handling story cards in a virtual way where I work that was evaluated though not used as our process is still getting refined. Just an idea for you to explore and see if that works or not for you.

Twitter is useful for doing broadcast communications so developers can know who is doing what at times without having to have everyone within earshot.

CruiseControl.net for continuous-integration so the team can know if someone breaks the build.

JB King
+1  A: 

For story cards you could try something like Google Docs which lets you share changes to documents in real time.

For peer programming you can do reasonably well with a desktop sharing program like NetMeeting, VNC, or OnCommand plus a hands free teleconference (any participants in shared office space should have a good headset, not a speakerphone). You may feel too limited by the effective desktop area being shared, and in who can be the active editor (ie, the remote participant may not have a high enough refresh rate to edit).

Jim Ferrans
+1  A: 

For Keeping In Touch:
We do a 9am Scrum over Skype where everyone has 2 minutes to answer 3 questions:

  1. What did you get done since yesterday's call?
  2. What will you get done before tomorrow's call?
  3. Is anything blocking you or slowing you down?

Sometimes we throw in a 4th question: Any cool news to share?

For keeping in touch throughout the day, a lot of people swear by 37Signals' "campfire", though I personally use "Present.ly", which is a kind of twitter-for-teams.

For Peer Programming:
SubEthaEdit for Mac will let you co-develop in real-time, as will Mozilla Labs' new "Bespin" project. Both of these are glorified text editors, though, not IDEs.

You might also try the free "DimDim.com" screen sharing & VOIP service, or Skype's free screen sharing.

lo_fye
+1  A: 

We really like yammer.com it is a company private sort of twitter, with some extra additions. Quite handy, also keeps a full record.

Felix Ogg
+1 for Yammer..
blu
edited per your recommendation.
ahsteele
+1  A: 

We use SCRUM for team system and love it. We tried many tools, but pitch upon these:

Basecamp to plan a project (with help of todo-lists and milestones).

To communicate with other co-workers and to do a daily scrum (stand-up) we use Jaconda. It's really simple, 'cause you don't need anything except the IM.

For the longest time we used CruiseControl.rb as a continuous-integration system, but have recently switched to Integrity, which is simpler and nicer.

Anton Mironov
A: 

Please take a look at Assembla features.

You will get a lot of more features: svn, git, chat, wiki, messages, scrum, tickets with drag&drop agile planner.

Assembla is perfect for agile distributed development.

VitalieL
+2  A: 

I worked on a distributed extreme programming project. It had developers in Seattle, Bournemouth UK and Singapore sharing a common code base.

The project worked very well.

Here's a report of the project:

http://www.keithbraithwaite.demon.co.uk/professional/papers/2005/xp/distributed%5Fextreme%5Fprogramming.pdf

This paper describes how we collaborated and the kinds of tools and techniques we used:

http://www.keithbraithwaite.demon.co.uk/professional/papers/2005/europlop/patterns%5Fdistributed%5Fxp.pdf

Part of this work was done in Java and part in Ruby on Rails.

cartoonfox