The Programming Talent Myth
HughPickens.com writes: Jake Edge writes at LWN.net that there is a myth that programming skill is somehow distributed on a U-shaped curve and that people either "suck at programming" or that they "rock at programming", without leaving any room for those in between. Everyone is either an amazing programmer or "a worthless use of a seat" which doesn't make much sense. If you could measure programming ability somehow, its curve would look like the normal distribution. According to Edge this belief that programming ability fits into a bi-modal distribution is both "dangerous and a myth". "This myth sets up a world where you can only program if you are a rock star or a ninja. It is actively harmful in that is keeping people from learning programming, driving people out of programming, and it is preventing most of the growth and the improvement we'd like to see." If the only options are to be amazing or terrible, it leads people to believe they must be passionate about their career, that they must think about programming every waking moment of their life. If they take their eye off the ball even for a minute, they will slide right from amazing to terrible again leading people to be working crazy hours at work, to be constantly studying programming topics on their own time, and so on.
The truth is that programming isn't a passion or a talent, says Edge, it is just a bunch of skills that can be learned. Programming isn't even one thing, though people talk about it as if it were; it requires all sorts of skills and coding is just a small part of that. Things like design, communication, writing, and debugging are needed. If we embrace this idea that "it's cool to be okay at these skills"—that being average is fine—it will make programming less intimidating for newcomers. If the bar for success is set "at okay, rather than exceptional", the bar seems a lot easier to clear for those new to the community. According to Edge the tech industry is rife with sexism, racism, homophobia, and discrimination and although it is a multi-faceted problem, the talent myth is part of the problem. "In our industry, we recast the talent myth as "the myth of the brilliant asshole", says Jacob Kaplan-Moss. "This is the "10x programmer" who is so good at his job that people have to work with him even though his behavior is toxic. In reality, given the normal distribution, it's likely that these people aren't actually exceptional, but even if you grant that they are, how many developers does a 10x programmer have to drive away before it is a wash?"
The truth is that programming isn't a passion or a talent, says Edge, it is just a bunch of skills that can be learned. Programming isn't even one thing, though people talk about it as if it were; it requires all sorts of skills and coding is just a small part of that. Things like design, communication, writing, and debugging are needed. If we embrace this idea that "it's cool to be okay at these skills"—that being average is fine—it will make programming less intimidating for newcomers. If the bar for success is set "at okay, rather than exceptional", the bar seems a lot easier to clear for those new to the community. According to Edge the tech industry is rife with sexism, racism, homophobia, and discrimination and although it is a multi-faceted problem, the talent myth is part of the problem. "In our industry, we recast the talent myth as "the myth of the brilliant asshole", says Jacob Kaplan-Moss. "This is the "10x programmer" who is so good at his job that people have to work with him even though his behavior is toxic. In reality, given the normal distribution, it's likely that these people aren't actually exceptional, but even if you grant that they are, how many developers does a 10x programmer have to drive away before it is a wash?"
If you're looking for people who generate a profit from their time, the curve is almost certainly U-shaped based on my now not-so-light 30+ years in the trenches.
Why is this any different than the population of other skilled professionals? You will see the same curve for musicians, for example; it's not necessarily about being able to eventually get the skill, but it's about doing so in a reasonable efficient amount of time proportional to the effort expended.
In terms of actually learning, the guy probably has a point - eventually, I could learn to play the violin - but having tried, I'm never going to do it professionally.
Ask me to develop OMAP firmware or drivers, otoh..
..don't panic
If you could measure programming ability somehow, its curve would look like the normal distribution.
This guy doesn't know how to measure programming ability, but somehow manages to spend 3000 words writing about it.
So he doesn't know......programmer ability might actually be a bi-modal distribution. If he had collected data to support his hypothesis, then that would have been an interesting article.
"First they came for the slanderers and i said nothing."
"In our industry, we recast the talent myth as "the myth of the brilliant asshole", says Jacob Kaplan-Moss. "This is the "10x programmer" who is so good at his job that people have to work with him even though his behavior is toxic.
This is swinging at a strawman. A person can be a 'brilliant' "10x programmer' without being an asshole. A person can also be a -10x programmer while being an asshole.
Also, if a programmer can't work well with other programmers, she's not a 10x programmer, she's just a fast typist. Any software that is unmaintainable by others isn't good code.
"First they came for the slanderers and i said nothing."
The truth is that programming isn't a passion or a talent, says Edge, it is just a bunch of skills that can be learned.
Why people forget the creative side of programming?
The programming is indeed bunch of skills. But if you do not have right mind set - inquisitive and creative - your career in programming would be full of frustration.
The only software where one doesn't really need any creativity - is already written and there is literally no work there.
P.S. Of course there is the "flip side" to the creative side of the programming - "monkey" coding and testing. But for most of this work you do not even need to have any deep programming skills. Reading and comprehending documentation fully (an ability which is again easily forgotten by the sensational headline writers) is more useful and also much under-appreciated. And then there is also the writing of tech documentation...
All hope abandon ye who enter here.
Now, I don't have stats to back this up ... but many moons ago I was told by numerous profs that programming/CS had pretty much always been the bi-modal distribution, and one of them even showed me the graphs of previous years of first year programming courses to back it up.
I have seen an academic paper discussing the bi-modal distribution.
So, is he saying "among people who are programmers there isn't a bi-modal distribution", or is he saying "among people learning to program there isn't a bi-modal distribution"?
Essentially he has no statistics to back his claims, and seems to be saying that "among people who are already programmers there's all kinds" -- which is FAR different from refuting the observation in academia that people learning programming are most definitely showing a bi-modal distribution.
This sounds like he's talking from his 'feels' instead of from his 'facts'.
Lost at C:>. Found at C.
This is perpetuated by a small percentage of vocal but talented programmers who, in fact, lack the skill to work with people whom them don't think are as brilliant as they are. This probably works fine in a startup. However, if you don't ever learn to work with people of varying skill-sets, you severely limit the types of jobs you can get later in your career.
When you work in a manufacturing plant making cars (for example), a productive worker if allowed to produce is about twice that of a poor producer.... When it comes to programmers/coders the quality and productivity of your upper end programmer can easily be 12 or more times as productive as your weak programmers. In worst case examples some programmers are actually a net negative when it comes to defects etc. The wages however tend to vary between 2 and 3 times your junior programmer (who could be a star or not himself). Some programmers are overpaid at the bottom pay scale, and some are underpaid at the top end. I have worked at some of the top companies, and some that are far far from it so I have been able to see both ends of it.
Programming is a natural skill which can be enhanced greatly when you work in an environment that values talent and you have people that are better than you or at least near the top of their game if you are one of the gifted. I have seen University graduates that are at best average, and I have seen self taught programmers that are among the best......
In short it is not a myth.
I think it is less a problem with how programming is taught, and more one with how programming is evaluated. Programmers, as a subculture, have serious issues separating stylistic from functional differences, with people looking for things that scan the way they write, with tests for readability and correctness really coming down to 'did the person do it the way I would?'.
It's not bimodal but 10x rule still applies. Skills may follow a normal distribution but the task (any non-trivial programming) is a strongly nonlinear task. There are things only 5% of programmers wil be able to do and you cannot replace them even with 10 average ones.
By definition, 10. Perhaps being able to figure things like that out is what separates 10x programmers.
This is my signature. There are many like it, but this one is mine.
or that my ability has something to do with the fact that I have been accept into Mensa
That's a funny typo.
Peter predicted that you would "deliberately forget" creation 2000 years ago...
One of my friends (who now has a masters in CS) was asking me why his programming 101 course was so heavy on pointers when nearly everything in the 200+ range was taught using pointerless, or nearly pointerless, languages. The reason, of course, is to figure out as early as possible which camp each student was in.
I would think that the reason was the same reason that we teach people to add before we teach them to use a calculator. After understanding the basics, one can make better use of the tools.
Unfortunately, most 4GLs (and even some 3GLs) obfuscate what is really going on in the background such that you either can't write efficiently or at least the effort involved would be ludicrous, so we end up with bloated monstrosities.
If you are not allowed to question your government then the government has answered your question.
What annoys me is that despite the Mythical Man Month still being the only vaguely scientific analysis, and despite the fact that it demolished a bunch of received wisdom and only created ONE fact of its own - the existence of the 10x programmer - somehow because it was written a long time ago that means it "no longer applies".
Of course your misrepresentation of the 10x rule isn't helping. The 10x rule is that the best developers are 10x as productive as the worst 10 developers. That's all it says. So you can replace them with 10 worse developers, that's the whole frickin' point of the 10x rule.
If you wish to invent another rule, that some tasks are so hard that only some programmers can succeed at them, you can go gather your own evidence, but don't pretend it's "the 10x rule" because it isn't, and your rule did not come out of the only vaguely scientific analysis that's been done, and you shouldn't pretend that it did.
I love this tidbit:
If you could measure programming ability somehow, its curve would look like the normal distribution.
So, they're saying that they know the result of the measurement despite admitting that they don't even know how to perform the measurement. I see.
All my liberal friends think I'm a conservative, all my conservative friends think I'm a liberal.
A downward slope would just be non-normalized data. If there are a lot of bad ones, bad just becomes the mean. Programming talent, like most things, probably falls neatly into a bell curve.
The U curve the article is referring to is a bimodel distribution, which is rare even in nature. It occurs for something like a disease that effects immune compromised people. Thus the age distribution of infected would be the very old and very young.
Brilliance without wisdom, power without conscience. Ours is a world of nuclear giants and ethical infants.
Hugh Pickens, the British wannabe-programmer forum troll, posts more BS fresh from the island of marmite.
This time he is channeling Jake Edge, a person much like himself, i.e., a wannabe-programmer from Merry Old England who spews 100 lines of opinion for every 1 line of code he has ever written.
Why do the Slashdot editors think this stuff is interesting? I think there must be some British Slashdot editor who keeps pushing this garbage.
The fact you think you suck already means you have drastically higher potential than a large number (perhaps even a majority) of developers
Far better to think you suck and know that you can improve than to think you're awesome and stay shit forever.
Humility is the number one most important defining trait shared by the world's genuinely great developers. I've met plenty of developers who think they're great, claim they're great, but repeatedly prove their development ignorance when they start talking about the subject. In contrast, I've never met a humble programmer that isn't either awesome, or well on their way to being awesome.
I mostly see the 'U' view of things in younger west coast programmers with fat wallets and a superiority complex
I am a west coaster, and have never heard of the "U" shape myth, and what you say makes no sense. What the "U" shape means is that there are many bad programmers, many great programmers, and almost no average programmers. Believing that greatness is common is the opposite of a "superiority complex".
I doubt that the "U" myth existed before the author of TFA made it up.
many users inexplicably believing that programming requires a "special mind", dividing people in to two groups: "can program" and "can never program".
This is not "inexplicable". It is obvious to anyone who has taught programming to beginners, or any type of introductory abstract math. About a third of the population is simply incapable of abstract reasoning. If you think otherwise, I invite you to come to my house, and I will give you a free dinner while you explain "vectors" to my 15 year old daughter. Good luck with that.
It is obvious to anyone who has taught programming to beginners, or any type of introductory abstract math.
Having spent time in grad school as a TA and tutoring dozens of high school & university students on the side for extra money, I disagree, and don't think it is anywhere close to obvious. Many of the tutoring students were people pegged as the can't learn it types, but needed to get through math, physics or CS topics for one reason or another.
Just about any student or person can be reached, it just takes time and effort. Often it takes multiple, varied approaches to teach someone a new topic, when the course material and professor only have time to try one way, before needing to move on. It might take enough time that majoring in the subject would be completely impractical, but I had not seen someone who couldn't be made to pass an intro level course as long as they tried and made it a priority. Sometimes it isn't even an issue with the material in general, but because they failed to grasp a topic that is a foundation for later topics, and I've seen a few students "suddenly" catch up and able to keep up on their own once they fixed a few problems with the basics.
From TFS:
Since you can't measure programming ability "somehow" or otherwise, you don't know what the curve would look like. Which reveals the entire set of claims here as utter garbage. If you don't know what the distribution is, you don't know what the distribution is. How difficult is that to understand?
I've fallen off your lawn, and I can't get up.