A few other reasons (all that I've seen in some form in the real world): * Insufficient raises. This is by far the most common reason, but it's been discussed in this thread well already so there's no need for me to dive into details here. * Over-rewarding of managers and under-rewarding of developers. Very rarely are the management tracks and technical tracks actually equivalent. For instance, managers are granted e…
That's a really, really tough problem actually. Businesses naturally want people to work on things that they are already very good at, to keep productivity high.
This is especially important in software consulting houses that churn out apps and whatnot without their own products, because their whole business scales only by the factor between the hourly price customers will pay for their work and the salary the developers are getting for that said work.
Which is not to say that I wouldn't agree with your point. It's just that I can also see how painfully expensive not going that route could (i.e. shoehorning) become for such a company, so I'm kind of sympathetic to their apparent reasoning behind it.