In my experience there are large swaths of software engineering tasks that involve transforming code that are not negatively affected by ambient noise and conversation, and that are relatively easy to context switch in and out of. I realize this probably is heresy to some people but it is the reality I find for myself. That does not mean there are not also large categories of tasks that require dedicated focus and isolation, but I take issue with the claim that all coding needs to occur in a sound proof chamber.
Some concrete examples:
- Fixing or writing unit tests
- Performing (low risk) operational + maintenance tasks
- Refactoring
- Design tweaks and improvements
- Deployments
- Building simple features
- Reviewing code
I find myself (and I'm sure many others do) doing these types things in an office environment that often has some ambient conversational noise and do not feel it negatively affects my work to the point where I decide to put on headphones. And no, I'm not talking about a case where someone is yelling in my ear or someone is blasting death metal behind me. I'm talking about a normal open office where people are generally respectful of each others' space and conscious of distractions.
A single person office environment is more productive for almost everyone. But it doesn't have to be forced on you, for example there is no reason why center areas can't be left open for those that prefer them.
But in reality the best way to collaborate is to do it in pieces. You come to my office. I come to yours. We invite the team to a conference room.
Meanwhile, when I actually need to fully concentrate, even music can be distracting, so there's loss and no gain.
But only if you are not doing any work at that moment.
If you are constantly expected to be able to 'overhear' conversations while coding, I don't see how you could get anything done.