I suspect that this would end up breaking down along lines of years-of-experience, with narcissists slightly tilting things towards the higher percentiles. :)
Software engineering has so many different specializations that it's possible that everyone is better in different ways. I might not be the best at solving problems such as the ones on TopCoder, or probably not the best at working with hardware, but if you ask me something specific about bioinformatics, I know that domain fairly well.
I think it's strange to say you're better than 75% - 100% of all coders when you can't possibly have the knowledge about every field and every domain. All things considered, I'm definitely in the 0 - 25%.
The Lake Wobegon Effect:
http://en.wikipedia.org/wiki/Lake_Wobegon#The_Lake_Wobegon_e...
Dunning–Kruger effect
Seriously though, your perception depends very much on the quality of your peers. I'm lucky enough to be immersed among the very best, so the average developers I regularly interview seem - to me - incapable of programming their way out of a paper bag, even though they hold normal positions in normal companies, presumably successfully.
$ python
>>> import numpy as np
>>> data = np.array([2, 1, 3, 2, 100000])
>>> np.mean(data)
20001.599999999999
>>> np.median(data)
2.0Actually, I hate being the only programmer. I love my job. I love what I do. But if you're the only person there and you get stumped -- you've got no one else to go to. You're both the "dumbest" and "smartest" person in the room and that doesn't workout well sometimes.
I want to work somewhere that I know the least among the programmers to that I can continue to grow more easily.
[/end random rant]
And I'm sure there's a whole range in between. Perception of ones skills don't always (may I say rarely) match up with their actual skills.
Personally, I think I'm average. There are moments where I think I did something smart, but they are fleeting. Is my perception accurate? I have no idea, I've never been graded by someone with far superior skills than myself. I'd consider myself insecure with my skills, but always striving to do the best I can.
However I will say, your ability to admit insecurity about your skills/acknowledging you could be better probably places you _above_ average! The scariest devs are the ones who think they're very good, but in reality are poor. For example I know something I'm really weak at is writing good multi-threaded code, I try and keep things as simple as possible, but I know other people who think they can write great multi-threaded code, but spend vast amounts of time debugging deadlocks.. Hmmm
I'm convinced that we all eventually learn enough to realize we simply don't know anything :)
I'm in a traditionally non-coding field, so my ability to code is significantly above average compared to them on the occasions that I do sling code in order to help solve a problem (I would be one of maybe 2 or 3 in an office of 100-150 that would be proficient in this). On the other hand, I'm probably well below-average if you compare me to anyone who actually codes for a living.
See the oxymoron?
I think it's the same in the programming land.
I can find people who think i'm brilliant, meanwhile I know that plenty of people here wouldn't hire me to bring them coffee. It depends on your perspective I suppose.
Perhaps this is because I have a few smart colleagues, or perhaps it is because I don't actually feel better than a peer of mine.
It's quite annoying not knowing where I rank.
Piers are raised structures, including bridge and building supports and walkways, typically supported by widely spread piles or pillars.