What does distributed agile software development look like in practice?
Software development has evolved. Historically, Software Development was done using the Traditional Waterfall method, which often resulted in project overruns, software that didn't do what users wanted, or worse, a failed project. Agile software development takes a different approach to Waterfall. Agile means that you get to the end result through iterations, starting with "must have" functionality, then adding functions in collaboration with the Stakeholders, unlike Waterfall, which takes the "Big Bang" approach.
Distributed Agile software development takes this flexibility and agility to the next level, by leveraging external resource to complement in-house teams.
What's the outcome? Faster time to project completion, without taking on additional internal headcount to cope with spikes or compressed deadlines.
How can you make the best use of these extended teams when they're located across the world?
One of the best ways to connect your teams is through effective communication.
This is where distributed agile software development comes in.
What is distributed agile?
Distributed agile is an approach to software development that's ideal for connecting mixed teams over different countries, languages and time zones. Excellent communication and creating a highly functioning team of distributed members is fundamental to distributed agile.
The main principles of distributed agile mirror the Manifesto for Agile Software Development:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following plans
What are the main benefits of distributed agile?
When your extended team is trained in distributed agile it's much easier to complete your project on time and on budget.
This is because distributed agile results in:
- Reduced staff and office facilities costs
- Easier access to expertise
- Improved collaborative working and knowledge sharing
- Increased flexibility across teams
- Parallel working among existing staff and development teams
What does distributed agile involve?
In practice, distributed agile is about applying those four main principles dealing with individuals, working software, collaboration and response to change to concrete practices.
This means incorporating them into elements such as backlogs, sprints, continuous integration, reinforcing, pair programming and user stories across the entire team.
For instance, if language is a barrier, then extra tuition can be provided. If people are shy, they can undergo training to give them the confidence to communicate more effectively in the workplace.
Many organisations believe they're agile, but in reality end up with frustrating results because:
- Their offshore support isn't trained in non-agile delivery read more about the benefits of nearshore vs offshore IT outsourcing
- They don't have the right resources in place
- Their teams aren't fully engaged
- They haven't fully briefed their teams on the end goal
What does a typical iteration look like?
An iteration is the period of time during which development takes place. Here are some of the features you can expect to see in a typical iteration:
- Team composition – it's essential you have the right mix of product owners, designers, developers and testers on board from the outset. Focus on having the right people available and engaged. Try to avoid changing your teams as much as possible to ensure high knowledge retention.
- Iteration planning – make sure you involve customers who are close to the business and developers who can comment intelligently on your plan.
- Daily scrums – ensuring every team member is accountable for their progress on a daily basis is crucial to your overall success. Daily scrums are usually conducted as a virtual stand up for ten minutes at a fixed time using communication tools such as Skype or Google Hangout.
- Process – does everybody fully understand the process they're working to? Does it follow the conventional analysis, development code review, test, UAT? Each developer needs to be well trained in the applicable skill set. If not, there are collaborative tools available to provide the necessary support.
- Show and tell meetings – the show and tell meeting is a critical milestone in the project delivery cycle. It enables the development team to present back to the customer or product owner what they've delivered during the previous sprint. Use them to collect feedback, thoughts and ideas to shape what happens in the next development sprint.
- Iteration retrospective – these meetings tend to take place at the end of each iteration. They're a valuable way for the team to inspect and adapt their iteration, teamwork and methods. A good retrospective relies on team members being able to speak openly and honestly.