The two software development methodologies --agile and distributed development can be combined to rev up the production of high quality software by using optimized resources.
Agile is a group of development methods in which the requirements and solution evolve by continuous collaboration between all the stakeholders. It involves self-organizing and cross-functional teams working collaboratively. It focuses on rapid iteration, with continuous customer input along the way. Agile is more flexible as it allows intermittent changes as per the business requirement. It maintains a close connection with business in developmental phase, so that the end product doesn’t turn out to be a surprise!!
Agile implementation has turned out to be very successful in the past two years and as per a survey conducted by VersionOne on the State of Agile Development in 2013, 88% of the respondents have agreed that their companies were following agile development. Almost half the respondents have said that they use agile to manage majority (52%) of their projects.
Agile implementations has multiple benefits –
- it allows to deliver a product faster with multiple teams working
- Provides better visibility and accommodating incremental changes to business in product development phase, thus delivering a product which touches customer expectations
- Working software at every stage
However agile needs close coordination among team members to be successful. Changes and modifications are rapid in agile development, and this needs team members working on different aspects of the product to work very closely. Strong processes, inter-team communications and collaborative work-flow are key for the success of any agile project. The best practise for successful agile development is to work in small teams at one location.
Distributed Agile added another dimension to agile practise – involving teams based at different locations – be it different offices, different cities or different countries with different cultural background and different time zones working simultaneously on the same project. Distributed Agile thus breaks the basic principle of co-location for successful agile implementation. Distributed agile thus is a complex phenomenon involving multi-cultural team based at different locations, may be from same organisations or from two different organisations.
What are the advantages of distributed agile?
More practical approach – Slowly as teams grow, it becomes difficult to have the entire team at one location. Also it needs different skill sets and pooling talent globally brings the best in the team. With distributed agile development it is possible to tap into new global markets and make best use of globally available talent, while potentially reducing costs.
Faster development of products - Agile lays emphasis on time to a very large extent than cost. With distributed teams, you can take the advantage of "Follow the sun Model", thereby build the product in a shorter span.
Better Geographical reach – With teams in different geographies, it is easier to understand the local flavour/culture and thus customize the product according to the needs of local market
More innovations – Working with diverse team sets, you have more different ideas and thoughts. Aligning them properly can lead to better innovation in the product.
Challenges in Distributed Agile Development
When team members come from different cultural backgrounds, language and cultural differences can easily create misunderstanding and generate mistrust among team members. Nothing is more important than this crucial element of a hyper-productive team, and building trust is essential in the formation of cohesiveness between team members.
It is vital to create overlapping office hours so that remote teams can communicate, resolve problems, and bridge time zones for other mission-critical tasks. More overlapping time during the day fosters better engagement and collaboration.
Team members in different regions generally have varying degrees of skill and technology expertise, which can create a class system between the different remote teams and hinder collaboration.
To summarize, trust, timezone, language, cultural barriers, communication, technical alignment, project and process management are a few of the important challenges when working on Distributed Agile.
How to make Distributed Agile successful?
The success of agile will depend on multiple factors – the culture of an organisation, the skill-sets of different team members, type of project, volatility of the changes, etc.
To make agile successful, open communication and collaboration is crucial. The key members from different locations need to be face-to-face at least in the early stages. It ensures that the team begins work on the project with a shared understanding of customer context as well as common minimum guidelines.
Agile teams work on user stories and not on component based tasks. The Distribution of work should be according to user stories and not by component. Agile development initially is not simple and distributed development adds to the complexity in software development. The team should have someone to coach them and guide them to move on the track of agile practices.
Also, in case the changes are very fast in a project (on a daily basis) and need to be applied immediately, it is better to avoid distributed agile. For such projects, it is better to have the team in one place for intense communication.
Online management tool would play an important part and is absolutely necessary for keeping up and tracking work on distributed teams. In BSI we have developed StarSmart framework based on which we have SmarAgile as the tool for end to end project Management using Agile. In addition to this we also use online tools like JIRA and Rally to name a few.
The quest for higher profitability has pushed many organizations to make their production and supply chains as flexible and modular as possible, whereby independent pieces of a product and / or their processes can be decoupled and sourced from cheaper markets. In such situations, success calls for frequent and close collaboration between vendors and their customer organizations.
The two software development methodologies i.e. agile and distributed development can be combined to give appreciable benefits to software industry in terms of increased production of high quality software by using optimized resources as compared to the traditional development models