Skip links

Overcoming Challenges in Distributed Agile Software Development

Jump To Section

Agile software development has been in the industry for some time now. It has gained immense popularity with its various methodologies like Scrum, XP, TDD, Lean etc. to deliver minimum viable product at a short iteration while keeping changes in client’s necessities on top priority. It was primarily conceptualized for execution by a co-located project team.
How to be agile with distributed teams

Agile software development has been in the industry for some time now. It has gained immense popularity with its various methodologies like Scrum, XP, TDD, Lean etc. to deliver minimum viable product at a short iteration while keeping changes in client’s necessities on top priority. It was primarily conceptualized for execution by a co-located project team.

However, in real world situations, there are numerous scenarios where the teams are distributed globally across the world, across time zones, making distributed agile the pragmatic method of execution.

Distributed agile, executed correctly, can leverage a larger skill pool, with lower development cost, leverage time zone and deliver quicker Time to Market.

But what are the key challenges with Distributed team?

Communication and Collaboration – Focal Point of all problems in a distributed environment is instant communication. The advantage of interacting with each other and with the customer whenever needed is hard in a distributed environment. Interaction helps in drilling the User Stories to be an INVEST category.

Absence of critical roles (PO, Scrum Master) – Non-availability of Product Owner can affect the velocity of the team to great extent
Cultural and Language differences – A distributed team by time zone may have different culture and languages.

Each of the above challenges can be overcome with appropriate use of tools & techniques and disciplined approach.

Strategies for Addressing Communication and Collaboration

Communication Strategies

When teams are co-located, the level of communication needed scales naturally. If clarifying details are needed, SMEs may be pulled into the huddle. Then, the conversation shifts from many-to-one or many-to-many, depending on the context. In the absence of face to face interactions, communication strategies should be clearly defined in the distributed setup. Below are few of the popular channels available.

Agile Communication Strategies

Apart from the communication channels, disciplined use of tools are also needed in a distributed environment, like defect tracker, project management tool (Jira, Rally, Assembla) for better collaboration and Skype, Web-ex, Email, Team Viewer/Slack for instant communication and screen sharing. A very good internet bandwidth is needed for effective audio and video communication.

Standup Frequency and mode

Having stand-up meetings in a team with disparate time zones can be a challenge. While local stand-up meetings are held first thing in the morning in a co-located setup, in distributed scenarios establishing a synchronization and communication plan which calls for stand-ups at frequent intervals to include people from distant locations and having the entire team on the same page.

Agile Standup Frequency and mode

Handoff / Documentation

Set up overlap time for different time zones to get 24 X 7 yield. A very strong knowledge transfer mechanism is needed. The benefit of global distribution cannot be acquired without effective knowledge or information sharing. Establish a central repository for project information and all the documents with version control. Usage of document management tools like Confluence, SharePoint, Google Docs, Jira, Scrum Works etc. are very important along with instant communication strategy for the success of distributed engagement.

Avoid absence of critical roles (PO, Scrum Master) – Across locations

Having Proxy Product owner at offshore/near-shore is quite useful for the team members to clarify requirements and get their query answered immediately during their day time. Proxy PO (PPO) has to mirror the PO as much as possible to avoid any conflict and differences on delivery expectations. Clear demarcation of roles/responsibilities between PO & PPO.

Plugging cultural and language differences

Create awareness of cultural differences among team to help communicate and understand each other effectively.

Frequent travel should be planned, whenever needed, to overcome cultural differences. Few other small measures which the team should use are:

Speaking slowly in meetings
Making no assumptions
Asking questions
Timely meetings
Saying “No” when needed etc.

In addition to the above challenges, a good engineering approach is key to any agile team’s success whether it is co-located or distributed. Having a highly productive engineering culture goes a long way towards the success of any engagement.

Below are few of the engineering best practices which can be followed:

Pair Programming

How do you pair someone in another city or country?

By using remote pairing techniques and tools which provides collaborative editors, screen sharing, virtualization that feels as if 2 people are sitting together.

Microservices based engineering

Microservices are independently deployable, small, modular services, which are easily scalable, maintainable and can be isolated and understood easily.

