Would it make us all feel better if programming skill weren't bimodal? Sure. But a roomful of people clapping at that proposition doesn't make it true.
Would it make us all feel better if programming skill weren't bimodal? Sure. But a roomful of people clapping at that proposition doesn't make it true.
(1) Not even try, because it's "too confusing." (c. 90% of the population).
(2) Be able to finish only with significant assistance from others.
(3) Be able to finish on their own through trial and error.
(4) Finish quickly, and wonder why they were asked to solve such a boring problem.
Note that programming ability is a function of interest in the subject as well as intelligence. I'd say that most people who go into programming are somewhere between groups 2 and 3, while most who end up being successful at it in the long term are somewhere between groups 3 and 4.
I can think of at least 2 people in my 30-person cohort in college who did not know how to code, and would fall in the first hump of a bi-modal competency graph, despite having passed 2 years of programming courses.
So my theory is that the second hump is a normal bell curve, and the first hump is people who won't try.
coding is always trail and error because you cant think of all the possibilities and through error you learn and become better so yeah give me more of 3 then of 4
I am not entirely convinced this is not partially a resume screening and talent pipeline problem. Has anyone ever given Fizzbuzz problems to everyone who applied to a position? If you haven't, have you ever considered that your screening process may be broken in the sense that you are passing too many liars who then bomb the Fizzbuzz portion, but who bump competent people off the stack entirely so you never test them?
Presumably, when you do a resume sift, you look for people with either a qualification or work experience. Either they somehow faked it through those, or your test is bad. Fizzbuzz actually tests if you know what % does. Is that critical knowledge for a webdev?
I don't know about "lots", but there are definitely people out there who claim to be programmers but lack the basic competencies they claim. I've encountered several.
A couple of years ago, I was part of a battery of interviews for a candidate who claimed a Master's in CS. Their resume said they had done advanced work in parallelization of video compression. I asked them about it - I wanted to know how they had handled synchronization and locking.
The candidate looked at me blankly for a couple of seconds. Then they began, haltingly, to talk about web sessions and logging.
We didn't hire the person, but there was definitely some bullshit along the way...
As for how they get through the screen, I think they just blatantly lie on their resume hoping to get a company that doesn't do its due diligence in determining if the stated experience is real.
As to your last question, a "webdev" who doesn't understand integer modulus is a fake programmer. Is it critical? I suppose it's not if your grid is never wider than one column and you never want to alternatively style rows in a list or table.
The point about fizzbuzz is that some people fail it even when you give them a list of functions and how to use them.
Finding out whether this is relevant to how they do when actually working rather than in a high pressure interview situation is an open question.
Because of this I'm convinced that aptitude and passion are significantly important to the ability to program. Just grinding your way through CS classes will not a programmer make.
I should add we let the candidates use google, so even if they don't know modulus or whatever, they still can prove their ability to look up things.
You mean that you continue the interview process for a coding position with someone who failed FizzBuzz algorithmically/structurally (not for a trivial syntax error)?
At a prior game company we gave what I felt was a FizzBuzz-level task on paper: in C, given a string of characters representing a hex number, return the long it represents. (basically, write strtol(input, NULL, 16); without using strtol)
I was appalled at the number of people who couldn't come close (not subtle bugs or mis-handling case issues, but rather: show someone else their code and have that person guess what function the person was trying to write).
When the Fizzbuzz blog post(s) came out, representing a much simpler problem, I couldn't believe that someone would bother to shower and leave the house to interview for a programming position and be unable to do Fizzbuzz. So I gave Fizzbuzz to a few candidates, often in a joking sort of way (so as to not offend any qualified candidates). Results were predictably shocking and dismaying. It's a problem simple enough that you either can do it or not; there's precious little middle ground. (As other posters mention, these are the people that interview over and over, so hopefully the actual employed population of programmers is overwhelmingly able to do it.)
Although there are some rare people that are both great programmers and great artists at the same time, usually the person is a programmer, or an artist, they might know skills of the other side (example: I am a programmer, but I have a design bachelor's degree, and know how to use lots of artists tools and correct art made by others, but I would never call myself a good artist) but they are clearly one thing, not two.
This usually is also reflected in their behaviour, for example programmers frequently act in more logical or common sense manners (or sometimes in a extreme logical manner that go against common sense, but still logical), and can be viewer in some ways as "boring", and tend to prefer things rooted in reality.
The artists are not uncommon to do things that are unexpected, or to like outlandish stuff, for example when playing an RPG with extensive character customization you will usually see the programmers min/maxing the stats or trying to go for realistic stats, and outfit the character in realistic clothes, or the best equipment in terms of stats. Now when you look at an artist character they frequently are different, for example you might see a orc magician, or a space marine with low accuracy stats, high charisma and that paints his armour pink with yellow dots.
Then when we get to real work, the need for talent is obvious: Innate programmers frequently make boring art, IF they can make good art at all. Innate artists sometimes can make some code, but usually it is badly engineered code (prone to bugs and breaking), and that is, sometimes, most artists can't code at all, you can try to teach them all you want, and they just don't understand, even those that might grasp the syntax still end never getting past basic logic.
Of course, sometimes you find some people that are exceptions, for example the Falanghe brothers:
Felipe Falanghe is the creator of KSP, he, and his twin brother, studied with me at university, they are clearly artists, during university their highest grades were always in pure art related classes, they could make amazing drawings, and they had a band and were both fairly good singers and guitar players, yet both of them decided to learn Flash and Unity coding, and although their code was frequently broken, hard to read, confusing and had huge amount of memory leaks, clearly it was possible to do something with it, since KSP is a success, and Felipe Falanghe started coding it by himself in Unity.
I certainly agree that there is likely a gulf between good and great. Probably another above it. I'm curious to know what actual evidence there is.
The second point, though, is more whether or not it actually is bimodal, or it is just taught into a bimodal distribution? That is, is it intrinsically this way, or is that a biproduct of how society values and teaches it?
More, I think something like this can not really be attacked at the point where we are looking at people being hired for a job. The causes for a bimodal distribution in ability will likely stem much farther back than that and will have to be addressed as such.
Consider the mythical patient that says it hurts to bend their knee. First, yeah, stop bending your knee in a way that hurts it. Second, lets find out why you can't bend your knee that way.
I don't agree that eliminating a bimodal model is desirable though. We don't really need more people in the middle of the talent trough because they don't actually add much value and can often detract value (in my experience). Successful programming is the grappling with immense complexity. You really only want the best and brightest doing it. As long as the people with the desire and capability are being given the opportunity to enter the field, I think we've succeeded. Trying to lower the bar or get people who wouldn't excel into development would be a mistake though.
Consider, do you really care about having the best and brightest doing something. Or just getting the best results. Odds are high that those align at least somewhat with each other. I don't know if it is a foregone conclusion, though. Study will show.
If you have experience that a normal distribution brings down the top end, I'd be interested in seeing it. If it is just a gut feeling, it is something that can be tested. If it can't be tested...
What I do applaud, is research to into the problem. Which begins, largely, but asking the question.
The fact that programming interviewers give this kind of test and it's widely failed shows what a bad state objective evaluation of programmers is in.