I know opinions differ. My best experiences have been when sharing a office with one developer, both working on the same project. That way, if we had to discuss something, we would not disturb anyone else, and if not, we both could work in peace. It was easy to see how busy and "deep" the other guy was, and not to interrupt him at the wrong time.