16 July 2011

Working with a distributed team

I'm currently working as a technical lead on project with a distributed team. It is not the first time I'm working with a distributed team, but it is a the first time the team is so big. We currently have people working in five cities across three countries :

  • Labin, Croatia
  • Pula, Croatia
  • Slavonski brod, Croatia
  • Beograd, Serbia
  • Skoplje, Macedonia
You'd think it would be hard to work with such a distributed team, which totals up to ten involved people but it is not. 
I really takes a lot of communication, some organization and proper tools. The two basic tools are :
  • Skype
  • Teamveiwer
There are two types of skype communication : written and verbal. The written communication is for large meetings and team notices. We have created a team chat where all team members can share information and where all the big meetings occur. 
The most important meeting is the daily standup which is done exclusively in written form and can be done in under ten minutes. The trick is for each participant to write her daily report five minutes before the meeting (which is at 9.00 o'clock each day). The report is written using this format:

- #1 thing done yesterday
- #2 thing done yesterday
- #3 thing done yesterday

- #1 thing will do today
- #2 thing will do today
- #3 thing will do today

- issue #1
- issue #2

This enables us to track the project progress, to catch early important issues and problems. The team stand-up is usually followed by an hour and a half of one on one vocal meetings where those daily issues are addressed and solved or kicked up the ladder.
Team viewer is another great tool, it works both on windows and linux (which is great since we have both in our team) and enables one or more people to virtually sit at the same machine and work which is great for doing problem solving, peer reviews and distributed pair programming.
One great tool I discovered is the Architectual memo or note, which is a sketch with UML diagrams and some text describing a architectural solution of a part of the application (Grid system, Form system, auto-complete system etc). It takes me about and hour or two to write once I get the idea right and then I can send it to a team mate discuss it with her and then watch it being built.