I've been saying this for years now, so its somewhat comforting to see someone else repeat it with a bit more evidence than my personal anecdata.
The main reason, in my opinion, is that corporate promotion practices have not responded to the incredible amount of intercompany competition for labor. At my current employer, the promotion process is a 3 month nightmare which requires an incredible amount of an employee's (and his/her manager's) time, including the compilation of a detailed packet which describes the reasons for why the promotion is deserved and involving an approval process through a separate committee. Meanwhile, any software engineer at one of the big guys can walk down the street to one of their competitors, say "I want a job," and probably have a seat and a 15% raise by the end of lunch time. With pay, benefits, perks, and culture being about the same at any of these companies, its easy to see why a career-focused individual would choose to jump ship every two years.
The main reason, in my opinion, is that corporate promotion practices have not responded to the incredible amount of intercompany competition for labor. At my current employer, the promotion process is a 3 month nightmare which requires an incredible amount of an employee's (and his/her manager's) time, including the compilation of a detailed packet which describes the reasons for why the promotion is deserved and involving an approval process through a separate committee. Meanwhile, any software engineer at one of the big guys can walk down the street to one of their competitors, say "I want a job," and probably have a seat and a 15% raise by the end of lunch time. With pay, benefits, perks, and culture being about the same at any of these companies, its easy to see why a career-focused individual would choose to jump ship every two years.