We're a team distributed between different cities who collaborate and work closely together. We're a distributed team, but shy away from using the term "remote workers", because one thing we definitely aim not to do is act remotely from each other.
We are a highly collaborative, cross-functional team who like to maintain fast feedback loops. Here are some of the ways that help maintain a close working relationship.
Technologies that help us collaborate
Firstly, we work on high spec laptops, this means we're very mobile. We also operate Activity Based Working in our offices, i.e. we don't have fixed desks, we do have neighbourhoods, but can work at any desk we choose. At the end of day, our desk is cleared and anything personal gets stashed in our lockers or taken home.
The team members that are in the same location co-locate and tend to work in mobs (smaller, cross-functional groups within the delivery team). This definitely aids speed of communication and transfer of information amongst that group, reducing the need for some meetings.
To include team members in other locations, we use a number of tools to communicate. For example, each team member uses Flowdock, an instant messenger. There are different channels for different teams and groups. Notifications let you know whether other team members are calling out to you by name. This allows the team to chat as a group with the history of the conversation available and searchable. Not only is this good for direct communication, but also adds to the degree of information osmosis.
In all of our meeting rooms we have Google Chromeboxes and large screens so that we can include team members in other locations via Google Hangouts. These are used for daily standups and other team meetings.
Instead of a physical visible workspaces, we use a Jira Agile board. When in the standup we ask someone to share the board via the hangout so that the can update the board on screen as the team is talking.
For pair/mob programming we use Floobits, a great tool that allows the team to share their development environments with each other. This allows each team member the ability to navigate and type within one shared environment. This along with video and voice mean they can effectively pair/mob program over the wire.
And finally, the most recent of these we've named "The Portal" after the Valve Corporation game of the same name. In the game it's possible to use the portal device to create doors that transport you to different, not necessarily adjacent, rooms. This allows the player to move instantaneously from place to place within the fictitious game location of Aperture Laboratories.
For us, a portal is an always open video connection which allows us to see the office environment at the either end of the connection. This gives us something akin to telepresence in each other's offices. In other words, we feel as if we're in the same room as the other team members. Simple things like being able to see if someone is in, at their desk and maybe available to talk, become much easier. We also share moments where someone just stops by the portal, waves good morning or starts an impromptu conversation.
Technology is great, but what else?
Although these technologies enable us to communicate effectively as a team, we've found that they wouldn't operate well without the teams having a good relationship built on trust.
One thing that we are actively working on as a team, is building a "trust bank". It's important to establish and build up trust between members before they are inevitably put under pressure. The trust investment that has been squirrelled away by the team can then be relied on to help them to maintain an effective working relationship. This will help them overcome obstacles much sooner than if they fall back to operating as a bunch of indivuals and the fallout that occurs when that happens.
Ways of building up trust within team members include:
- Co-create (establish) and maintain (regularly discuss and adjust) a working agreement.
- Hold regular team rituals like the daily standup and the end of iteration retrospective with video and voice. Face to face offers a more authentic form of communication than any other.
- Virtual coffee - one or more distributed team mates grab a coffee, get away from your desks, open a video hangout and chat. Chat about what ever takes your fancy. When the coffee is finished, go back to work.
- Virtual team building games - a great example of this we found recently is a game called "Keep talking and nobody explodes". A bomb defusal game, where one team is given bombs of increasing complexity to disarm and the other team is given the manual, neither can see both. It lends itself well to being played over a hangout.
- Regular gatherings where we physically get together and spend both work and social time together. Preferably the whole group at least once a year, with individuals visiting other locations probably at least every couple of months, preferably once a month.
A work in progress
These are just some of the ways we're looking to improve how the team collaborates when distributed across different locations. The important thing is that all team members have active participation in creating the way we work together.
Technology is important, especially a high quality internet connection for video and voice. Whilst our usual internet connection works well in the most part for Google Hangouts, sometimes there is nothing better than a dedicated connection. For that purpose we have Cisco video conferencing tools in certain meeting rooms. The consistent clarity of video and voice on these devices make you feel as though you are in the other room.
Also remember that while technology is often the enabler, for the team to work effectively together we have to know and trust each other. We've learnt that human relationships take longer to develop over a distance, so we have devised a number of ways to actively work on building them.
If you work in a distributed environment, we'd be keen to hear about your experiences. If you have time, please comment.