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?"
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.
The article was just an excuse to cram more SJW bullshit down our throats and call every programmer a sexist homophobe.
Maybe then there is something about how to really teach programming that everyone is missing. With drawing, people are either good at drawing or awful at it, regardless of classes, until teachers figure out what drawing really is and what the mind is doing when it is drawing. The people who have been seen to do well "in class" are just the ones who happen to have already got that mind skill. So I would wonder whether education has this figured out with programming, and that you'll see bimodal until it does.
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.
It might - but that appears quite unlikely to me. Surely it has a normal distribution with the majority being somewhere in the middle
There is a reason for it to be bimodal.......those are the kinds of programmers companies demand.
Essentially there are two types of companies:
* Startups (etc) who want the best programmers and are willing to pay.
* Others who want to pay as little as possible to get the job done.
Those conflicting motivations could easily create a bimodal distribution (between programmers who are passionate, and those who are just doing a job). I don't know if that's happened because I haven't measured, but it seems plausible to me.
"First they came for the slanderers and i said nothing."
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.
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.
I think anyone who is a 10x programmer (which I consider myself to be) should be interested in bringing as many people as possible up to their level. Who wants to be LeBron James playing pick-up basketball in the rec league when they could be LeBron James playing in the NBA championships? When you are so much further ahead of everyone around you, people can't fully appreciate how great you really are.....but if you are surrounded by stars and yet still shine far above all of them, you look that much more awesome. It's one of the reasons that I spend time with the noobs mentoring them.......also, if I mentor them, they'll be more apt to do things my way.
I can appreciate the difference between "I don't like this code because it looks different than how I would have written it", and "I don't like this code because the author clearly has no clue how to accomplish the required task and only barely managed to cobble together enough crap to get the desired outputs on a handful of test cases".
The former, I can work with (and sometimes learn from). The latter, I know that I will eventually need to waste more time "helping" the author repair it when it breaks, than I would have just doing it correctly the first time myself.
The real problem here comes not from professional programmers, for the most part (though yes, truly awful "professionals" do exist). The problem comes from having most of the people "programming" in a modern office environment not actually programmers. You have accountants writing god-awful VBA, you have help deskers writing crappy web forms to automate part of their work, you have business analysts who know juuust enough SQL to get an answer, albeit a completely wrong answer, from the data.
This has nothing to do with style, and everything to do with "programming" as an increasingly required bullet point on the average office worker's resume. Yeah, you know some VBA, good for you - Now learn when you can accomplish the same thing with normal Excel formulas, and quit turning every spreadsheet you touch into a smouldering heap of unmaintainable side effects.
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.
I've lost count of the number of startups I've turned down because their salary offerings have been laughable and their benefits non-existent coupled with the high risk of outright company failure.
Yeah, I learned my lesson with startups as well. I was getting underpaid by about 33% according to industry average. They considered me to be overpaid because they could get brand new people fresh out of college for about half what I was getting paid who were able to do about 1/4 as much work with lots of handholding and rewriting. But I digress. They kept going on about how I was going to get shares in the company and get a big payoff when we sold. However, after years of coding, when I finally got everything done, they let me go.
So from now on, I am no longer going to be a source of credit dollars for employers. Cash up front only. If you want to give me shares, that is fine. But I also want industry standard wages.
If you are not allowed to question your government then the government has answered your question.
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.
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.
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