The flip is also true. It allows companies to pay more, too.
If you publish your salaries, and along comes a super-talented programmer who asks for more than standard, but has unique talents that don't really fit on the standard "scale", then you can bring them on board, without creating resentment, etc.
I've worked at a company with standardized salaries, that lost out on hiring the best programmers, simply because their salary system (everybody's titles linked to salary grades everyone knew) was too inflexible.
So you're bringing somebody exceptional on who will create some amount of value, and you're willing to compensate them appropriately for that. But wait, the rest of your team will be resentful!
There are two possibilities here: 1) You're paying everyone else less than they're worth to you, in which case they should be resentful; or, 2) You're paying everyone else what you think they're worth to you, but you're unable to convince them of that, in which case your problem isn't that your employees know each others' salaries, your problem is that your employees don't trust your judgment-- or perhaps that you have poor judgment.
Of course any compensation program which isn't flexible enough to appropriately reward employees for the value they create is flawed, but that has nothing to do with whether or not those rewards are public. In fact, I'd argue that a traditional system where compensation is determined by closed-door negotiations with asymmetric information is uniquely unlikely to do so appropriately.
Personally, I've shared my salary with like-minded coworkers willing to help each other negotiate the best terms. Never shared with most people, however, because they've internalized irrational ideological barriers to doing things like this.
Yes, it does. If that is the reason, then what is the motivation for the employees? Explaining why employers want employees to keep it secret doesn't help, because it is the employees keeping it secret that we are talking about. You need to explain why the employees are keeping it secret, given that you've effectively described why employees would not want to keep it secret.
(I'm not saying there isn't such a motivation. Clearly something is at work here. I'm saying you're explaining the motivation of the wrong set of actors.)
It is usually against the company's policy, and sometimes you have to sign some kind of NDA about it. But it's also providing a kind of "comfort zone" to the employees - if you don't speak about it you assume everybody makes almost the same as you so you don't worry about it. Most people don't like changes, and finding that you are underpaid makes you worry about searching another job (where you could be underpaid again, as it's even harder to find the payscale from the outside).
Access to information would also mean that employees lobbying for an increase, would have to justify their performance against their peers. That's a lot more personal and objective than simply stating, "I think I'm doing great."
Essentially what I'm saying is that I'm not sure I agree that open salary information would result in all salaries moving upward.
Interesting, do you know the sociological explanations, or know what I can read to learn more? (As a sheer guess, I'd imagine it's part of professional conditioning, like that described in Jeff Schmidt's _Disciplined Minds_. Working-class people might not have this taboo. But I don't know.)