The Agile model recommends having colocated project teams, which, in most cases, becomes impossible to establish and sustain. Most projects are geographically distributed at multiple locations and across different time zones.
Below are the main reasons for maintaining a distributed project team, working from different locations:
- In the case of customer and servicing organizations that are not in the same location, most will follow onshore-offshore-nearshore models for cost effectiveness, resource availability, and competency requirements.
- Larger project teams in the same company might have to work from different buildings, different floors, or different locations.
- The company may have offices in a different city, state, or country, and the project team is formed from a different location.
- Multiple Scrum teams exist due to a larger, more complex project. The outsourcing and partial distribution of work among multiple Scrum teams is formed at multiple locations.
- The team takes advantage of a lower project cost, availability of skilled resources, and expected opportunities for a quicker delivery and optimized time to market.
Having a team with multiple work locations affects team collaboration and communication. It also creates cultural challenges in the form of work ethics and intellectual property rights. If a team works in a different time zone, it is harder to find sufficient overlap time, which further increases the communication challenges. A team’s participation in various meetings and ceremonies is essential, so it must find a way to increase its ability to share information quickly and effectively.
Although the most effective way of communication is face to face, which can be supported by information radiators, this method of communication can be impossible for team members working from different locations in different time zones. But the good thing is that, with the advancement in technologies, many tools are available today that bridge the communication and collaboration gaps created by this diversification.
Following are some effective techniques for making distributed teams more Agile.
Use tools and technologies extensively
- Use the latest communication and collaboration suite of tools:
- Online messaging/chats (Skype or Lync)
- Audio-video conferencing (WebEx Web Meeting, NetMeeting, Skype, etc.)
- Desktop sharing (remote desktop connection, TeamViewer)
- Information-sharing wikis or blogs
- Corporate social media (Yammer) and internet portals
- Telecommunication devices, such as Voice IP, leased lines, shared systems (server)
- Effectively use online tools for project management, requirements management, and defect management to ensure that information is kept up to date by contributions from all team members. Many tools, such as Microsoft TFS, Altassian JIRA, HP ALM, Confluence, or SharePoint, have dashboards, project reports, individual tasks and activities, and project progress and status readily available and up to date for the team's reference.
- Effectively use tools for:
The continuous integration and continuous delivery practices are quite fragmented, and no single tool supports end-to-end automation. However, by using the available automation tools, you can reduce human dependencies. These tools eliminate manual errors, save time and effort, and make error detection easier.
- Configuration management (e.g., StarTeam, TortoiseSVN, or Microsoft TFS)
- Continuous integration (e.g., TeamCity or Jenkins)
- Code quality analysis (e.g., SonarQube, FishEye, or NCover)
- Automation testing for unit testing (e.g., NUnit, JUnit, SonarQube, or Green Hat)
- Regression and performance testing (e.g., Selenium, HP ALM, HP QuickTest, HP UFT, JMeter, or HP Loadrunner)
- Continuous delivery and deployment (e.g., CrossVista or Jenkins)
Optimize overlapped time with meetings
- Identify common, overlapped time across different time zones. Plan and adjust for at least two to three hours of overlapped working time among teams in multiple locations. Such overlapped time should be used for meetings, discussion, and effective information sharing.
- Identify key team members who have specific roles and responsibilities that were identified earlier in the project life cycle. Ensure that they travel across sites to meet during the early project stage and then at regular intervals (maybe on the achievement of certain milestones or releases) to have a common level of understanding, reinforce personal contacts, and foster mutual respect.
- Ensure that regular team-coordination meetings are conducted effectively. Conduct local daily Scrum meetings and shared Scrum-of-Scrum meetings with local representatives and shared resources at a specific time and interval. Similarly, conduct sprint planning and retrospective meetings, backlog grooming sessions, and joint reviews with local representatives at regular intervals for effective project execution.
Optimize team structure and composition
- Ensure that multilocated teams are structured so that they form common subteams for specific product features. These features consist of epics and similar themes or components that might be subsystems or modules of the overall product or system. If possible, they should be colocated or near-located with minimal time differences for better communication, collaboration, and optimal information sharing on similar interests.
- Ensure that each subteam has the appropriate representation from the shared pool of resources, such as business analysts, technical architects, and DBAs, across time zones and locations so that there is minimum interruption and maximum usage. Ideally, quality analysts (testers) should be part of each Scrum team so that the appropriate level of manual and automation testing can be performed adequately at a subsystem level and then rigorously at an integrated-system level.
- The role of the product owner is critical, and having business representation is essential for each Scrum team (which might be representing and carrying out work related to a subsystem). If required, consider using proxy product owners at different team locations who have a business analyst background for effective query resolution and backlog refinement.
Having a distributed Agile project team is today’s hard reality. But with effective planning, organization, and use of tools and technologies, the ineffectiveness experienced can be minimized to a large extent, if not completely eliminated.