"Writing software in a team is hard enough when everyone is within easy reach. Working with people based far away presents a whole new challenge. If you've ever tried distributed collaboration you'll already be familiar with the problems. Most of them rear their heads because something is missing, things we normally take for granted. Gathering round a monitor, sketching ideas together on paper, or a chance meeting which turns into a full-fledged collaboration; such scenarios are hard or impossible to replicate when you're miles apart. And this is to say nothing of all those unconscious cues we feed each other through our voice tone and body language, critical extra information which is lost in the impersonality of an email.
Such problems will only become more urgent in today's world of home-working, outsourcing, and, of course, open source software. Some solutions have been developed for some of the problems. For example, it's now possible for two hackers to code together in real-time, usually thanks to specialised editors which connect them to a shared document. The result is a kind of pair-programming, but, being distributed, there's a lot missing compared to the real thing. Critical omissions remain, like being able to tell whether your partner is currently ruminating over the code or has nipped off the five minutes to check up on his eBay bid. As another example, instant messengers have been allowing us to keep in constant touch for many years now, but can any groupware tool really replace bumping into someone at the water-cooler?"