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
On academic programming courses - of which I've taught on many - the grade distribution is definitely bimodal and there is a clear gap between those who can and those who can't. Of course, there is variance among those who can but the difference is largely that those who can largely get better whilst those who can't never get even get it.
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."
Lost me here. Programming can definitely be a passion, and it can also be a talent. One might have a natural aptitude at programming. That doesn't mean one cannot learn the skill of programming, or that someone who finds it difficult in the beginning will not become an expert.
In my career I've noticed that there are developers who are brilliant, and developers who struggle. The ones who struggle can succeed through mentoring and training.
There are also developers who are kind and have great social skills, as well as those who do not. This is true of any employee at a company, including managers. Social skills can also be a passion, a talent, and a skill. That is also something that can be improved through mentoring and training.
The primary reasons we don't see this happen for social skills are office politics and the false view that personalities and behaviors are fixed.
If you are reading this and your programming skills or social skills are lacking - invest in yourself and work on them. It will pay off handsomely.
"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.
"there is a myth that programming skill is somehow distributed on a U-shaped curve"
Never heard of this "myth." I always thought it was a slope - a lot of bad ones, a fair amount of decent ones, and some really good ones - and that it was in many ways dependent upon experience - the more experience you have, the better you get - or you go into something else after a few years.
"Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
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.
1. Programming skill is more likely to have a power law distribution rather than a normal distribution. That is, lots of very unskilled people, a chunk of decently-skilled people, and a handful of "rock stars." This would more closely match the distributions (and success rates) of other skills. This also matches my experience working with programmers of varying skill levels for more than twenty years.
2. You can teach a lot of the concepts but there is an inherent knack for logical thinking that is very hard to teach. If one has this knack, new concepts are easily grasped, solutions to problems using currently-known tools are more easily found, and troubleshooting is simpler. If one DOESN'T have the knack, they can still be successful, but it is harder, requires substantially more effort, and more of their time will be taken at each step.
It's not always pobox where someone sits on the talent distribution. This is also not a perfect predictor of their ability to produce; some people are very bright but unmotivated and unmotivatable. I would rather have someone with Leeds talent who was willing to work and produce. It's also important for a team to code to roughly the same competence level; if you have one rock star who writes code that no one else understand, you create a bottleneck for yourself on that one person being able to work with that code.
People are never as simple as their stereotypes. This applies equally to Christians, Muslims, and Emacs-lovers.
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.
Both variants are floating around. I mostly see the 'U' view of things in younger west coast programmers with fat wallets and a superiority complex, thus anyone who thinks like them is a superstar while anyone different 'sucks.
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.
I disagree with this statement. I enjoy programming and I am very good at it because I enjoy it. Enjoying it means that I am interested, stay up to date and learn new things all the time. It means I do alot of programming in my spare time, which further increases my skills.
Many developers I know do it as a job and forget programming when they leave the office. This makes a huge difference.
But no, programming talent is not distributed along a U curve. However, I firmly believe that an average developer is 10 times more effective than a poor developer. A good developer is 10 times more effective than an average developer, and an excellent developer is 10 times more effective than a good developer.
Maybe not exactly 10 times, but certainly by an order of magnitude.
"I feel like my answers are quite trivial since nobody really knows how to design a good language, including me."
Similarly, no one really knows how to do programming really well. Some are better than others, but we're all feeling our way through the unknown early days of software programming. In 100 years, who knows what programming will look like?
"First they came for the slanderers and i said nothing."
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.
More like personality. Being a rock star in programming has nothing to do with output or quality, but of convincing peers and managers that you are good. The greatest trait to have for becoming a rock star is narcissism and the social skills (even if they fashionably broken) to pass that off as competence. Most 'rock stars' I have worked with generally needed drones to clean up their work, but they were great at giving the impression they walked on water to anyone who mattered.
Competent, basic programming may be, but there is also an aspect of art and talent to it that can't be taught no matter how much the "we don't fail kids here" people might wish it weren't the case. Companies aren't looking for competent programmers -- they offshore those jobs. They're looking for the exceptional talent that can drive the whole process from top to bottom, including issuing the designs and models those "competent" programmers are expected to work from.
I may not believe in the "10x programmer", but I most certainly do not believe that just "anybody" can be taught to be good programmer. I don't believe that of anything except the most basic of manual labour jobs.
I do not fail; I succeed at finding out what does not work.
Yes and no. I'd argue it depends on how you define "programming". If you're talking about "can code up basic solutions to relatively straightforward problems" then yes, with enough time, most people can probably learn to do that. Considerably fewer ever reach the point where the code they produce is (usually) elegant. Where they're capable of troubleshooting the most elusive bugs. Where they fairly quickly identify solutions that are orders of magnitude more efficient than the naive approach to a given problem.
I tend to think the folks who reach that level are able to do so by a combination of experience and some inherent traits that you can't just pick up in a programming class. An example from my current job:
My employer makes apps. Our app downloads some images over the network when it launches. It caches them so unless something changes there's not much going over the wire, but the initial download can take a while. Up to 30 seconds where the user is stuck watching a progress indicator on the splash screen. At least two different developers had worked on this app. Then the company hired a new guy (not me). One of the first things he did was refactor the image download code to use multiple threads and transfer the images concurrently instead of in serial. With 8 threads the speedup was approximately 5x. His key insight was that most of the images were very small, so much of the total time was latency and not lack of bandwidth. Especially since latency is so high on mobile networks.
Now the previous developers were not right out of school. They had years of experience. They could "program". But they didn't recognize an enhancement with significant implications for users when it was right there in front of their faces. It's possible that if they had been specifically instructed to optimize the image loading logic they would have come up with a similar solution. Maybe, maybe not. But why did the third guy immediately recognize the problem (and put in place a very effective solution) without being prompted? Was that a "skill" he learned in a programming class?
On multiple occasions this same guy has identified long-standing bugs in our app that I'm almost positive no other member of our team would have ever been able to figure out even with infinite time.
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...
While you are partly true (in France, we use the term "savoir faire" -expertise- opposed to "faire savoir" -publicize-), I think another factor is more meaningful: intrinsic interest.
If you let me program something interesting, I'll be the best programmer in the world, following the strictest guidelines without complaining.
But if you let me program some boring shit, I'll be as useless as any lazy guy.
In your case, this can be expressed as: the rockstar does all the interesting work, and delegates all the menial tasks to other people.
When you are a beginner, everything is interesting.
As you grow older, a lot of things become boring.
This is a win for management. The other 80% of developers that DIDN'T quit will have to do the work of the 20% who have left. That manager just saved the company approximately 20% on programmers' salary (assuming that those developers got paid roughly the same.) Since reducing costs is good for the profits, this manager will not be fired.
Sure, he saved 95% off salaries. It's easy to keep a company afloat when you don't worry about working people to death.
Never underestimate the power of stupid people in large groups.
Fuck you. I'm the best. I write all my own libraries and never use anyone else's code.
Is a person under 40 who you can get cheap. After the age limit and salary bar have been passed, the same person finds himself on the other side of the U.
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.
the key skill needed for programming is to be *able to pay attention to detail*. if you are unable, by any means, to focus on one thing for any length of time (because, for example, you have the attention span of a spider on cocaine or worse caffeine, because, for example, you have been brought up on txting and IMing and twittah) then it should come as absolutely no surprise that you are utterly useless at programming.
another person mentions that creativity is needed in programming. well, yes, this is true. if you have a bug that you don't know how it got there, you need to be extraordinarily patient [attention to detail] with yourself and your work, going over it *creatively* in different ways until such time as you have found, understood and then fixed the bug.
if you do not have the patience because you are, once again, brought up on a diet of twitter, instant gratitfication and refined sugar products, *no amount* of creativity is going to help if you cannot apply it.
i call myself a programmer: what i actually have is obsessive compulsion to be able to pay attention to one task for spans of time that exceed healthy limits. i can be freezing cold and not even notice... because i'm debugging something. only sheer complete exhaustion can get through under those circumstances. this is where it helps to be working in part of a team, as it sets some structure for social interaction. it's no accident, then, that there are entrepreneurs [this goes back a few years on slashdot - there's an article somewhere] who *only* take on *english language* majors [US i presume], and train them to be programmers. why? because people who can *communicate* turn out to make better programmers than people who have been through a university-driven programming course.
...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...
30 years full-time in the industry, NEVER heard that before. There's a lot of companies doing mediocre work who believe their mediocre developers are rock stars. That's because to marketing and management types, successfully getting a computer to do anything at all is magic, and they cannot readily distinguish between ho-hum "accomplishments" and serious ones.
The truth is that programming isn't a passion or a talent...
Bull. Fucking. Shit. This is not a truth nor a new insight, it's just wishful thinking, and this author is far from the first management prick to delude himself this way.
...it is just a bunch of skills that can be learned.
Of course it is. But excelling at it takes certain aptitudes and talent. Confusing "it is a just a bunch of skills" with "pretty much anybody could potentially be as good as anybody else" is just stupid.
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.
Well now, that's actually true. But it's equally true that all those jobs ads for "junior" or "intermediate" developers are looking for okay developers, not rock stars. There's jobs for them, and I've never met anybody who expected newbies to excel. So it's kind of an implicit straw man argument--but still, we should all be careful not to drive away newcomers, and keep in mind not creating this (possible) problem.
...the tech industry is rife with sexism, racism, homophobia, and discrimination...
Maybe where this asshole worked ;-) And certainly there are companies where this is true, but how common is it? Where I've worked, I really believe the women and minorities were treated well. Granted I've never actually asked them that question, but then again, exactly how would that make them feel like they fit in?
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.
No way. We all know (I hope) that although the 10x (or 25x, or 50x, or infinity-x) must have certain personality traits related to sustained concentration and so on, that when it comes to pleasant vs asshole, they actually exist in a pretty normal distribution. The problem of course is that because they are somewhat rare, it's harder to screw up the nerve to fire one if you think you have one.
And, BTW, there are infinity-x programmers. There are plenty of problems that average programmers would simply not even be able to solve at all--not the majority of work of course. Relative to the amount of work available, problems that require unusual skill to even solve are rare. But given the huge amount of work, there are plenty of problems beyond the grasp of the average...
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.
Just read the rest of the comments. Slashdot is a hotbed of programmers who think they're god and everyone else sucks. They also argue that programming is some kind of talent you're born with.
I teach programming mostly to people you wouldn't expect. Anybody can learn and, just like any other skill, their ability is mostly determined by the time and motivation they put in. Learning programming is even easier than a lot of academic subjects because there's instant, fairly unambiguous feedback.
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.
It's probably less about sour grapes than it is about the image of a certain kind of coder which makes for a good story.
People like their assholes. They don't like being too close to them, but they like assholes who cut through the "bullshit" and make things happen.
News outlets tend to pick up on those stories and people who are assholes tend to encourage that, because some star coders are just assholes and like the idea that their particular dysfunction makes them seem hip and employable, as opposed to being relegated to a closet somewhere.
The reality is that there are excellent coders of both the nice and the asshole variety. It's just that you don't hear about the nice ones because they're not grandstanders. The assholes tend to be.
If given a limited budget and resources, I'd probably pick the star coder, even if an asshole. I think the real issue with a 10x coder, as opposed to a team of average coders is the overhead of managing a team of coders. If you have one guy, he has one vision and it doesn't have to be transmitted to and adopted by the team. This is useful for certain projects.
For other projects, where you are not going to be able to get any one person to be able to finish it, then team dynamics become much more important, and it becomes much more important to not have assholes on your team. If you're forced to have an asshole star developer, then you need to find people who will execute that vision without complaint. At that point, you're going to tend toward worker bees instead of highly skilled individuals because you don't want a religious war between the the two assholes writing your code.
However, if you lose the assholes, you're much more likely to find a team of above average coders because they can actually work together without trying to backstab or snipe at each other constantly. You don't need to limit yourself to coders who are just puppets of the asshole senior coder.
Don't get me wrong, puppet coding can certainly work, but is probably something you only really want in a short term startup where you can have that vision, without having to deal with larger teams.
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.
Most people can do most things averagely well given enough time and practice. However to be exceptional at something takes an innate talent. Mozart was born, not made. Ditto einstein. And the same applies to programmers (and no, I don't count myself as one these elite).
I would agree with this in the same way I would agree that anyone can learn to play a musical instrument. However, I still think it take an innate talent as well a (lot of) training to become an orchestral soloist.
Not to overwork the metaphor, but there are also people who would work in menial jobs so that they could program at night if it weren't for the fact you can make a living programming - the same people who have jobs coding and write software, say for open source projects, on weekends.
The real problem is weeding out the people who have no interest but still try to make a living writing code. I can only assume that those people write some of the websites out there, such as the ones that insist you enter credit card numbers without spaces or other punctuation. It's a 16 digit number, you can ignore anything that isn't a digit and feed it through the payment service to see if it's valid.
I think it is in terms of observations.
The Rock Stars, the company will go out of its way to try to keep them
The under performers, will just stay at the same place as they have a hard time getting a job elsewhere.
So the organization has the long timers as the Rock Stars or the Under performers.
The middle people will often stay there for a few years and move on. So they are in flux, and that makes it hard for our observations to see the middle ground, as the majority.
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
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.
I've been around a while, and I agree there are what can be called "elite programmers", but with a caveat. Such people are "masters of code", but generally they are not very good communicators, and work on projects and niches that require a high degree accuracy, fastidiousness, and debugging skills. They often work on systems software, such as OS's, database engines, network control software, weapons control systems, etc., and are usually paid quite well.
But they don't do so well when the requirements are fuzzy or change often. They don't handle ambiguity well.
Of course, this is probably an oversimplification, and possibly a feedback loop where one that is highly "code oriented" will tend to be given yet more code-centric projects away from fuzzy office politics and fickle customers such that they don't develop their "fuzzy" analytical skills. Thus, they are not necessarily inherently "bad" at dealing with Dilbertian chaos, it's just that they lack experience with it because they went into a field or niche that is more technology focused, which helps keep them away from office politics and goofy users.
It's hard to master both human nature AND machines in one lifetime. Those who focus on a mix of both are probably in-between skill-wise between people and machines, and this is where the majority of developers and developer/analysts are.
And of course there are exceptions to the rule: some master both, but those are rare in my experience. (Those who believe they have mastered both are common, but egos tend not to be accurate to their owners.)
Table-ized A.I.
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.
My wife the business woman {who does more math than I do on any given day} has bailed out and now I'm only one left to help my son with his freshman algebra because "Algebra!?!?!?"
Anyway I found very quickly that the key to helping him understand algebra is to pry the cell phone from his hands and turn it off.
What gets me about the summary is the assumption that 10x programmers are arseholes.
Some programmers are significantly more productive than others.
Some programmers are twats.
The two communities intersect, so focus on hiring members of the first group that aren't in the second. They exist. They're worth some extra pay.
Drive the twats out of the industry.
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.
Some of us just have different metrics for drawing a line between "programming" and "stumbling around in a programming language doing dangerous, stupid, and occasionally functional things."
But, hey. If you can set your digital alarm clock, or interact with your microwave in such a way as to involve more than one button push (even if you're going to destroy the comestible), you're a programmer, right?
It's like kids with crayons. They're all artists! Special butterflies! Call the Louvre!
Now get off my nursing home's lawn
I've fallen off your lawn, and I can't get up.
I've taught plenty of intro programming classes. You're likely just a terrible instructor. I've not found a single student that was incapable.
. About a third of the population is simply incapable of abstract reasoning.
Citation needed. What backwater pay-to-publish journal did you find someone that denies that 1/3 of the population fails to reach the the formal operational stage of development?
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.
I have a few teaching tricks I've picked-up for that. I have little doubt I could teach your otherwise normal child the basics of vectors in an evening. Well, at least well enough to get her through calc.
Teaching, like programming, is a skill. If you want to better help her, do some reading on formative assessment.
Required reading for internet skeptics
The summary and comments often focus on what Jake Edge said where in fact, Edge is summarising what Jacob Kaplan-Moss said at a conference. The merits of the points made during the presentation can be discussed on their own but there seems to be a lot of vitriol aimed at Edge that has no basis in either fact or logic. Aside from an inaccurate summary, it's also sad to note that slashdot used a "subscriber link" feature which was meant to be used by a paid subscriber to share an article with a small number of people until it was free a week later. The feature was not intended for sharing with the entire audience of slashdot. That is just poor form.
Actually, Michael Jordan was still a better baseball player than 99.99% of the population. Let's see you hit .200 and drive in 50 runs in AA pro baseball.
This space intentionally left blank
Yeah, but actually no. Each skill set is different. I could write you a PCB router in under an hour, or whip up an image processing mechanism, layered image editing, signal processing, write an FFT from scratch. I can do assembly coding as fast as I can type while higher up, I favor c and Python for their various and highly disjoint abilities. I'm good at documentation, and I can manage effectively -- without getting the team to hate me. But fizzbuzz? Sort of boggles me. I solve it very slowly. Perhaps because there's no point to it and I don't really give a flying crap. :) But perhaps also because it's just not my thing. I despise puzzles-for-the-sake-of-puzzles, and avoid them like the plague.
Bottom line, any type of interview question or test will sit poorly with some high quality programmer. Some don't know a language, some have an unusual process, some aren't great communicators, some don't function well with someone staring at them or under immediate pressure... there is no perfect interview method, and surely no way to determine programmer competence outside of their actual accomplishments -- which, even when you can pull it off, is not the same thing as measuring their skills against others, placing them in an objective relationship to the skills of others, either.
Personally -- and this is strictly anecdotal, but reflects many decades of experience -- I've had a lot better luck asking many-possible-answer questions about techniques and areas of knowledge in a friendly, low-pressure atmosphere where the interviewee is made to feel they are welcome and respected the moment they walk in the door.
I've fallen off your lawn, and I can't get up.
The LWN article is not an essay by Jake Edge. It is in fact a report on a talk given by Jacob Kaplan-Moss.