The Agile model recommends having co-located project teams, which, in most cases, becomes impossible to establish and sustain. Most of the projects are geographically distributed at multiple locations and across different time zones.
Below are some of the main reasons for maintaining distributed project teams, 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, consultants 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.
- Organization takes advantage of a lower project cost, availability of skilled consultants, and expected opportunities for a quicker delivery and optimized time to market.
Having teams working from multiple locations affects team’s 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 overheads. 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.
#1. Optimize team structure and human values
- Build team around motivated, self-directed, open-minded and result-oriented individuals; who believes in team-work and value their own as well others contribution. They should have good communication and collaboration skills like – interactiveness, knowledge sharing, pro-actively provide suggestions, feedback and ideas; help each others to resolve issues or problems and are able to maintain healthy peer-relations.
- Ensure that each team members role and responsibilities, teams goal and objectives, performance measuring criteria, rewards and recognition policy are clearly defined. Regularly their performance and anti-patterns are monitored and should be balanced actively by management.
- Ensure that multi-located teams are structured so that they form common sub-teams 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 co-located or near-located with minimal time differences for better communication, collaboration, and optimal information sharing on similar interests.
- Ensure that each sub-team has the appropriate representation from the shared pool of consultants, 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 very 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.
#2. 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 strong team governance and 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.
#3. Use tools and technologies extensively
- Use the latest communication and collaboration suite of tools, create virtual team:
- 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 on-line 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:
- 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)
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.
Having a distributed Agile project team is today’s hard reality. But with effective planning, organization, team-structure and use of tools and technologies, the ineffectiveness experienced can be minimized to a large extent, if not completely eliminated.