It may sound like a joke at first even putting the two words “distributed” and “agile” in one sentence. As we all know, Agile manifesto states that there’s nothing better that face-to-face interactions between team members. However, in the changing fortunes of time we may as well accept that remote teams can be highly effective and work together perfectly well if managed in the right way.
Polontech has a long-lasting experience with managing Agile teams remotely with two international offices, consultants working on sites with our clients all over the world and technical teams providing the necessary support and guidance. With this in mind, we would like to share our secrets on building and managing a great distributed agile team.
1) Structure a perfect global team
Structure your team in a modular design way, i. e. each part of the team should be able to develop a single piece of technology. By promoting self-sufficiency, you can minimize the amount of collaboration necessary with the team from different time zone.
Code reviews is a great way to arrange effective teamwork. In case of some production issue, a team in different time zone can step in and tackle the issue. It is important if client support and communication plays an essential role in your business model (which make up 80% of any business).
Another great way to structure your team in accordance with the agile practices is to ensure continuous mentoring and shared skill sets. Mentoring is a great way to build gradually a superstar team which can take you everywhere. It ensures trust, loyalty and great results. In addition to that it forms a shared skill sets that gives your team certain flexibility.
2) Ensure the basis for team’s development
Now it is great time to make use of Tuckman’s 4 stages of Agile development:
At the performing phase, things are going great, the trust is built alongside with mutual understanding. What is more, the members of the team understand how to optimize the way they build software.
By all means, it take a lot of discipline to keep the team agile. For example, it is crucial to remember that the team is reversed back to the forming stage when any change is introduced (like new hire or retirement of another employee).
The basis of any agile team are such practices as code reviews (once again), task branching, continuous integration and reporting. Those fundamental practices cannot be avoided on the way to Agile ideal.
3) Overcome language, time zone and cultural barriers
In the global working environment we see endless possibilities for business growth, however it is also presents some challenges. When your teams are working in different time zones even overlapping working hours and daily meetings do not mitigate the situation enough without additional guidance. To keep situation under control the teams should exchange the information about code changes during the overlaps and notify about possible challenges.
However, it is almost impossible to do if your teams are not on the same page if speaking different languages. Besides, C++, Java or Ruby on Rails they need to speak good English and it is managers’ work to make it happen.
By arranging the event that gather all the teams in one place at least a few times a year you can keep up the morale and help to tackle all the cultural differences that might have arisen.
4) Build effective communication
Being Agile in spite of core principles of person-to-person communication is obviously not easy. In order to establish effective communication channels, some additional training might be necessary as well as some technical tools. Daily meetings and reports, watching one’s tone and intonation of there’s no video during such meetings or trying to catch up on each other’s progress – those are only some of the things to bear in mind.
5) Use Agile tools to be Agile
Last but not the least: so that to build great software – use great software. Atlassian tools might be a great help in building your agile team wherever the team members are located. JIRA Software, Bitbucket and HipChat will allow your developers to build the products together, communicate clearly and be as productive as you might expect of any true Agile team
– Arrange face-to-face interactions
– Choose the right tools and training
– Arrange frequent demos and retrospectives
– Cultivate orientation to quality and delivery