I'm a cynic and tend to believe that in most cases it comes down to a belief (rooted in short-sighted thinking) that open-plan saves money by compressing more people into a given number of square feet of office space. That is, I think few - if any - managers actually believe that open-plan is better for productivity or anything... they just think it's cheaper, and they don't bother balancing the cost savings with the other factors.
The cost of commercial rent is minuscule when compared to the cost of engineering labor. If a business believed doubling floorspace would genuinely increase productivity by even 10%, it would be a no-brainer financially.
You've got to cut what you can, not necessarily the biggest expense.
Now imagine that same space, redesigned with walls and doored-offices. It would be a rabbit warren, and not only would most people not have a window, you couldn't even see a window while walking around.
Which got me thinking. A compromise between open plan cubes and rabbit warren offices would be to slightly enlarge the cubes, and extend their walls up to the ceiling, but the wall material above chest height would be glass, so natural light has a chance to distribute throughout the space.
Reportedly Apple was going to put cubicals in the IL buildings, but decided to go with hard-walled offices because it was cheaper in the long term.
(I haven't worked there since '94 or so -- for all I know it's wall-to-wall cubicals, with three minions to a cubie and the fourth hunkered under the table beside the power strips).
I think what changed was cubical walls are much cheaper and easier to move and some managers like being able to walk around and keep an eye on everyone (Lumbergh).
If you're working primarily alone on difficult engineering problems, with well-defined specifications and a clear division of who owns what part of the code, then (from my experience) solitary offices are more productive. Communication doesn't need to be as high-bandwidth, and concentration needs to be deep.
On the other hand, there are many environments that are different. If your organization intentionally has low-fidelity product requirements, the cost of communicating with business stakeholders needs to be low. If you intentionally eschew code ownership, engineers will frequently be working in areas of the codebase they haven't worked in before and need to talk to colleagues who know it better.
Open plans make concentration harder and communication easier. Closed office plans are the reverse. I think no office plan is "better" than the other, but rather our office plan should fit the work style of your organization.
I actually mostly agree with that in a sense. I won't deny that - at times - there can be advantages to the increased communications bandwidth of having everybody in one small space, communicating freely. I just don't think it's the optimal setup for all the time.
To elaborate on what I said above, if Fogbeam Labs had funding and employees and all that jazz, I would plan on putting employees in private offices. But, I'd also want to accompany that with plenty of open space, with tables, chairs, couches, and lots of big whiteboards-on-wheels, so that people would have a place to spontaneously self-organize into small groups to collaborate on an ad-hoc, as-needed basis. But yet, everyone would have the option of retreating to their private office for periods of deep thought and intense focus.
The thing is, I think that it would be better to put the open-space lounge like areas near the outside walls of the building, where the natural light is... which would mean putting individual offices near the core, away from the natural light. On that point, I'd love to hear the opinions of other HN'ers. What would you prefer, a private office with less access to natural light, and the lounge-like area described above near the windows, OR an office with a window, and the collaborative space in the middle, away from the natural light?
The real reason for cubicles and open floor plans is that it makes the bean counters happier. Everything else is rationalization, IMHO.
In my experience, clarifying a requirement or requesting a feature always takes far less time than coding it up. As a developer, I'd rather you call me over to your office and we spend 30 minutes discussing what you want, then I go back to my office and spend an hour working on it and get back to you if I have any more questions.
If the business stakeholders are changing requirements and coming up with new ones so often that they need constant communication, then there's a problem. Hold a meeting to get the requirements nailed down, then give the developers some quite time to work.
For developer-developer questions I've found it's almost always easier to ask questions via email, instant message or IRC because of copy/paste.
So in other words, all else equal, they reduce the signal to noise ratio.
Most of our tasks are either very individual and require good mental flow (like programming), or are done in pairs. The open layout let's us communicate when we need a pair. We also have designed our workflow so that almost all of the tasks we complete can be done by any member of the team. If someone is bored or sick of what they are doing, they can just bounce on to another task, as long as it doesn't screw up the timeline. If two people are bored, they usually just...swap.
We're able to keep a level of friendly camaraderie really easily. We all hear what is going on, so when someone needs to pick up the slack on a project, we all know the requirements.
It works well. But everyone on my team is the sort of person who it'd work well for.
Where do ya work, might I ask?