Aligning with the Team
There is a saying: “Away from eyes means away from heart”. True to that saying, in order to have a good team setup you should also have a good team atmosphere. And let’s be honest: it is hard to maintain it when your team members are just voices from the headset. Early on it becomes apparent that for good teamwork you actually need to physically interact with your team members once in a while.
In order to get people to know each other, it is important to organize social events for the whole team. This will dramatically improve the productivity and confidence among team members, and reduce the probability of errors that can be the product of a lack of communication. These social events can take a form of a barbecue, sport event, a lunch or a dinner at your local restaurant or even a collective city tour after the working hours.
One of the things to also think about are cultural aspects. This relates not only to regional culture, but also to team and corporate culture (if you have teams that cross companies). Most teams have their own practices and idiosyncrasies that should blend between locations. This will bring a sense of common team culture. Regular visits, especially in the beginning, celebrations, pair programming or just a short chat during a coffee break can greatly improve confidence and comradeship, which is important for a successful project.
In the initial phases, support from the more experienced team-members to the ones working off-site is of high value. This cannot be substituted with any kind of written documentation.
One of the biggest efforts in setting up a distributed ecosystem is to align the team with already established practices. It is important that distributed team knows what are “the current rules of the game”: not only in order to follow, but also to question them as well. Whatever the setup you have with the collocated team might not work when the team gets distributed. This setup requires adaptation on both sides, more or less on the same level, depending on the sizes of on-site and off-site parts of the team.
No matter how well you prepared your VMs, workspaces, team processes and documentation, in the long run you just can’t substitute the values with which personal eye-to-eye contact contributes to the teamwork. Yes we are developers, we do program the machines which make our virtual lives easier, but we still did not get to the point where we can substitute real life socialization with virtual one. Getting to know the people, not just in front of a webcam, but meeting them in person and going out for a casual dinner or a game of bowling, really means a lot, and it makes distributed communication and ad-hoc knowledge transfer sessions much easier.
So please, if going distributed try to gather the entire team at one place every once in a while just to give each other a pat on the back for a job well done.
The old proverb goes: “A journey of a thousand miles begins with a single step”. What these first steps will be depends on a lot of factors. You can use our experiences to identify and evaluate these factors so you may choose what is right for your team. Important to remember is the common theme: planning the distributed setup in a way that enables it to evolve over time through scaling, improvement or further distribution. It is most efficient if you do this early on.
Setting up the environment is a matter of evaluating the infrastructure and choosing the tools that will fit. The best way to do this is through a project kick-off visit. By transporting the domain knowledge context you enable deeper understanding of the “big picture” of the project and unify the efforts in a transparent way. In the end, and maybe most important, a healthy team spirit built on trust and mutual understanding is something you need to encourage in order for the distributed cooperation to succeed.
Feel free to share your experiences in the comment section or contact one of the authors of this series by email.