There are a few companies that advocate promoting people from within to higher ranks as they gain tenure and experience within the company. I'm not sure if this is the most efficient way to ensure you have the right people in the right place in your company.
I'm sure if you have been a manager, run your own company or ran your own company before, you will know that some people are "soldiers" and some are "generals" - some soldiers will NEVER be generals. It's often not the hard skill set that the individuals have, it's more often the soft skill set that separates these two groups.
Generals are able to connect the dots to see how details matter in the bigger picture. Soldiers usually have ideas for their own area of expertise and are able to work very diligently, ensuring that things are implemented. Imagine promoting a Soldier into the position of a General - the Soldier would know their own area really well, but they don't know how the other fields affect them and how their own field affects other Generals. There is also nobody to tell the Soldier what needs to be implemented (at least there will be less instructions than when they were working under a General); and the scary thing that can happen is the newly-promoted General will work without seeing how him and his team contributes to the larger picture (or the greater vision of the company).
There are certain skills you can train for but there are some other factors that impact a person's ability to contribute to a company - think again when you want to promote someone who has tenure and an average skill set that you know has hit the wall (ie. it doesn't matter how much $$ you pour into training this person, the output will always be around the same level), you run the risk of jeopardizing the entire department's productivity.