A bumbling person on an assembly line eventually learns enough motor skills to come useful to a point. American automotive plant unions have typically made it difficult for the best of the workers to excel since if one excels (and stands out) then it shows up other workers which unions have an interest in protecting. My productivity numbers come from friends of mine that work in that industry. I have no friends that work for the Japanese car companies so I cannot say for certain that the productivity curve would not be more pronounced.
As far as thinking I am special.... I would say .... above average.... special only to my mom :o (self assessment - generally speaking). When I worked at Thoughtworks in the "early days" (15 years ago).... it blew my mind that there were so many talented developers working there at that time.... and to be quite honest it reset my assessment of myself because of it.... There tend to be what I would call "blue collar" development shops, and "white collar" development shops which reflect the management of the company more than anything. Companies which value developers, and companies that just view them as resources.... "Blue collar" shops the management view it as just hiring enough monkeys to fill the work. You can end up with programmers that have the mental acuity and skills to be great developers, if given the chance, in blue collar environments..... but they tend to be more rare there because a company that does not value it are not going to attract the best in large quantities.... they will end up with people choosing to work there for other reasons (location, just getting started, etc.).
The reason why I consider myself an above average developer is that I actually am interested in all sides of what I do. I take an interest in reading and learning from other people, learning new languages, and most importantly -- learning the industry of whatever I write software for. I don't know how many times I have run into people that have no interest in the industry they are writing programs for.... they just want to be spoon fed some specifications and then they will program to them. Unfortunately, most specifications I have seen are .... skimpy at best and sometimes a misinterpretation of what the customer wants.... when someone does not take the time to learn the industry -- they don't know what questions to ask to make sure they are actually developing what the customer really wants and not just what they said they wanted or yet worse.... a misinterpretation of what the customer said they wanted.
People that have the mentality that they are the best and above all those that they work with -- are not likely to be the best software developers. They will get to the point where they won't listen, and if you don't listen or are not open to criticism about your work then you will not learn. Software development is a life long learning pursuit, it is not some skill where you go to school and graduate and now you're finished..... I have run into many developers that don't bother to read anything more, learn anything more .... they just churn out code the same way they did last week, last year etc.
I have had programmers that you give them assignments, they ask questions, they ask the same questions.... but their ability to absorb seems to be limited.... 3 years later - they are still out classed by people fresh out of university.... You have people that .... for lack of a better word approach each assignment with a level of trepidation -- and fear of making mistakes tends to make people not very productive. If you are afraid of making mistakes, or are afraid of acknowledging them.... you also will not learn....