I worked for a company that gave me raises to bring me up to what I was worth for a few years. Then they stopped, and 2-3 review cycles is exactly how long it took me to catch on. By the time I left, my new job paid me 40% more than the old one.
And even before I got my first standard programming job, I knew that proper raises only come from changes jobs in this industry, and I was prepared for it.
I would have loved to pick a company and stay put, but companies just don't keep up their end of things.
In the end, it works out, though. I get an exciting new job every few years, and the fact that everyone is doing this makes sure there are plenty of job openings all the time.
I've yet to figure out what the companies get out of it, other than a temporary cost cut. (They end up spending the money to train the new guy.)
Another thing I want us to do, is define a career path that allows technical people to continue to advance in pay and prestige, without forcing them into becoming managers. But that issue will be a long way off for us (heck, we're a pre-funding, bootstrapped startup right now... most hiring/retention issues are quite a ways off for us!)
This may have veered away from what original article was proposing, so I may be muddling the conversation here a bit.. but I definitely believe we can build a company that has a strong "promote from within" culture, that provides a very supporting environment that helps people grow, and provides a career path for technical people that doesn't require them to move into management in order to advance their careers.
It's not economical to promote and pay more just for the sake of promotion.
But you don't do it just for the sake of promotion... you do it to keep a person's compensation in line with the value they create and to stay competitive with the market. As people gain new knowledge and skills, and gain experience, they become more valuable.