“Collaborative tools” is a large bucket. Wikis, multi-edit documents, shared spaces, asynchronous editing, chat tools, video conferencing, terminal multiplexing, and a variety of other options can all be considered “collaborative tools”. The goal is to encourage people to actively work on things together, to make changes in real time, or where asynchronous edits can be versioned so that no information is lost. Below are some of my favorite ways to use collaboration tools, and what you can use to get similar results.
Screen sharing can be performed in a variety of ways. When working at the console, or command line level, there are tools that are referred to as “terminal multiplexers”. Terminal multiplexing is a technique where you can open up a terminal window and either display several windows separately, or watch them in real time in the same pane. The two I am most familiar with are GNU Screen and tmux. Both allow the user to open several windows from the same terminal shell, but what really makes these tools valuable is the ability to share the screen and interact with each other at the same time. The first thing we do each day when we get to work or consider ourselves “on the clock” is to go to our shared development server and start a screen session. If we find ourselves in need of guidance, or if we have questions, the next question is “what is your screen session?” By doing this, we can jump on the screen session and interact together to see what is happening. In the process, we hand control to each other as needed.
In addition to using multiplexer applications, there are ways to share an entire desktop with your team mates. Google Hangouts allows users to share their screens and change views, and join.me allows you and your team mates to interact and pass control to each other.
Wikis and Document Shares
Wiki is Hawiian for “quick”. A wiki is a web page with an ‘edit’ button that allows you to create many pages, and link them to each other, very easily. Since Ward Cunningham invented the wiki in 1994, we have continued to see faster pages with more incremental changes. Google Documents and Etherpad are examples of document sharing where you can edit text at the same time and visualize who is editing what. This approach lets teams edit or create documents where sections can be worked on simultaneously. Changes can be examined and agreed to in real time. This is exceptionally helpful with test design, executing tests, and seeing output or anomalies together. Two people in front of a screen is great, but if that’s not an option, collaborative editing sessions can do the same thing, and there’s a paper trail to prove it.
There are a variety of chat tool options, ranging from the grand-daddy of them all, Internet Relay Chat (IRC), to more modern chat tools like GChat and Skype. All of these examples mentioned are free! Many chat tools allow recording of sessions (our group chats are archived every 24 hours). We can also set up private chat sessions outside the main groups. These options allow testers and programmers to communicate in real time. Going back to review sessions, I can see the light go on, and understand where the “A-ha!” moment occurred. Chat sessions are also good for sharing links and checking each others work for errors or missing test cases.
It’s In the Way That You Use It
With a little time, and communicating with your team, you could easily put together a broad array of useful tools that are open source and free to use. Regardless of what you use, the goal is to help others “work with me and see what I see”. Given enough practice, the process of collaboratively sharing ideas, along with active create, edit and debug sessions, will help you pick up many valuable new skills.
Disclaimer: I work for Socialtext. We make collaborative tools. Having said that, this article offers a tool agnostic approach, emphasizing goals and methods rather than specific tools to accomplish the job.