I think the op's point was completely ignored: Different people progress at different rates. When you're in high school, you have roughly the same amount of schooling experience as your peers. That doesn't change the fact that you may be taking advanced classes while they take remedial ones.
It's easy to accuse the op of arrogance. And who knows, maybe he is arrogant. But in the end, that's just an ad hominem and is insufficient for dismissing his point, which I believe is a legitimate one.
I think the OP missed the bigger point, which is that knowledge comes at various speeds based on an individuals ability to absorb learning, but experience comes from hours invested and the variety of situations experienced.
The OP seems to have conflated the concept that someone asking for a certain number of years of experience are looking for a particular subject matter knowledge level, when they are really looking for someone who has experienced more variations.
When people talk about "What is the value of a college degree? I can already write code with the best of them!" they conflate what they know as equivalent with experiencing different things. Good college programs go through a lot of different scenarios quickly and that is how they substitute for some experience. But any trades person will tell you that learning the trade is both knowledge and experience. The former tells you how the latter tells why and with luck gives you the wisdom to choose the best "how" out of a number of choices.
It takes certain skills to be an effective "intermediate software developer." (Here I use the word skills very generically, so in particular it includes the things that you call experience.) If a hiring manager has found that many people have those skills after 3 years of work, it is probably true that some people have those skills after 2 years of work.
Therefore: the OP might have the skills to be effective at the job he wants. So for God's sake can somebody just give a good-faith answer to his question? The amount of condescension he's getting is ridiculous.
"So for God's sake can somebody just give a good-faith answer to his question?"
I think the point of the response was the question cannot be answered.
Specifically he writes:
"How can I overcome the assumption that I do not have the skills required because I do not have the 'right' number of years of experience?"
The answer is "You cannot, it is an assumption by someone you don't know." Since he is not asking "Should I ask a friend of mine that works at this place and knows my skills put in my resume even though I don't have the 'right' number of years of experience?" We could all say "Absolutely." Referrala are great because the knowledge is first person and in depth.
Our authored followed with:
"Are skills directly proportional to years of experience?"
And the answer to that is "Yes." Is the constant the same for everyone? No. But generally some hiring manager has put out this number because he's found folks who have that land in his range of what he wants for this job. But its easily shown that someone with some experience has some sigma greater skill at the job that someone with zero experience, so it seems pointless to simply say "Yes" here.
On the other hand, I think giving a range to 3-7 years implies that many people have, after 3 years of work, the skills that others have after 7 years of work. It's not unreasonable to say 3 is a stretch and 2 is right out.
The real answer, which is alluded to in your post, is that the years requirement is simply a mechanism to reduce risk and blame for the person hiring you. There are a few things to consider in these situations:
1. He is already being interviewed despite satisfying the years experience requirement. This means they are willing to ignore that requirement. (or I misread this and he never made it to an interview)
2. All new hires have a ramp up period. This costs money and a failed hire can be costly.
3. A hiring manager (or whoever has the final say) is the person who will ultimately take the blame for any failed hire.
Considering the above, there is really only one question that needs to be satisfied in the mind of the employer for any "inexperienced" candidate to get a job:
- Is the risk of hiring this person lower than that of all other candidates?
When you try to answer that question, you get a clear understanding of where the years requirement fits in and how it effects the go/no go decision. So let's see what risk factors are normally vetted out during interviews:
1. Skills - Can he do the job? (the well roundedness part of the answer falls here) Let's make the assumption that he can so the answer is yes.
2. Personality - Does he fit in with the team? (conflict resolution and all that other stuff in the SO post falls into here) Let's make another assumption that he can so the answer is yes.
3. Will he flake out? - This is where experience factors in heavily. Evaluating someone with very little work history makes this impossibly hard to get correct. With longer resumes, it is easier to have high confidence in making this judgement. 3 years is generally enough time to see if the candidate either stayed with one company for a long time or stayed at 2 companies for a long time. This is usually a good indicator that the candidate worked out well and can be trusted to contribute in the long run. This is also why jumping too many jobs in a short period of time (or over a career) is generally considered a bad thing. It makes you a very high risk hire.
When you are asked personal questions (where do you see yourself in 5 years, what do you do in your free time, etc), this is where you are given a chance to alleviate their concerns. Questions about prior work experience are also used to vet out a candidate's flakiness. Even someone with tons of experience can fail this part of the interview in which case they would also get rejected. Low experience candidates are simply starting with a -10 buff.
So to answer the OP's questions:
1. How can I overcome the assumption that I do not have the skills required because I do not have the "right" number of years of experience?
He must minimize the "Will he flake out factor?" Either ace the "flake out" part of the interview OR show yourself to be so outstanding with regards to skills and/or personality that they ignore your potential flakiness. The best way to do this is via skills. You can't be just better than your peers. You must be better than your seniors. Either show this through outside work (personal projects, open source contributions, etc.) or by impressing them with your knowledge. Based on what the OP wrote, he seems capable but doesn't STAND OUT stand out. The personality route is also viable but that is much harder to swing unless you know people in the company already.
In the case he didn't even make it to an interview, then he must rely solely on displaying his skills via his resume. Outside projects and open source contributions with a personal website (or a link to code repos) is the best way to accomplish this. If his resume looks generic, then it's no wonder he didn't make it to an interview.
2. Are skills directly proportional to years of experience?
No. I know some people who have been programming since they were 10. Coming out of college, they clearly have outstanding skills but zero experience. But as stated above, this is not the real reason why he was rejected (he should actually ask for feedback assuming he made it to an interview round).
Do hirers give feedback? When I was suddenly dropped from dropbox's interview process, and asked for feedback, I didn't get a response until my friend working there went and bugged HR, and then the response that did get sent was "we have no comment".
Sometimes. I interviewed a LOT out of college and often made it to 2nd and 3rd rounds. Every time I got rejected, I would pop an email to the HR rep and ask for feedback along with something like "thanks for the opportunity." Maybe 1 in 10 would respond and some 1 in 15 would actually give me feedback on how I did. So while it's a fairly low chance shot in the dark, you don't have much to lose by asking. Just be polite.
Generally no. All it does is open up the possibility of lawsuits and invite an argument. If you tell someone they were dropped from consideration for reason X then you invite the applicant to rebut that reasoning. But the truth is that the company has decided not to proceed and there is nothing the applicant can do about it. Thus folks who have been around the block a few times simply say, "We've decided not to proceed" and leave it at that.
That is a sad thing but I don't think it will change.
Sure there is a valid point in there, but I don't think it's one worth pursuing. If you make a fuss out of it then you're not really giving a good impression; you come off as a difficult person who is focused on the wrong things: in this case, the written requirements rather than end goal of judging if you are right for the company. No matter how demonstrably smart and skilled this kid is, I would walk out of the interview with the impression that all his brilliance is going to be misdirected and he'll be out in the weeds have the time because he doesn't have common sense about what's important.
Instead, just do like everyone else is saying and apply. If they reject you based on HR filtering then there's a good likelihood the culture would be bad for you in the long run anyway, if not then you put your best foot forward and if you're as good as you think you'll be snapped up before long.
It's amazing the amount of assumptions and prejudices being leveraged due to the perceived young age of the person inquiring. Especially given that there is nothing to indicate that he was making a fuss of it more than asking on StackOverflow.
Shockingly, some do progress at a faster rate than others. I turned in a large project that I wrote during my senior year of high school and received extremely high marks on it for my senior year project in a high(er) level CS course in University. I got positive remarks on architechtural decisions and things that come via experience and having experience with code. I've been doing it since I was in middle school, I finished a project for my first client before I started my senior year of high school. I still kick myself for not doing a partnership with the fellow the following summer; the idea he wanted me to implement became rather popular a few years ago.
Some people progress faster than others. It doesn't mean they're necessarily arrogant or full of themselves. It means that ageism and the notion that "more experience = more better" is silly. There is code I see churned out by developers that have resumes twice as long as mine that absolutely terrify me.
How is there not? There's an entire discussion going on about it here, and I don't think the conclusion to be drawn from it anywhere is that it's an entire waste of time. It's just another symptom of how it can be difficult to hire well and how miserably misplaced some efforts are to improve it by cheap metrics that can be both positively and negatively misleading.
I totally agree: people do capitalize on experience at different speeds. That said, I think the op fails to put himself into the company's shoes. As one comment said, false positives hurt a lot, so these kinds of company will try to avoid them at all costs, even if it means weeding out very good candidates. Management consulting firms do that a lot for example.
It's easy to accuse the op of arrogance. And who knows, maybe he is arrogant. But in the end, that's just an ad hominem and is insufficient for dismissing his point, which I believe is a legitimate one.