We have VERY rapid dev cycles, and often have to solve things as a team on the white board. We are starting to have some stuff that could be done remotely, but it is very hard to get someone remote up to speed on the vocabulary of the product.
We build things like Search Engines. Which have a Crawler, an indexer, a few dozen scorers, the front end, the Natural Language processor, the content extractor....
And all of those things have to talk to each other and be set up to run on your personal dev environment. That often means borrowing some know how from the guy next to you. That is much harder remotely.
I'm collaborating with some people on an application, too, which also consists of a few components that have to work together.
And all of those things have to talk to each other and be set up to run on your personal dev environment.
For this, we created (and keep updated) a textfile with requirements and a (terse) installation procedure a dev should be able to follow to set things up on his own machine.
That often means borrowing some know how from the guy next to you.
I once worked in a telecom company (open plan) where we also used this way of communication. Perhaps nothing wrong with it (from a social standpoint) but the senior devs were often complaining about being disturbed in their flow.
That is much harder remotely.
An alternative, which doesn't interrupt flow, could be email. But then you might have to wait hours for an answer...