With today’s virtualization capabilities making physical location less relevant and companies increasingly embracing the benefits that come with telecommuting, many companies have project teams that are not working in the same physical office, or even the same building. While the flexibility of having a distributed team can have many benefits, it also introduces some new challenges in coordination and communication.
In addition, more and more employees are entering the workforce expecting to have real-time collaboration. In the age of social media, people are used to being in touch, working together on the same things at the same time, and making changes without a lot of overhead effort.
Here are five essential tools for enabling real-time collaboration with a distributed project team:
When teams are co-located, that is to say all sitting in the same room or part of the office, a lot of informal communication occurs. Things are overheard in conversation that others might decide to chime in on, or side conversations might spark other questions or ideas. Also, there is a chance to let off steam and overall build a sense of team through quick conversations about interests, jokes, tools, tips, etc. These types of informal communication also serve as an important way to create a sense of team, building collective trust and improving morale.
Instant messaging programs are essential for providing a path for real-time communications. When working with a distributed project team, it is also helpful to make use of group chats in addition to one-on-one IM conversations. A group chat that is used on a daily basis (as long as it is not abused) can provide a virtual office. It can:
The ability to productively maintain a group chat is dependent on team size and on team personalities, but with the right team, the benefits can easily improve productivity.
There are plenty of chat clients on the market. Our teams have used Skypechat (which is free). We have found Skype works really well for ad hoc chat groups and allows for editing previous messages, but the mobile client can be very cumbersome. We have also used HipChat (recently acquired by Atlassian). HipChat is slightly better at Skype in terms of ease of file/link sharing and has a better mobile client, but does cost (a small amount of) money.
Another important tool when working with a distributed project team is a central repository for documents. This can be as simple as a shared drive, but a system with version tracking is significantly better. Sharepoint is a tool commonly used for this. The key is that documents should be convenient to access and edit for all team members. Ideally, team members would be able to view real-time updates as other team members are editing the documents. For example, a team can use a Google spreadsheet to work through task estimates, allowing all team members to view the living document as the discussion is being held and changes are made. More than one person can contribute to the editing at the same time – one team member can be responsible for updating the estimate numbers while another makes sure related assumptions are added to the document. This collaborative way of working can add agility to the project team.
Any ability to automatically tie source control changes sets to particular tickets in your defect tracking system really helps provide a critical context for those changes. This means that team members can specify the ticket number associated with a code change, which provides a way to automatically bring up the code changes from with the ticketing system. The association helps to answer archaeological questions of why and when a change was made. Team members looking at the ticket history can not only see the full chain of comments on the ticket, but also can pull up the code changes that addressed that ticket without having to manually cross-reference. Many ticket tracking solutions, like FogBugz and JIRA, have the ability to hook into source control repositories for this type of integration.
While it’s important to have places for working collaboratively on spreadsheets and formal documents, it’s also often beneficial to have a place to have informal collaborative notes. Wikis provide a lightweight, easy-to-use place to share thoughts and ideas.
A Wiki is a browser based tool that allows multiple users the ability to collaboratively create and edit pages. Wikis are great for brainstorming activities where all can contribute at their own pace. Wikis provide a low barrier for just adding thoughts and then coming back to build / re-organize those thoughts. The ability to easily organize many pages into a hierarchy, add links and rich text all allow for a rich experience for collaborative building. The quick, single search in Wikis also makes them ideal for knowledge-sharing; and the built-in revision history and ability to subscribe to updates help keep people informed of ideas being added by their teammates.
Most defect tracking systems have a wiki component, such as FogBugz and Atlassian Confluence. For a small company that is willing to use cloud-based tools, there are also several cloud-based wiki services available.
Examples uses for a wiki are:
Occasionally, something someone is working on needs a second set of eyes. For example, a developer may be stuck on a particular error in their local environment. Because the code change have not yet been committed to the source control system, a quick and easy way for someone else to see it is to have them actually look at that developers screen. This is easy when you can call someone over from the desk next to you, but when the team is distributed, it is not as easy. Having a tool that allows for one or more people to see a person’s screen is a really useful tool. Tools like GoToMeeting and WebEx can allow for sharing of screens and computer control, so a fellow team member can do some quick exploring on their teammates environment to help investigate an issue. There are also lighter weight solutions out there like join.me by LogMeIn. These tools also provide a simple way to set up conference calls – allowing team members to either call in or join in using their PCs. This can also be very useful for informal training sessions and code reviews.