Business analysts and PMs stay at corporations longer and build salary through promotions. Programmers leave every couple of years and build salary by going to more elite and richer corporations. So a new programmer may be working at a low programmer-pay corporation early at which PMs are paid more than programmers. Eventually programmers will end up at a place where they are paid more than PMs and BAs. Even the most die hard programmer-hating director or VP can't justify paying $150k for 'people skills'.