This is interesting. I do think there can be a problem around the concept of "competent" vs "average". For instance, consider a poll like this: On a scale of 1-10, where 1 is inexperienced, 2 is competent, 3 is above average, and 4-10 are various levels of good-brilliant, where do you rank yourself?
My guess is that even with these explicit instructions, people are reluctant to rate themselves a 2. I can see a few reasons why higher scores would actually indicate that people see themselves as average. For instance, some people might view anything under 5 is incompetent. In this case, a 7.5 would indicate the middle of the range, which is actually 5-10. Alternatively, people might think of grades in US based schools, where 75% is a C, technically "satisfactory", but essentially failing in an era of grade inflation. In many PhD programs, an A- (91%), is a shot across the bow, and a B+, (88%), is meant as a vote of low confidence. This could lead many people to rate themselves as an 8 or 9 simply to indicate their averageness.
Lastly, programming is still a young field with a wide variance of talent, but I think we need to be more of a "paper hat" distribution than a "pyramid". To explain, I don't think we're a field that works well with a large, unskilled base, that slowly narrows to a tiny elite at the top. I think the baseline to be a competent developer is quite high. I know, I read about these "CRUD" apps, and what can I say? The framework churn, the challenge in communicating with clients who understand business but aren't familiar with the unforgiving logic of a program, the need to deal with deadline pressures under uncertainty, the challenges of data integrity and testing coverage... honestly, simply reliably deploying a relatively simple web app is considerable, in my opinion. This is why I go for the "paper hat" distribution - devs are largely on a long, flat curve, with a small little mini-pyramid in the middle, where the true innovators live. In short, maybe we are a field represented by wide, short rectangle of 1's-3's, with a minuscule steep and thin little triangle of 4-10s popping up at the top. However, the 1's really are smart people who are learning, and 2-3 represents quite a valuable and talented developer.
This seems like a really significant issue. First, because "5 as median" isn't a universal grading scheme, and 50% is often failing. Second, because this poll didn't specify what the numbers mean.
The bounds of "programming ability" are basically undefined. Does 1, being the lowest, mean "cannot program"? Does 10, pain-scale style, mean "best programmer imaginable"?
Or do the numbers represent deciles of skill? If so, do they include everyone who has written code? Only people who have completed a substantive project? Only people who have been "programmers" in a non-hobby setting? Only in a non-hobby, non-academic setting? Only people taking this quiz?
And worse, it's a meta question. We aren't guessing what the survey meant here, we're guessing what the respondents thought it meant - which means that the skew may be totally accurate under their chosen boundaries! Keynesian beauty contest and all that.
So this is an interesting result, but I can't really use it as data about self-reported skill, only about interpretation of surveys.
My guess is that even with these explicit instructions, people are reluctant to rate themselves a 2. I can see a few reasons why higher scores would actually indicate that people see themselves as average. For instance, some people might view anything under 5 is incompetent. In this case, a 7.5 would indicate the middle of the range, which is actually 5-10. Alternatively, people might think of grades in US based schools, where 75% is a C, technically "satisfactory", but essentially failing in an era of grade inflation. In many PhD programs, an A- (91%), is a shot across the bow, and a B+, (88%), is meant as a vote of low confidence. This could lead many people to rate themselves as an 8 or 9 simply to indicate their averageness.
Lastly, programming is still a young field with a wide variance of talent, but I think we need to be more of a "paper hat" distribution than a "pyramid". To explain, I don't think we're a field that works well with a large, unskilled base, that slowly narrows to a tiny elite at the top. I think the baseline to be a competent developer is quite high. I know, I read about these "CRUD" apps, and what can I say? The framework churn, the challenge in communicating with clients who understand business but aren't familiar with the unforgiving logic of a program, the need to deal with deadline pressures under uncertainty, the challenges of data integrity and testing coverage... honestly, simply reliably deploying a relatively simple web app is considerable, in my opinion. This is why I go for the "paper hat" distribution - devs are largely on a long, flat curve, with a small little mini-pyramid in the middle, where the true innovators live. In short, maybe we are a field represented by wide, short rectangle of 1's-3's, with a minuscule steep and thin little triangle of 4-10s popping up at the top. However, the 1's really are smart people who are learning, and 2-3 represents quite a valuable and talented developer.