Working in an agile environment can be a productive and enjoyable experience, however these experiences always come with challenges.
The main challenge that is seen in agile teams in 2010 is surely how to make the process successful with distributed teams. I have been part of Scrum teams with team members in 2 locations in different timezones and this in itself proves to be challenging. It means any meetings need to be organised in the half day where there is an overlap. This means that for the daily meetings, one team will be halfway through their day when the team meets, whereas the other part of the team will be having the meeting first thing in the morning. This isn’t necessarily a problem, it just means that the team whos day is halfway through have to work on the principle of their working day being divided in two.
Communications can sometimes be an issue between the two teams, the main reason being that face-to-face interaction gives the extra dimension of feedback in there being facial expressions aswell as conversation. Speaking to someone purely over the phone, there is always that concern that they may not be happy with something or they don’t understand part of what is being described. It doesn’t help when the phone line isn’t of perfect quality meaning that words get mis-heard between teams and flow of conversations can be lost. It can also be difficult when there are technical discussions going on in the meeting where people are chipping in as they feel fit, the team on the other end of the phone can sometimes be forgotten and they will sit there waiting for a chance to speak. Issues of talking too far from the microphone can cause for discussions to be repeated for the sake of the remote team.
Something we must all be aware of would be the cultural differences between teams in different locations, there may be mannerisms in one locale that everyone understands but across the world, it may have a completely different meaning. There is also the issue of understanding, some cultures may not feel they can say ‘I do not understand, please explain’ and will instead simply accept what is said. This is where the ability to be able to break discussion down into simpler language can be of huge benefit to everyone. If there is the ability to use shared resources to help aid discussion, these would be useful to use at every opportunity.
Another issue that may cause a small amount of problems would be knowing all the shared network resources that the other team can access, it may not be a big deal but it may hold up a process if the teams need to know where they can share files that wouldn’t be good to send via email.
It’s also important that both teams are following the same software engineering processes and are disciplined about it, if one team is disciplined about following a process but the other team isn’t there will be disputes and expectations won’t be met which will then cause issues later on when the end of the current iteration doesn’t include all the desired elements. In this respect, it is important that any practices are laid out at the start and that all team members regardless of their location are fully familiar with them.
These are just some of the issues that can cause problems for Agile/Scrum teams which are not all on the same location. It is important to try and find ways to overcome these issues and work harmoniously as a team. For this to happen, all team members have to be willing to make sacrifices in the way they conduct themselves within the team. Everyone should be open with any issues they have and then the team can work together to resolve them.