In this topic, we described about the below sections -
What is Distributed Agile?
Distributed Development would be defined as a group of members who are actively collaborating on a common software/systems project separated by Distance,culture,and Time Zone.
What is special about Distributed Development?
- Cost differentials
- Global presence
- Specialized talent
- Advantage of "Follow-the-Sun" approach.
- Virtual Organization etc.
How do Distributed Agile teams work?
The familiarity of Agile methodology in Software development has reached an exclusive level. Based on 2018 statistics, about 91% of software Developers worldwide, apply the Agile principles and values in their work.
Simultaneously, we observe the same trend and the increasing share of distributed teams and their growing popularity of remote work. Initially, Agile, and distributed teams did not merge well.
The basic concept here in Agile is the incremental development which allows delivering a certain working product within a short time span. In this way, the teams which are working by the Agile Methodology can adapt to changes to their projects much easier. This approach would define the overall project development Organization strategy.
How to Organize Distributed Agile Development?
The main idea in adapting Agile for a Distributed team not about sticking to all the twelve principles of Agile Manifesto. But distributed cooperation would have its effect on the development flow, but it does not mean that Agile would not work.
Agile team size and team roles -
When Agile methodology is applied in a distributed team, it would be important to set up the team in order to achieve maximum affect. Optimal size of an Agile team is 3 to 9 members. A large team might affect the communication quality, even in a face-to-face daily meeting, a person would have certain limit of what could be remembered at the same time.
Moreover,in a distributed team you would anyway face the problems of time zones and the member's personal schedules.So,it is recommended that the distributed team size would be kept in order to recommend a number to facilitate the communication Organization.
If team roles, distribute them more or less evenly between the countries in which you operate, keeping all the developers at one location and testers while the management is somewhere else would be a worst idea. Because, due to any external reasons, if it is needed to pull out any particular region, then the entire line of work would be lost.
Workload would be recommended to be distributed evenly between the team members and the team members would work not only for the distributed teams but also for the co-located ones too. In a Distributed team, an uneven workload can also have the most serious consequences. If an overloaded team member delays the flow for other colleagues, it would become even longer due to the time differences or schedule mismatch. Therefore, an overload would threaten the timely delivery of the whole team. Simultaneously, people with less work would get extremely poor motivation and they would not be willing to commit their effort to the project.
If the team structure includes both the in-house and remote colleagues, it should be made sure that remote members would not find themselves in the position of subordinates.
Issue and Backlog Management
The daily sync ups that are prescribed by the Agile methodology are intended among other things to detect issues which block the other team member's work. In remote Agile teams, this problem would be of higher importance as a blocker can not only stop the developer's work but it also would make them wait until the colleague who should resolve the problem would start their working day on the other side of the globe. So, due to this lot of valuable time would be wasted.
In order to avoid such kind of blockers, one should adopt the practice of discussing the today's and planned issues for tomorrow as well. In this way, it would be easier to see what is blocking the development and proactive measures would be taken.
Managing the present issues smartly and the project backlog can reduce the dependencies in the team to minimum. In this way, higher efficiency and productivity of the whole team can be attained.
Pair programming is a concept that is not suitable for a distributed team. Pair programming means, two people working on the same station. One would be writing the code and the other would be monitoring it., ask for clarifications, make suggestions, notices mistakes. Pair programming would be one of the core methods of Agile which is intended to improve the code quality.
Rather, pair programming would be set up in a distributed team too. In today's market there are various conferencing tools for any budget. Most of them have screen sharing feature that would be an effective replacement of the side-by-side programming. Skype, Zoom, Slack are the apps which are used to Organize pair programming feature. Planning a pair programming in a remote team would take more organization effort as sessions need to be set up convenient for both members considering the time differences. However, if the developers are sufficiently self- motivated and committed in delivering the quality code, they would be prepared to adapt their schedules to include pair programming even if they are so far away from each other.
Agile tools used in Distributed systems
In Agile Distributed systems, tools are used to reduce the communication challenges which a remote team would face and create a working environment that is as close to personal communication as possible.
While setting up Agile development distributed team, it should be made sure that proper communication and collaboration tools would be used so that the team members would not have any problem to reach each other and attend daily meetings.
- GitHub is used to build the code and review.
- Google Drive is used to manage project documentation.
- Microsoft share point would be used if you need a more comprehensive collaboration package with enhanced functio nality.