The SoftwareDevTools team is all about sharing best practices for remote agile teams. We’re trying to make the case for Agile methodologies to adapt to the new reality of distributed teams. This has proved to be a daunting task since the core Agile ideas seem to be in conflict with distributed teams. Just take a look at the 6th Principle of the Agile Manifesto:
“The most efficient and effective method of conveying information to and within a development team is a face-to-face conversation.”
This is most likely to be true. However, this was written in 2001, and 16 years later we have the opportunity to make use of and enjoy the benefits of different types of communication, knowledge & project management techniques & tools.
Agile software development promotes co-location, but more and more teams are working remotely. What challenges & opportunities are there in Agile when your team is geographically distributed?
Why forming a remote team?
In the last decades, we’ve seen a transition from local markets to a global one. This creates both more competition, but also more collaboration opportunities for enterprises everywhere. Then, global teams were created to deal with the challenges of global market competition.
Companies found out early on, that remote teams help reduce the overhead costs and greatly improves the pool of available skilled-resources.
In an interesting article, Suprika Vasudeva & Hema Date list various factors for this situation:
- The business market proximity advantages including knowledge of customers and local conditions.
- Pressure to improve time-to-market by using time zone differences and having round-the-clock development.
- Create a pool of globally available skilled resources to develop software at a reduced cost.
- Distribution also minimizes the risk in case of natural catastrophes and other events.
In the same article, they also enlist various challenges and problems of remote work:
Strategic issues: A decision needs to be taken whether the project should be developed by globally dispersed teams or by co-locate teams, and planning how to divide the work across various sites is also required.
Cultural issues: GSD requires close cooperation of individuals with different cultural backgrounds. This can be seen both as a challenge and an opportunity. At SoftwareDevTools, we agree that Multicultural and cross-skilled teams can achieve great results.
Inadequate communication: Software development requires a great deal of formal communication through vital communication channels. In remote teams, there's a decrease in communication frequency and quality, which affects productivity. Time zone differences further add to the problem.
Knowledge management: The team members’ experience, methods, decisions, and skills must be accumulated through effective information sharing so that team members can use the experience. Hence helping in reducing cost and redundant work. Without effective information and knowledge-sharing mechanism, managers cannot exploit he GSD’s benefits.
Project and process management issues: High organizational complexity, scheduling, task assignment, and cost estimation becomes more problematic in distributed environments.
Technical issues: When teams are working across sites, the lack of synchronization can be particularly critical.
Besides all these challenges, we are seeing a growing number of Agile companies embracing distributed teamwork, and vice-versa. In the 2017 State of Agile Development survey, conducted by VersionOne, 86% of respondents had at least some distributed teams practicing Agile and 51% of respondents state that they were currently using or plan to combine agile with outsourced development.
The same article lists the Top 3 Benefits of Agile:
- Ability to manage changing priorities.
- Increased team productivity.
- Improved project visibility.
These facts clearly show that the current requirement of the software industry is not in line with the agile concept of the entire agile team working in a single room. Thus there is a need to extend the agile practices to globally distributed software development.
How to deal with these challenges.
Suprika & Hema are very aware of the challenges of adopting Agile in remote teams. But their approach to these is not that of fear or disqualifying remote work because is “Anti-Agile”, they actually make some suggestions on how to tackle the challenges and we’d like to share them with you:
“There are new challenges introduced when agile is combined with distributed software development like:
communication misunderstandings and the effect of different time zones. Informal communication which works well in collocated agile teams is not possible in distributed teams. This also leads to lack of trust amongst the team members.
Thus, extra efforts are required on behalf of the team members to maintain effective communications.
Increasing the amount of documentation also helps in achieving better coordination requirement clarification with use-cases and user-stories. Thus, flexibility and adjustment of the project is recommended instead of strictly following agile principles. Efforts should be made to bring the distributed team members together at the start, end and at other pivotal points during the project. This helps in building a shared understanding of the problem domain and also working relationships within the team.
Providing the right kind of tools to the distributed team also helps. Some kind of online
management tool is absolutely necessary for keeping up and tracking work on distributed teams.
(There are tools for Project tracking like Atlassian's. And some that are specific to each agile ceremony, likeAgile Retrospectives, Estimations, Stand-Ups, etc.). All of them specially designed to facilitate the adoption of Agile in remote teams.) Hence modified agile techniques if used consciously can be useful in overcoming the challenges faced by distributed software development (or GSD).
The two software development methodologies i.e. agile and distributed development can be combined to give appreciable benefits to the software industry in terms of increased production of high-quality software by using optimized resources as compared to the traditional development models.”
Also, a techbeacon article shares with us 3 points essential to mastering Distributed Agile Development that are worth noting.
Learn to communicate: Communication variability is essential. If you're going to have employees based in different offices or areas, you must invest in communication equipment & tools that fits the job.
Build in flexibility and increase coverage: Two advantages of distributed development teams are flexibility and coverage. For example, if a business exists in the Pacific time zone, and a second and third office exists in the Central time zone and in Australia, then the company can have resources working and available around the clock.
Increase hiring potential and appeal: High-quality, experienced software engineers are difficult to find and retain, so limiting the talent pool to one geographic area is exceptionally restrictive.
So, in conclusion. Agile methodologies and Distributed Software Development are not exclusive. In fact, using a combination of both will most likely yield better results. You must consider thoroughly what are your goals and options and make a conscious decision about your work culture, and embrace it. SoftwareDevTools is here to help.
Trying to improve your #Agile practices? OR are you getting started with Agile? In a remote team? Check out our products for Agile teams at SoftwareDevTools. We focus on making agile ceremonies more effective and easier to adopt for remote teams.