I don't get this new obsession with "let's just put everyone in a giant room so they can collaborate". I think it's a cop-out to not get bigger/better laid out offices.
Developers need to write code either alone or in pairs. Large places breed interruptions, killing productivity. All these experimental ideas with unassigned offices where anyone uses them when they need to don't work either because people will simply squat on them.
If you want your developers to do actual work instead of being distracted, give them individual offices + lots of shared meeting space with whiteboards. This is the gold standard. Anything less (e.g.: n developers per office) will reduce productivity.
Where baseline is the minimum fraction (0 to 1) of work a developer can get done even while being distracted at all times, and ALPHA is a constant left to the reader to determine. productivity is measured in useful hours per week for the whole team.
In my experience (in bigger companies), if you get to know (to a level of trust) the real estate people and then happen to ask them, they'll tell you the decision is top down and cost-driven. 100%. It's all about square feet (meters) / employee.
That would be the immediate, upfront cost. A real/realistic assessment of expected employee productivity is hard to find. (Though reference to various external "studies" and "assessments" may be made. "Best practices", "industry standards/norms", etc.)
The internal publicity is heavily or entirely about "collaboration" and "facilitation" and "workflow", etc. Whatever. Just ask the people over in real estate (if they trust you).
Some people prefer an open office environment. I know I do. I just from a job where our whole team sat in one room to a place where we all have our own offices. I kind of hate it. It's not that I'm any more/less productive, it's that all kinds of other conversations just don't happen.
"Did you see that article on hacker news about X?"
"Hey, what do you guys think about this design?"
All of that stuff can happen, but you have to force it to happen by leaving your office. It doesn't happen as naturally. You might think of these as distractions, but I think these are the type of interactions that make people more invested and passionate.
Also, I get WAY more distracted when I have my own office. I find it really easy to just sit and browse the Internet instead of working. When my peers are around me it's harder to get lost on the Internet because I don't want to look like a slacker.
To each their own. I can understand the advantages and disadvantages of both.
I think the relatively recent thing is putting everyone in an open room with nothing really separating you from the person sitting at the long table next to you, as opposed to putting people in cubicles which at least have a tiny suggestion of separation.
I'm not sure it's a new obsession -- I've worked in those environments eons ago.
We have a combination of open environment + offices now, with several people sharing offices. Privacy quite often leads to productivity, but I've found it ebbs and flows with people over time. Sometimes a few folks need to be out in the atrium or in the common area, it just really depends. No judgment from us, if they want to crawl in the vent and work, get to climbing!
We always try to make sure we can accommodate most everyone's wishes for workspaces.
I agree that distraction and interruption are giant problems, but I don't think that private offices are the only way to solve that.
I'm much happier in team spaces, where everybody who's involved is nearby. You do have to be disciplined to make it a good environment for coding. E.g., requiring that off-topic conversations happen elsewhere, and that people be generally quiet and respectful. But it can definitely work, and it makes collaboration 10x easier.
Developers need to write code either alone or in pairs. Large places breed interruptions, killing productivity. All these experimental ideas with unassigned offices where anyone uses them when they need to don't work either because people will simply squat on them.
If you want your developers to do actual work instead of being distracted, give them individual offices + lots of shared meeting space with whiteboards. This is the gold standard. Anything less (e.g.: n developers per office) will reduce productivity.
Here's my formula:
Where baseline is the minimum fraction (0 to 1) of work a developer can get done even while being distracted at all times, and ALPHA is a constant left to the reader to determine. productivity is measured in useful hours per week for the whole team.