If I had a choice I would choose a private office every time.
My current area at work is open and I have to on occasion bring ear plugs to keep the noise down to a level where I can concentrate. There are group meetings, conference calls on speakerphone, and loud personal conversations happening all the time. IMO, if it comes to needing ear plugs then the one purported benefit of working in an open area is lost since you can't really be sharing/collaborative if you've closed yourself off.
From experience, my most preferred to least preferred office options are
(1) Work from home (2) private soundproof office with a door (3) shared sound proof office (2 or 3 people in a medium/large room) with a door(4) open work spaces with a maximum of 5-8 people (5) standard cube (6) crowded and noisy "open work spaces" where you can't hear yourself think / get interrupted all the time, especially the "agile" version with enforced pairing and the "buzz of conversation" and so on.
The best options give you silence. The least inundate you in noise.
Read a book.
There are obviously no books about those topics (well, there are some about the latter, but they're all wrong, and we have experimental data to prove it). And even if they were, they'd be out of date before they were published. Google's indexing system changed completely when Caffeine was launched last year - the only way to get information about it is to ask the people who're responsible for developing it. And the ecosystem surrounding the web is continually changing, and we keep running new experiments to keep up with it, because things that we were absolutely certain were true 5 years ago no longer are.
Well, what are they?
I've toyed with the idea of getting permission to release some of the results we've discovered, in maybe a blog series like what Crockford did for JavaScript at Yahoo. Google also derives a strategic advantage from the rest of the web being fast, and IMHO the benefits of making everyone else fast outweigh the benefits of being faster than everyone else. But I've already got a 20% project that takes up like 50% of my time, so I don't have time to organize something like that. Maybe later.
If a question isn't an emergency, I queue it up by sending email. If it is, I ask in person, fully realizing I'm fucking up their day and hoping that doing so really is in the best interest of the company. I also only check my email a couple of times per day and wear heavy closed headphones for coding, because those elusive moments of flow are about half of what I live for.
This is interesting--I would never feel this strongly about being interrupted unless someone was being overtly rude or annoying. I want to be productive, but I don't feel obligated to plow forward relentlessly hour after hour. If someone breaks my flow to ask a reasonable question, I don't think of it as a big deal. I think true flow is a lot less fragile than many give it credit for. It doesn't vanish anytime a pin drops nearby.
I think there's something to be said for the benefits of a less serious and more relaxed mindset. Working steadily, but not getting all caught up in "how productive am I?" like you're an assembly line robot. Coding is as much an art as a job and often you can be more productive by playing ping pong and chatting for 6 hours then having an insight that saves you 100 hours in the long run because your mind makes a lateral leap about the architecture that almost definitely wouldn't have happened if you had just sat at your desk typing all day.
I still see the benefits of private offices because it can be very beneficial to have the option of silence and intense focus when that is what you need to get over a hump, but it also seems like a lot of programmers are missing the great potential rewards of real creative collaboration--probably because they are used to collaborating in an uptight business-guy kind of way. Instead, they should take a cue from other creative people like artists, poets, and musicians, and allow their minds be free a good portion time through relaxation, speaking freely, and gasp having plenty of thoroughly unproductive fun. The gains in inspiration will easily outweigh the lack of perspiration, and life will become more enjoyable to boot. Isn't that ultimately the point of all this toil anyway?
But I've also found that my stress level just dropped so much when I acknowledged that I get nothing done during business hours, and so ought to just go in and accept the fact that my job is to help other people get things done. I can still fit in 2-3 hours after dinner, once everyone's gone home, and I found when I was doing my startup that 3 hours is about the maximum time per sitting that one can spend doing high-level intellectually creative work without getting totally burnt out. The unfortunate part is that it time-shifts my day (I go in to work around 1:00 PM and work till 9 or 10 at night), which means I only see the sun for half the day. But with enough practice (obviously failing now, since it's almost 3:00 AM), maybe I could swing my sleep schedule around and just have the mornings off to do whatever I want, then go to sleep as soon as I get home from work.
However, if someone non-technical comes and asks me something (which usually requires a lot of parsing) then that will require a context switch and I will loose a chunk of productivity.
I was having a conversation with a dev about building an iPad app in my spare time and another dev sitting near by jumped in and argued that I should focus my efforts on the Mac App Store since it would be new and relatively easier to get noticed. 3 months later and I have an app selling well enough to quit my job if I really wanted to. This golden little side comment would not have happened if we all had offices.