Software programming is primarily a mental job. Your entire work is done by your brain. Whatever your brain thinks is eventually typed by your hands on your keyboard to form the code that forms the software you're working on.
Now, the brain can process seven plus or minus two chunks of information at the same time. It is important for the software programmer to utilize as many as possible of these seven plus or minus two chunks of information on the work he is doing. That gives him the best results.
Now, imagine a scenario where there is a programmer in a room where there are other programmers, sales people, managers and what have you. To an extent, it is all right to have other programmers who respect the need for peace and quiet. But heaven help the programmer who has sales folk and managers in the same room. The primary job of these two categories of people is to talk. Often without thinking. But that's an entirely different story.
So, when you have these myriad people performing different roles in the same room as programmers, it is a sure recipe for disaster. Well, maybe not disaster, but definitely a lot of wasted man hours. A few chunks of the seven plus or minus two are taken up by the various conversations going on in this room. This greatly debilitates a programmers ability to do a good job at what he's doing.
Even if companies cannot afford to give programmers individual, enclosed rooms, they should seriously consider giving a group of programmers separate rooms where peace is guaranteed.
This will tremendously increase overall productivity in the company.