The Fundamental Futurist

How to be Agile with Distributed Teams – Challenges & Strategies

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.

Picture1

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.

Picture2

  • 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 Bafna

Senior Project Manager 

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.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: