Initially, Agile development was conceptualized for grouped teams, or teams located together in the same office. However, most businesses today have a few or several distributed teams working together.
She is extremely helpful – she asks you a few questions about your ticket, visa, and passport and voila, your issue is resolved. You happily board the flight. Would you bless Jessica in your mind for getting you out of the trouble? Wait, what if I tell you that there is no person with the name Jessica there and you just spoke to a Robot? Yes, welcome to the world of chatbots.
This phenomenon is much more than just a trend. It makes good sense as distributed teams can work on projects around the clock, and robust talent can be found in less competitive markets.
The Agile Manifesto consists of 4 values and 12 Principals. Though most of you would know it, I am still sharing them for your ease and the benefit of doubt.
Individuals and Interactions Over Processes and Tools
- Working Software Over Comprehensive Documentation
- Customer Collaboration Over Contract Negotiation
- Responding to Change Over Following a Plan
- Satisfy customer through early and continuous delivery
- Welcome changing requirements, even late in development
- Deliver working software frequently
- Business people and developers work together daily
- Convey information via face to face conversations
- Working software is the primary measure of progress
- Maintain constant pace indefinitely
- Give continuous attention to technical excellence
- Simplify maximizing the amount of work not done
- Teams self-organize
- Teams retrospect and tune behavior
Though most global teams want to implement Agile as per the manifesto, they all face challenges using distributed Agile.
Few of the common but major challenges that the global team faces are:
- Communication and Time Zone
- Team not aligned to a single goal
- Requirement Misunderstanding
- Trust and collaboration
- Collective Code Ownership
- Unpleasant Surprises
Few things we learned about overcoming these challenges:
- Lowering the barriers to communication
The higher the threshold to engaging the team members the more difficult it is to work collaboratively. The distance between teams not only inhibits face-to-face communication but poses additional practical challenges. If teams work in vastly different time zones, e.g. Los Angeles (US West Coast) and Pune (India), having a few overlapping working hours will help, giving an opportunity for teams to communicate.
Electing the right tools that encourage effective communication and transparency will work wonders. Few of the tools that I use are -
- The Big Picture View
Aiming at a single goal is the glue that binds the team together - having a shared purpose, shared objective and shared work product is the key to unlocking high performance. Besides, high performance is always a feel-good factor.
Before starting the work with the distributed team, it’s always good to start by specifying the why’s. i.e. why does this team exist?
Next, get the team together and set objectives for 1 month/1 week (or 2 weeks) /1-day processes:
1-month: The team can be asked on what they plan to accomplish in a month. Collaborate to store these responses using software like Google Sheets, Confluence etc. Brainstorm with the team and encourage divergence and have the team buy-in. Sort the project monthly priorities accordingly to get optimum process excellence.
1-week: Ask the team on the aspects of the project can be completed in a week. Have the team assign their work to themselves. Have the team sort their own work by what they feel is most important.
1-day: Finally ask the team on their accomplishments for today/picked-up for tomorrow. Discuss the challenges and then what will they do the next day or have done the previous day.
Capture: Record the project, team objectives and steps in the team has taken in tools like Jira, TFS, Taiga etc.
- Create a Rhythm
Coordinating calendars across teams in multiple time zones can be a nightmare. One of the proven ways to address this challenge is to get the team into a rhythm. This lowers the overhead required to collaborate. Asking the members to conduct standups in a group helps in developing the culture of a team.
Time is precious and utilizing it effectively is an important part of developing the right culture. The group activities should be limited, only till the members feel their attention is needed. This can be accomplished by:
Planning: Hold a meeting at the start of the week to discuss the progress against objectives and develop a plan the coming week and who would do what.
Conducting Daily Standups: Reserve a meeting time daily where the team members can share their work in hand and update on any challenges they face.
Conducting Weekly Measure: At the end of the week, touch base to share what all has been done.
- Boost the Morale
They say a lot can happen over a coffee. But when it’s a global team it difficult to get to know your team member as 3D human being. Having a personal touch is an important psychological safety factor which leads to the success of the project. This can be achieved through:
Casual group discussions- Have periodical casual chit-chat or a get together etc.
Virtual Coffee Rooms- Create virtual coffee rooms in your communication tools where any discussions or updates can be exchanged which is outside the project environment.
One-on-One- Feedback is the key element to Agile. The mechanism should be developed to create rapport and give/receive feedback on a regular basis. This is important so that the team members feel valued.
- Code Ownership
Collecting updating information on the project and allowing others to easily find it is a vital practice that should be inculcated as a collective mission. Unless appropriate tools and a Version Control Systems are used, maintaining collective code ownership can be difficult across locations. Lack of trust between team members can lead to highly negative consequences like blaming each other.
- The Surprise Element
When multiple locations are producing work that needs to be integrated at some point, there is a huge risk of things falling apart. One of the prominent ways is to have Continuous Integration practiced rigorously. There also needs to be a regular audit on tracking the inconsistencies between locations in types of tools used and quality standards followed to avoid impediments to avoid any surprises. Having a standardized Version Control System will help in achieving ‘surprise-free’ integration.
We have worked with many my clients’ towards implementing measures which significantly helped them in overcoming these challenges, if not fully eliminate them.
If you are facing the same challenges, we can help you eliminate them. Get in touch with our experts today.