Skip to main content

Making Globally Distributed Software Development Teams Successful

Tips from 12+ years of experience working in globally distributed agile software development teams

Globally Distributed Teams consist of two or more (sub-)teams working together from different geographical locations to accomplish common goals.

I have been part of many globally distributed software development teams as a developer, lead and manager during my career. Working together with teammates from various countries, cultures, time zones and backgrounds is always fun, but challenging as well.

 

The following are a few tips that make distributed agile teams successful.

  1. Build trust and interpersonal relationships

  2. Communicate effectively

  3. Have tools for collaboration

  4. Achieve technical excellence

  5. Build domain expertise & product knowledge

 

Build Trust and Interpersonal Relationships

Everything begins with relationships. Close relationships are built with local teammates as you interact with them a lot. But it is equally important to build similar relationships with your remote teammates as well. Try these with your remote teammates and see how fast you become friends.

  1. Come together in-person — Meet them in-person at the beginning of a project, after a logical milestone or defined period. This reinforces the team goal and “one-team” mindset.

  2. Technical collaboration — Work on similar/connected features/tasks, review pull requests, do pair programming, transfer knowledge, compete in bug bashes etc.

  3. Interactions apart from work — Have small talks and chit-chats with your remote teammates. Go on outings, have fun events and play team sports whenever you meet each other in-person. 

Trust begins with the relationship and strengthens via continuous performance.

In an ideal world, you’d progress smoothly, achieve all milestones, perform as expected always. But in reality, things don’t always go smoothly. If your remote team members/manager do not see the impediments which slow you down, “trust” can be affected. You have to have transparency to avoid that.

Therefore, try to give a clear picture of the status always —be honest and open, highlight impediments during daily scrums, do your sprint reviews, retrospectives, keep the sprint board/backlog updated and request/give continuous feedback.

 

Communicate Effectively

Great software is typically produced only when there is great communication between the people involved. Poor communication will limit the quantity, quality, and correctness of the results.

Effectiveness of communication depends on,

  1. Mode of communication

  2. Communication Skills

 

Mode of communication

The following are a few modes of communication, ranked according to the easiness of exchanging information.

  1. Face-to-face conversation using a physical whiteboard

  2. Video conference with a virtual whiteboard

  3. Video conference

  4. Audio conference

  5. Instant messaging

  6. Wiki and electronic discussion boards

  7. Email

 

Communication Skills

Communication is not only about language skills but also about listening, friendliness, confidence, volume, clarity, tone, body language, empathy, respect, and responsiveness. A good vocabulary means nothing if you have no respect or understanding for another teammate’s opinion.

 

Have tools for collaboration

Use the right tools effectively for collaboration. They will help with project management, communication, transparency as well as productivity. 

  1. Communication — Slack, Microsoft Teams, Skype, Zoom

  2. Project Management — Microsoft Azure DevOps, Jira, Github, Trello, Basecamp

  3. CI/CD — TeamCity, Jenkins, Bamboo, Artifactory, ProGet, Octopus

 

There are many tools. Select wisely, and use frequently.

 

Achieve Technical Excellence

According to the principles behind the Agile Manifesto, “Continuous attention to technical excellence and good design enhances agility”.

Technical excellence is curiosity towards continuously learning new skills, trying out new approaches, and striving to enhance the quality of products and code. Encourage team members to use online learning platforms such as Coursera, Udemy, Pluralsight, etc. to improve their technical competence.

Teams can set standards/calculate metrics (code/product quality-related) to identify areas for improvement. Try Pair Programming, Test-Driven Development, Refactoring, Continuous Integration & Delivery etc. to see what helps you to produce better software faster.

 

Build Domain Expertise & Product Knowledge

In globally distributed teams, it is common that (sub-) teams from different locations have different levels of domain expertise & product knowledge. Teams from certain locations may not have good exposure to some domains and/or access to data due to various regulations. (e.g. GDPR)

You can try these to overcome such challenges,

  1. Delegate work and responsibilities accordingly

  2. Engage in knowledge transfers (KTs), workshops

  3. Arrange on-site visits/stays

  4. Maintain wiki, training catalogs

 

Remote working & distributed teams are becoming more popular than ever. Hope this post would help you make your experience better!


LEAVE A COMMENT







POST COMMENTS


© 2020 Creative Software. All Rights Reserved | Privacy | Terms of Use