Your tryst with agile practices has been great so far, but with the company in expansion mode with larger teams, larger projects and distributed locations, are the current practices sufficient?
Introduction
Agile development is the most sought development method in the recent times. Its advantages are multi-fold and it looks to be the only way forward to eliminate project uncertainties. However, large projects and projects that require multiple talents and round the clock development require distributed agile teams.
Agile teams often work well with fixed locations to eliminate delays and communication gaps to produce working software in short time periods. They strive to keep the inter-role interactions optimal and quality output (software) maximal. Agile teams work in specific time periods (sprints) to get their inputs (requirements and specifications) in the beginning and produce outputs (software or documentation) at the end of each period.
The concept of distributed agile teams seem to be contradictory and complicated, but must be considered. For companies dealing with web and mobile development, practicing agile web development could become highly desirable and eventually necessary to reap advantages of both of these methodologies.
Does Agile Work with Distributed Teams?
Agile is all about project management with the following characteristics:
- Focused software development project teams
- Excellent team understanding about the periodic tasks with daily communication with stakeholders
- Requires elimination of communication gaps (no ambiguities) within any team
- Agile teams are positioned in fixed locations (to ensure complete understanding)
The term ‘Distributed Development’ looks contradictory to these aspects as its purpose is to ensure certain advantages:
- Useful for large projects requiring
- Potentially available larger talent pools
- Minimize or optimize the cost of development
- Avail of time flexibility
Distributed agile teams contain two or more agile teams that are spread across different geographies and potentially different countries, continents and time zones. Considering agile development with teams distributed across different regions which could be even different countries or continents, may sound contradictory but is possible. Such distributed teams would have to tackle various other aspects such as project complexities, differing development models such as development, technology, and price.
Besides the ability to work round the clock, the distributed agile development also provides other advantages such as cost optimization and augmenting the available talent pool while providing the tools and advantages of agile development approaches.
Adopting distributed agile development by businesses means that the agile development is enabled with work distributed for all of the teams across different regions. This requires meeting of some critical success factors to ensure consistency of practice and control of inputs and outputs.
Setting up the distributed agile teams with various control and communication points requires consideration of aspects like work synchronization, diligent delegation/control of deliverables, optimized communications, consistent status inquiry and update, effective testing framework, and consistent quality assurance framework to ensure the success of distributed agile software development teams.
How Distributed Agile Teams Work?
Distributed agile teams could face issues in terms of work understanding, work allocation, work progress tracking and quality assurance which are primarily caused by communication gaps or delays or both of them. For successful functioning of agile teams distributed over large distances and time zones, it is necessary to ensure these are minimized, and if possible, eliminated.
There are some similarities between distributed agile teams and conventional agile teams:
- Fundamentally distributed agile teams must also function like agile teams. This is achieved by the elimination of all activities that do not contribute to the product development; that is why agile development is also identified with the term lean development.
- Distributed agile teams like other agile teams also strive for continuous improvement in achieving better quality and output with optimal effort. This aspect especially receives importance whenever problems are faced by agile teams.
- Distributed agile teams also create and use project templates, artifacts to make the team functioning more effective.
- Distributed agile teams also sustain and strengthen agile practices that are proven and persuade changes to those that cause wastage.
Distributed agile teams, however, are different from the agile teams in fixed locations. These become necessary for companies that are either large (and hence have a geographic spread of teams) or require outsourcing of development activities.
Distributed agile teams require a framework that supports agile practices among the multiple teams working for the same project:
- They are agile teams to start with. Agile development method must be institutionalized into the system before distributed agile development can be undertaken. This means the all of the teams concerned are identified and trained in specific agile methodology.
- Project framework that works for enablement (and not control) defines the work distribution, allocation, and coordination. This requires the presence of Iteration Managers along with Project Managers.
- Distributed agile development requires optimized team size and mix. Distribution of teams could lead to disconnects, delays and communication gaps. Since the objective of such teams is to achieve scalability and size it becomes necessary to form teams based on talent, fitment, and location.
- Online agile tools become necessary for distributed agile teams. Agile teams rely on specific tools and templates that enable them to achieve agility of development. To ensure effective agile work IDP, Shareware, File systems, and other means must be adapted to form a systems framework in which the teams stay updated fully and produce high-quality work together.
- Tools must support the role distribution adapted to form the agile teams. For example, each team could consist of analysts, developers, and architects; access and control must be formed according to the needs of the project.
- Communication is one of the most important of the elements considered for distributed agile teams. Communication tools and methods to be adopted in general could depend on the location proximity defined in terms of co-located, near-located, partially-dispersed or fully-dispersed.
There are several advantages of distributed agile development. If properly deployed such a system could provide extended talents, flexibility in timelines, lower costs, team and work scalability and faster turnaround times.
Setting up your Distributed Agile Team
Here are some hacks and techniques to set up your own distributed agile teams:
- Local success to distributed success: Agile teams must be proven initially for agile functioning on their own before agile is applied to distributed teams. This can start with isolated projects and then extended to the distributed team. Agile teams must begin with smaller projects and must build on for larger projects.
- Distributed Agile practices: Distributed agile practices must be extended for the entire project life cycle and for all roles and phases in the project. The project may start with a definition iteration (or zero sprint) which may be used to detail out the remaining iterations as a preparatory step. This can include the collaboration methods and tools to be used.
- Distributed Agile teams: The agile process must include all roles involved in the project, from planners to executors, from the generalists to specialists, and from the direct players to support roles. Continuous improvement is important in the various stages of team development.
- Development Methodology: While agile development is a common name with which rapid application development is identified, there are many methodologies such as Scrum, XP, DSDN, and Lean Development that may vary considerably from one another. They vary in focus areas (some on management, some on engineering, some on development and so on) but all of them fundamentally drive agile development. The focus area of the agile teams in your case may be used to adopt any particular method; whatever is the method it is necessary to ensure coordination by team orientation and training.
- Agile tools: It is necessary to define and track the development work, progress, issues and resolutions in a speedy and effective manner. The tools adopted must support agile development practices that include teams from remote locations.
- Agile productivity enhancement: Here are some of the hacks that could drive the development on the upward curve. Automation could be used judiciously to speed up routine work, to ensure simple communication pieces are not missed out. Keeping the agile process simple (easy to understand and follow), focusing on periodic development (daily), adhere to iteration schedules, and use metrics to measure all those parameters that can be measured.
Conclusion
Agile co-development across distributed development locations is a practical reality today and can render significant and profound advantages of both aspects of software development.
Classic Informatics provides SCRUM teams that provide high-speed development with high quality. While we provide hybrid agile development teams, we cater to every part of the project life cycle while keeping in view the project dynamics in various cases.
Want to know more? Drop us a line here