
Some estimates show that up to 80% of software development is done in some sort of distributed environment. Managing a distributed team can be challenging but rewarding if you find what processes work for you and your team.
Titas Norkūnas, a Technical Lead at Assembla, spoke at Agile 2011 in Norway on “Distributed Agile: 5 Dos and 5 Don’ts for Global Team Management.” Titas works with a development team that spans over 15 countries. Below is the video from Titas's presentation and the annotated summary.
Watch the Video:
Titas provided some notes from his open space sessions that show how important this material is.
- Mostly Project Managers attended these [sessions on distributed teams].
- Project Managers did not like my presentation. I think it is because I argued skipping Project Managers, skipping estimates, not doing video/phone conversations. I got a much better response from technical people - architects, consultants, even a phd researcher.
- Every Project Manager insists to use video conferencing software.
- All people in an open space, except for me and one other guy, thought that their distributed teams were not successful (about 20 people in a "show of hands").
There is clearly a correlation between old-style project management, complete with video conference calls, and mis-handling distributed teams. Many project managers don’t notice this themselves.
Titas's final conclusion? - “A lot of people want to outsource or use distributed teams, but they don't know how.“
Summary
5 Dos:
1. Share a Continuous or Daily Build:
Have a continuous or daily build where everybody on the team shares their code instead of working from a hodgepodge of commits and branches. This provides a more up-to-date codebase for team members to checkout and a stable running version of the software.
A common obstacle of implementing this is when team members do not commit often. Below are some ways to help prevent this problem:
- Simply ask team members to commit more often and define some guidelines.
- Break complex tasks into smaller, more manageable task that take less time to develop.
- Provide rapid feedback when code changes are available to reduce downtime.
2. Embrace Decision-Making:
Communication will be slower and more difficult in a distributed team, especially when spread across multiple distant time zones. Give developers leeway to make some decisions on their own. This can translate into getting something decent today instead of being delayed. If you don’t get exactly what you want, you can always tweak it, but at least you made progress without downtime.
Writing really good specifications reduces the need to make independent decisions, but writing really good specifications takes time and is easier said than done, so don’t discourage decision-making during certain circumstances.
3. Keep Everything Organized in Tickets:
A lot of conversations will happen via email or through IM services like Skype or Google Chat. These conversations typically result in a task or tasks that should be documented before they are forgotten. It is important to use a web-based task/issue tracker where team member can view, create, and edit tickets.
Use milestones to plan sprints and iterations. Did you conversation lead to a cool improvement that is not a top priority? Put it into the backlog so you can fit it into a later release.
4. Communicate Asynchronously:
Skip the unnecessary teleconferencing and video chats by having developers fill out daily stand up reports, which is a simple form that addresses what I have done, what I will do, and any needs or roadblocks. Stand up repots allow Technical Leads to quickly check to see if the team is on the same page, are their priorities ok, and if there is anything that needs to be addressed.
5. Subscribe to Team Activity:
Just like you check Facebook to see what your friends are up to, you should regularly check your project’s stream to see project activity. Keep an eye out for irregularities such as unusually low activity or lack of involvement from certain team members.
5 Don’ts:
1. Skip Interviews (and do Trials):
Look for qualified applicants with relevant experience and give them trial task to complete during a paid trial period. At Assembla, we do two week paid trials where we can evaluate a set of candidates based on their performance to see if we are getting the value for the money.
2. Skip Non-Technical Project Managers
Non-technical Project Managers can slow down development progress. Train Technical Leads which are Project Managers that are also developers. Check out our blog pot on “Tech Leads will Rule the World” to learn more about Technical Leads.
3. Skip Estimates
This doesn’t apply to everyone but if you have a good roadmap and prioritize tasks, estimates will just slow you down. In this case, estimates will not change the order in which you do things so why spend the time working on estimate when you can just work from high priority tasks in queue.
4. Skip Traveling
There is no need for face-to-face communication so why spend the money and time to travel? Traveling can be good for team building but not for productivity.
5. Don’t Have Rules
Given certain circumstances, rules occasionally need to broken so instead, provides guidelines that allow team members to make certain decisions based on the outcome, not the rule.