In a distributed setup different services can be built using different technology stack in different locations. For example, one team in country A is strong in C++ and other team in different country B in Java, a call based on suitability to build one product based on skills availability can be taken. That will decentralize governance and create multiple small co-located teams in different locations.

Encouraging T-Shaped engineers

An engineer who possess deep skills in a few areas and broader range of shallower skills. This allows anyone to pick up work that includes their core skill or secondary skill.

Continuous integration and Automation testing by using cloud

Continuous integration detects any problems with the code quickly and provides feedback so the developer can fix immediately than compounding. There is a high degree of affinity between Continuous Delivery (CD), Continuous Integration (CI) and Microservices. CI/CD are enablers for development teams to:

Improve Velocity
Improve Code Quality
Establish Fail fast than Fail hard later
Reduce time/risk in getting code to production

Automation testing helps in making sure:

CI accepts/rejects the code push based on Regression outcome
Establish Fail fast than Fail hard later
Coverage of Functionality
Improving PO acceptance of User Stories

Distributed agile needs a disciplined adaption to the agile practices in order to be successful. Distributed team is like any other project team, but needs a lot more team effort and ownership.

About Author

Mayur is a Senior Project Manager with 17+ years of industry experience across various roles and 7+ years in managing Agile Projects.

He has worked on different Agile methodologies and has rich experience in successfully delivering MVPs through multiple scrum teams spread across geographies. Outside work, his loves spending time in gardening, travel and philately.

Picture of Mayur Bafna

Mayur Bafna

Latest Reads

Subscribe

Suggested Reading

Ready to Unlock Yours Enterprise's Full Potential?

Adaptive Clinical Trial Designs: Modify trials based on interim results for faster identification of effective drugs.Identify effective drugs faster with data analytics and machine learning algorithms to analyze interim trial results and modify.
Real-World Evidence (RWE) Integration: Supplement trial data with real-world insights for drug effectiveness and safety.Supplement trial data with real-world insights for drug effectiveness and safety.
Biomarker Identification and Validation: Validate biomarkers predicting treatment response for targeted therapies.Utilize bioinformatics and computational biology to validate biomarkers predicting treatment response for targeted therapies.
Collaborative Clinical Research Networks: Establish networks for better patient recruitment and data sharing.Leverage cloud-based platforms and collaborative software to establish networks for better patient recruitment and data sharing.
Master Protocols and Basket Trials: Evaluate multiple drugs in one trial for efficient drug development.Implement electronic data capture systems and digital platforms to efficiently manage and evaluate multiple drugs or drug combinations within a single trial, enabling more streamlined drug development
Remote and Decentralized Trials: Embrace virtual trials for broader patient participation.Embrace telemedicine, virtual monitoring, and digital health tools to conduct remote and decentralized trials, allowing patients to participate from home and reducing the need for frequent in-person visits
Patient-Centric Trials: Design trials with patient needs in mind for better recruitment and retention.Develop patient-centric mobile apps and web portals that provide trial information, virtual support groups, and patient-reported outcome tracking to enhance patient engagement, recruitment, and retention
Regulatory Engagement and Expedited Review Pathways: Engage regulators early for faster approvals.Utilize digital communication tools to engage regulatory agencies early in the drug development process, enabling faster feedback and exploration of expedited review pathways for accelerated approvals
Companion Diagnostics Development: Develop diagnostics for targeted recruitment and personalized treatment.Implement bioinformatics and genomics technologies to develop companion diagnostics that can identify patient subpopulations likely to benefit from the drug, aiding in targeted recruitment and personalized treatment
Data Standardization and Interoperability: Ensure seamless data exchange among research sites.Utilize interoperable electronic health record systems and health data standards to ensure seamless data exchange among different research sites, promoting efficient data aggregation and analysis
Use of AI and Predictive Analytics: Apply AI for drug candidate identification and data analysis.Leverage AI algorithms and predictive analytics to analyze large datasets, identify potential drug candidates, optimize trial designs, and predict treatment outcomes, accelerating the drug development process
R&D Investments: Improve the drug or expand indicationsUtilize computational modelling and simulation techniques to accelerate drug discovery and optimize drug development processes