Tech Insights
Sandun Weerasinghe
July 31, 2020

Making Globally Distributed Software Development Teams Successful

Making Globally Distributed Software Development Teams Successful

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

 

GloballyDistributed Teams consist of two or more (sub-)teams working together fromdifferent geographical locations to accomplish common goals.

I havebeen part of many globally distributed software development teams as adeveloper, lead and manager during my career. Working together with teammatesfrom various countries, cultures, time zones and backgrounds is always fun, butchallenging as well.

The following are a few tipsthat make distributed agile teams successful.

1.    Build trust and interpersonalrelationships

2.    Communicate effectively

3.    Have tools for collaboration

4.    Achieve technical excellence

5.    Build domain expertise &product knowledge

Build Trust and Interpersonal Relationships

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

6.    Come together in-person — Meetthem in-person at the beginning of a project, after a logical milestone ordefined period. This reinforces the team goal and “one-team” mindset.

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

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

Trust begins with the relationshipand strengthens via continuous performance.

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

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

Communicate Effectively

Greatsoftware is typically produced only when there is great communication betweenthe people involved. Poor communication will limit the quantity, quality, andcorrectness of the results.

Effectivenessof communication depends on,

9.    Mode of communication

10. Communication Skills

Mode of communication

Thefollowing are a few modes of communication, ranked according to the easiness ofexchanging information.

11. Face-to-face conversationusing a physical whiteboard

12. Video conference with avirtual whiteboard

13. Video conference

14. Audio conference

15. Instant messaging

16. Wiki and electronic discussionboards

17. Email

Communication Skills

Communicationis not only about language skills but also about listening, friendliness,confidence, volume, clarity, tone, body language, empathy, respect, andresponsiveness. A good vocabulary means nothing if you have no respect orunderstanding for another teammate’s opinion.

Have tools for collaboration

Use theright tools effectively for collaboration. They will help with projectmanagement, communication, transparency as well as productivity.

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

19. Project Management — MicrosoftAzure DevOps, Jira, Github, Trello, Basecamp

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

Thereare many tools. Select wisely, and use frequently.

Achieve Technical Excellence

Accordingto the principles behind the Agile Manifesto, “Continuous attention totechnical excellence and good design enhances agility”.

Technicalexcellence is curiosity towards continuously learning new skills, trying outnew 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.

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

Build Domain Expertise & Product Knowledge

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

You cantry these to overcome such challenges,

21. Delegate work andresponsibilities accordingly

22. Engage in knowledge transfers(KTs), workshops

23. Arrange on-site visits/stays

24. Maintain wiki, trainingcatalogs

Remoteworking & distributed teams are becoming more popular than ever. Hope thispost would help you make your experience better!