Can you do any of the following?<p>* Write a compiler of any kind (native code, bytecode, HLL-to-HLL, whatever).<p>* Write an ACID storage engine.<p>* Write a trivial OS, including the bootloader.<p>* Write any non-trivial component of a real OS kernel.<p>* Design a CPU or a microcontroller.<p>* Write a rendering loop for a 3D game.<p>* Design a secure cryptosystem out of existing cryptographic primitives.<p>I give you an A- if you can do one of these, and an A+ if you can do two or more.
In the long run, the more important factor is whether you are gaining faster than your peers.<p>The younger ones often lack perspective and breadth and depth, the older ones often stop learning or dramatically slow down.<p>If you continually study timeless fundamentals, current technology, as well as industry trends, then over time you will naturally lead tend to lead the pack.
Hmm, how long is a piece of string. It's a difficult question to answer. Why not ask your peers? If you trust them and they trust you they will be honest and you will learn. If you don't trust them leave.<p>For fun you can look at <a href="http://projecteuler.net/" rel="nofollow">http://projecteuler.net/</a>. Project Euler poses a series of problems for you to solve using a language of your choice. Of course you'll need to get your peers to do it as well but the different approaches to each problem can be very revealing. You can learn a lot about your abilities by reading the comments in the forums which are unlocked when you complete a task.<p>As a side note remember that the power of most programmers is unlocked within a team. Some 'lesser' programmers shine within a team and fail on their own. The reverse is true also. I know many excellent programmers that are near useless inside teams of non-programmers and a few that can't work with anyone.
It's not reasonable to ask to be ranked. The best programmers are those who know there is an answer to every problem. The worst ones are the ones that care about salary, lines of code, and other meaningless crap.<p>Just remember, the CS field is broad and not every has the same knowledge.
You need to be less subjective if you want a reasonable answer. Metrics are out there for things like salary, number of users, lines of code written (for open source stuff at least), number of appearances on David Letterman..