Note: Below is a guest post from Larry Silverman, Chief Technology Officer, TrackAbout. –Joey
Thank you for the opportunity to contribute to the Los Techies community. This site is a great resource, and I’ve enjoyed reading many articles published here in the past. I’m honored to have the opportunity to contribute something back.
I wrote the following article for my development team and it appears here exactly as it does on our internal dev wiki. I mention and link to several third party products by name, and I feel compelled to say we have no stake in these products other than that we’ve found them to be useful. We are constantly changing the mix of tools we use to better facilitate communication, and it’s entirely likely that we will have moved onto other tools by the time you read this.
I welcome any feedback and lessons you may have learned on your virtual teams.
Chief Technology Officer
Our development team is completely virtual, with no two developers in the same physical location. This poses some obvious communication challenges. Luckily, we have many excellent tools at our disposal, such as IRC, IM, Skype + VOIP, mobile phones, landlines, remote desktop tools, email, and so on. Here are some suggestions and rules of thumb we have learned over the years for effective communication in this kind of environment.
As you read this, no doubt you’ll think to yourself, "well, duh". These suggestions may seem rather obvious. But recognizing them and practicing them are two different beasts.
Be aware of the cost of distractions
As technologists and developers, we tend to be at the forefront of the "multi-tasking" movement. Unsfortunately, and somewhat counter-intuitively, some recent studies (nytimes.com) show that multi-taskers are considerably less productive, not more. Distractions and multi-tasking can heavily impact our productivity. We should strive to be vigilant and guard against being derailed in our daily work.
A good rule of thumb is to batch your questions for others whenever possible. I learned this rule the hard way, as a green consultant on my first job out of college. After my fourth visit to my manager’s office in a single morning, my exasperated manager finally exclaimed, "Holy freaking ****, would you PLEASE batch these questions?!" Whoops.
It’s quick and easy to IM someone when you need an answer to a question, and we’ve become quite accustomed (addicted?) to the instant gratification that IM and texting provides. But, if you need to ask a co-worker a question, stop and consider whether you might have more related questions in the near future. Can you proceed in the meantime without an immediate answer? If you batch several questions together and ask them all at once, you’ll have done the askee a favor, as opposed to peppering him or her with questions over time.
Consider emailing questions rather than IMing if appropriate to allow the recipient to answer the question on his/her own timetable. That having been said, it may very well be that you need a particular answer ASAP, so use your judgment.
Use the right tool for the job
We use IRC. We have a channel for #dev and a channel for #support. All the developers sit on both channels, all day. Our IRC channels are like our virtual water cooler, and we do occasionally like to amuse ourselves and our co-workers there. It can keep things fun.
An IRC channel is a broadcast medium, so it’s great for when everyone needs to hear what you have to say. It’s not so great when you need to address only one person, and it’s horrible when you distract everyone else on the channel when intending to speak to just one person. When you need to address just one person, private message them or use a different IM system instead.
Consider configuring your IRC client such that you can quiet it down when you need to get work done. You might, for example, configure your IRC client so that it’s quiet when minimized, but still chirps or does a toaster popup when your handle or specific keywords are spoken. That way you can get work done and not miss anything important.
If you’re having a hard time explaining a concept, there are dozens of free online collaboration tools available at your disposal.
* For remote desktop sharing, we used VNC in the past, but have switched over to Microsoft SharedView recently, leaving VNC only as a backup.
* We use Google Apps at our company, which provides for real-time collaboration on documents and spreadsheets.
* Try an online white-boarding session
* Collaborate on a screen or page mockup using the excellent Balsamiq Mockups
* Flowchart something using Gliffy, Visio or Powerpoint over remote desktop.
* A couple of us recently picked up some inexpensive Wacom tablets to try out picture drawing as a quick communication tool.
* You can draw picture on piece of paper and scan it, or take a picture with your cellphone, and upload it to a disposable file service like imgur.com or drop.io.
* You can paste a bit of code to pastebin for discussion.
When you do need to transmit sensitive information, do it securely using an encrypted channel. For IM, if you are a Pidgin user, consider enabling the Pidgin encryption plug-in or installing the separate Off-the-Record messaging plug-in. Hamachi chats are encrypted, as are Skype chats. Never send passwords in the clear or through email.
Know when to escalate
Don’t hesitate to escalate from IRC/IM to a voice channel to save time. If the IM starts to get too long (or your hands are cramping), just switch to voice and knock it out. A simple "skype?" says it all.
Be conscious that misunderstandings can blossom seemingly from nowhere in chats and emails. If you sense you are being misunderstood or a conflict might be brewing, switch to voice immediately. Humor and wit are especially easy to misunderstand in text.
Don’t be afraid to declare some "heads down" time and "go dark"
If you need to focus, it’s ok to "go dark". By this I mean quieting, disabling or shutting down services that can be distracting and only checking them periodically. Some of us have production monitoring responsibilities, so we can never really go totally "dark". But for others, it is an option that can afford some much needed focused development time.
If you declare you’re going dark, then everyone knows they can get you via phone if absolutely necessary.
Don’t let your IM client "lie"
The idle status features of IM clients are useful to us, so leave them enabled. That is, don’t configure your IM client so that it always looks like you’re active. It’s OK to be idle; hey, we all go to the bathroom, or take some time to read a couple chapters of a book, or whatever. What’s frustrating is needing an answer from someone, seeing their IM says "active", pinging them, then sitting there waiting and wondering where they are. In a physical work environment, if someone dropped by your office, they’d be able to tell immediately if you are idle or active just by looking. Let’s use the idle status to mimic that in our virtual environment. Consider reducing the amount of time your client waits before setting you "idle" to just a few minutes.
* If you are asking someone else to Skype via IM and they agree, then you initiate the call. Following this simple protocol eliminates the confusion regarding who is supposed to start a call.
* Use a USB or Bluetooth headset, not a headset that plugs into your computer’s audio in/out jacks. Those in/out jacks are usually very noisy as their analog-to-digital converters are sitting inside your machine, amongst a maelstrom of other electromagnetic activity. It’s also a pain to be constantly plugging and unplugging your headset or your regular speaker system. Bluetooth headsets are fine as long as they don’t introduce interference and noise.
* If your webcam has an integrated microphone, make sure it’s unidirectional and won’t pick up sound coming out of your speakers. Feedback and echoes suck. A headset is likely the better choice.
* Map those hotkeys! By default, Skype’s hotkeys are not enabled. I turn them on so that Alt-Up picks up a call and Alt-Down hangs up. Additionally, I map a key combo (for me, it’s Ctrl-Alt-Z) to control muting on/off.
* Try to remember to mute when you’re not speaking. Some of us type REALLY LOUDLY, or have squeaky chairs, or live in creaky houses with creaky floorboards. Or perhaps you live on a busy street and like to have the windows open. Or, you’ve set up shop in an aviary. Other peoples’ noise is distracting, and if your noise reaches a certain level, it can cause others to be cut off.
* Don’t breathe into the microphone. Just … don’t. Move the microphone away from your line of breath. Please.
* Keep cell phones away from headset wires. There’s a tell-tale sound when someone’s iPhone is resting near a headset wire, and everyone on the call can hear it.
* For that matter, be careful of any wires that are draped across your headset wire. Some devices and wires will induce noise. Not all headset wires are adequately shielded, and shielding can spread out inside the cable with bending over time.
* If you don’t have the horsepower, try not to run anything that will exercise your CPU while you’re on Skype. Sometimes it’s unavoidable, like when you’re hosting a remote desktop session and a Skype simultaneously. However, kicking off a build and sharing a torrent while Skyping and remotely displaying your 1920×1080 screen has the potential to make you sound like you were sucked into an inter-dimensional wormhole and are being extruded through the event horizon of a black hole. In other words, it sounds kinda bad.
Over time we’ve adopted a small handful of common protocols that we use daily:
brb = Be right back. You are stepping away from your desk for a little while. You might also change your nick to something like "yourhandle_away", but we don’t remember to do that very often.
afk = Away from keyboard, see brb
back = Hey, you just came back!
otp = On the phone. Someone messages you while you are talking on the phone. You can’t respond in detail immediately, but you want to acknowledge their ping and you’ll get back to them later.
Try to keep your IM statuses accurate.
"lunch", "brb", "otp", "in a meeting", "do not disturb" are all useful statuses.
The bottom line is one of consideration — be considerate to your fellow co-workers, minimize distractions and time wasting, and try to think, "What would I do if I were in a physical office environment?" (WWIDIIWIAPOE™)