I think the key word here would be 'specialization'. You may never be in the all-time top 10% of software engineers. Most who fall into that category are probably working at google/sun/ms/ibm/redhat/nasa/etc or making a shitload of cash doing it for themselves.
That's not necessarily reason to despair though. You may still be able to make yourself valuable by being in the top 10% of software engineers who also understand some particular business domain well (finance/biomed/farming/basket weaving/whatever). The same applies to specific types of technology that one comes into contact with (SAP, Oracle, Lotus Notes, xxx obscure vendor product etc)...
I believe that there are an unlimited number of niches that people can fit into, and that as long as you're prepared to work hard to find a niche that someone is demanding, you will do well.
For example, your niche might be software engineers who can code in C & Java, understand basket weaving, have done embedded development on an ARM CPU, and have experience with Oracle. It's unlikely you'll be at the top of your field in any of those individual specializations, but getting in the top 10% of the intersection set might be achievable and profitable (at least in the industry of manufacture of industrial basket weaving equipment).
Of course, the downside is that niche markets have a habit of disappearing quickly as particular skills fall out of favor, so if you're going to play this game you need to be prepared to be constantly up-skilling, but that's what keeps life exciting, right?