My preference order is:<p><pre><code> private offices > open office > team rooms
</code></pre>
This ranking might sound odd, but bear with me: of course I like having a space to myself. It's not just the noise: having my own space affords me a degree of privacy. I don't like to feel watched. In environments where I don't have a private office, I end up doing most of my heavy-duty coding from home.<p>Now, let's look at completely open offices and team rooms. In <i>both</i> environments, I have to deal with add conversations, people chewing with their mouths open, doors opening and closing, and so on. In both environments, I pay a cognitive price. <i>But</i>, in a completely open office, I might overhear interesting conversations from other teams and become aware of interesting developments. In a team room, I'm isolated from everything except my team, so I don't learn much.<p>I'm very skeptical of the idea that team rooms facilitate collaboration. I've never been much for low-level high-frequency collaboration --- pair programming is punishment in the afterlife. Collaborating at a high level is fine, but that kind of collaboration is best done asynchronously over some kind of durable medium like email, not synchronously by shouting across a room.<p>If I can't have a private office, I'd prefer a completely open warehouse-like environment that at least maximizes the benefits of an open office. A team room has most of the same costs and few of the benefits.