News for hackers. Stuff that matters.
Re:10X Programmer and Other Software Engineering Myths by jasode on Tuesday March 31, 2015 @09:24AM (#9295941)
>these papers did not actually bring any original evidence in support of the notion that some programmers are 10X better than others, [...] What I’ve been saying is that the data is not actually there, so we do not have any strong proof of the actual claim.

I can agree with the specific observation that there is no consensus on concrete quantifiable data to prove "10x" with mathematical rigor.

Ok, let's set aside "10x" because many previous discussions about it have shown it to be a distasteful description to some. For those who do not believe in the "10x programmer", how do you feel about programmers such as John Carmack (Doom, Oculus)[1], Fabrice Bellard (ffmpeg, pi algorithm)[2], Linus Torvalds (Linux, Git), TJ Holowaychuk (node.js projects)?

If they are a league above other average programmers, what's an acceptable description that you'd use?

To me, the "10x programmer" was always a snappy rhetorical label and I was fine with it that way. I never sought a mathematical proof of the statement.

[1]http://en.wikipedia.org/wiki/John_Carmack

[2]http://en.wikipedia.org/wiki/Fabrice_Bellard

Re:10X Programmer and Other Software Engineering Myths by RogerL on Tuesday March 31, 2015 @09:36AM (#9296011)
I agree. It is a handy catch phrase that describes a real phenomenon. I tend to think in terms of variance. Programmer A is 3 standard deviations 'better' than programmer B (again, no mathematical rigor implied!!!).

Think of it in this way. Most of us are smart people, and learned relativity in high school or college. Those that didn't, could have. It ain't that hard. But how many could have discovered relativity at that time in history? None of us, I suspect. Put it how you want, Einstein is a 10x, he is 6std outside the mean, or whatever.

Same sort of things in software in my experience. If you have something really hard to do at work, you know who to give it to, right? You give it to (say) Jessica, who will come back in 3 days not only with it complete, but with all the ambiguities in the spec fixed, with 4 enhancements that you never thought of, documentation, and a framework that lets others in the company extend the functionality into other company products.

Or, you could give it to Jacob, who will need to be prodded for status updates week after week, and he'll eventually 'deliver' 10x the number of lines of code (hence just as productive by SLOC estimates!) for a substandard solution that is unreadable and fails on all the edge cases.

I call that 10x, without worrying about the math or quantitative part.

To anyone that disagrees, why all the hand wringing about hiring? Just hire anyone that crosses your door, they will be fine, right?

Re:10X Programmer and Other Software Engineering Myths by vonmoltke on Tuesday March 31, 2015 @09:52AM (#9296121)
The problem is that there may be a domain you can drop Jessica and Jacob into where they become equivalent, or even flip-flop.

My problem with the myth is the part that posits there are a bunch of programmers you can drop on anything and have them be more productive than the average. They exist, but they are very rare, just like Einstein-caliber scientists are very rare. In fact, you connected "10X" with "six-sigma"; that is about 4/1,000,000.

> To anyone that disagrees, why all the hand wringing about hiring? Just hire anyone that crosses your door, they will be fine, right?

I have complained many times in the past about the hand-wringing. I think you are creating a false dichotomy between hiring "10Xers" and hiring anybody. There is a gaping chasm between those positions, and in my opinion the proper place to set your bar depends on a serious assessment of your company and your needs. In this context the demand for "10X" engineers comes off at best as hiring voodoo and at worst as an excuse to not hire anybody like the company principals.

Re:10X Programmer and Other Software Engineering Myths by RogerL on Tuesday March 31, 2015 @10:17AM (#9296315)
Why is that a problem? Maybe Jacob should be doing enterprise development, or maybe he should be a chef. We aren't saying Jessica is a 10x human, just that she is 10x at the assignments that she has been given, or made on her own. When I assign projects I think about a person's ability. Not just what they know, but what I want them to know in the future, how quickly they might get things done, how much technical debt they will either create or retire, and so on. It's inexact, but roughly, yes, 10x people exist.
Re:10X Programmer and Other Software Engineering Myths by vonmoltke on Tuesday March 31, 2015 @06:05PM (#9300227)
So, the problem is this. The myth is about a "10X programmer". No qualification. If you look at hiring discussions, there seem to be a significant number of people in these circles that believe there are programmers who are nearly 10 times as productive as the average (or bottom; this seems to change from poster to poster) at nearly everything they touch. If you don't believe me, read some of the hiring discussions here.

Jessica is not a "10X programmer". Jessica is a "10X $TASK programmer", where $TASK may or may not comprise an entire role. $TASK might even be as large as "web dev" or "enterprise dev". It is nearly impossible to screen for, though, unless someone has directly comparable work experience, where directly comparable includes intangibles like work environment.

Re:10X Programmer and Other Software Engineering Myths by crdoconnor on Tuesday March 31, 2015 @09:52AM (#9296126)
I find the 10x difference in productivity isn't usually that evident in singular tasks that a reasonable programmer could complete in a day or less. A difference of 2-3x there is more normal, whereas 10x would be exceptional.

A long, drawn out project is where real productivity difference will become evident though. Developers who don't mire themselves in technical debt can easily become 10x (or more) productive than those who don't.

Re:10X Programmer and Other Software Engineering Myths by Tloewald on Tuesday March 31, 2015 @09:43AM (#9296051)
The real problem with the 10x programmer idea is that the programmers we all think of do not necessarily write more code, or even write a given piece of code faster, they write more valuable code -- code that most other programmers simply wouldn't or couldn't write.

My favorite example of this is the -2000 lines of code story about Bill Atkinson (QuickDraw, MacPaint, HyperCard):

http://www.folklore.org/StoryView.py?story=Negative_2000_Lin...

Re:10X Programmer and Other Software Engineering Myths by fweespeech on Tuesday March 31, 2015 @10:00AM (#9296179)
> Ok, let's set aside "10x" because many previous discussions about it have shown it to be a distasteful description to some. For those who do not believe in the "10x programmer", how do you feel about programmers such as John Carmack (Doom, Oculus)[1], Fabrice Bellard (ffmpeg, pi algorithm)[2], Linus Torvalds (Linux, Git), TJ Holowaychuk (node.js projects)?

Have you noticed how you have only listed programmers with skillsets that go beyond programming [except for the one I don't know know anything about, TJ]?

The first 3 of these are really programmers with management skills and the ability to build enough of a following to contribute to their projects. Their ability doesn't stem from a unique, magical "10x programmer" capability but rather the ability to get others to buy into their vision.

Linus didn't succeed because he was a better programmer than 99.9% of the population. Linus succeeded because he got other programmers to buy into his vision and was a good programmer.

You remember John Carmack more than Romero, not because of the skillset difference but because of John Carmack's ability to organize other programmers.

I understand there is a desire to honor these people due to technical skill alone but it isn't their technical abilities that made them famous. If it was, you'd be including a bunch of other people with some very impressive list of technologies to their name. Rather than people who are "well known". Its the social skills that allow people to achieve fame that cause you to remember them like this.

Re:10X Programmer and Other Software Engineering Myths by BasDirks on Tuesday March 31, 2015 @09:29AM (#9295971)
The ones you mentioned are 100x programmers, both in prowess and impact.

People need to stop obsessing over the term. It's awesome that great programmers exist. Stop being so insecure.

Re:10X Programmer and Other Software Engineering Myths by bonif on Tuesday March 31, 2015 @04:37PM (#9299714)
Agreed. And the same happens in every field, sports are a good example, you see the 100x people on TV.
Re:10X Programmer and Other Software Engineering Myths by awkward on Tuesday March 31, 2015 @09:41AM (#9296046)
The objection to the term is not because all programmers are average, or because any programmer could step up and be a John Carmack. The objection is that the idea of the 10x programmer creates the perception that hiring someone of that caliber for a low to mid level engineering position is an achievable goal that businesses should aspire to, and for less than 10x the price.
Re:10X Programmer and Other Software Engineering Myths by Morendil on Wednesday April 01, 2015 @02:36AM (#9301963)
This.

Also, the (rarely surfaced) assumption that whoever is doing the hiring can tell a talented programmer from an average one. This is rarely the case.

Re:10X Programmer and Other Software Engineering Myths by eloff on Tuesday March 31, 2015 @09:54AM (#9296138)
Where do these guys who deny 10x engineers work? I work in a company with ten devs. There's about a factor of five between the productivity of the top guys vs the bottom guys. That's after the worst performers have been let go. It's impossible for me to deny that some programmers are just really that much better at their trade than others.
Re:10X Programmer and Other Software Engineering Myths by vorg on Tuesday March 31, 2015 @10:39AM (#9296495)
> That's after the worst performers have been let go

Better to look at the situation including such bad performers...

It's often difficult for 3x programmers to make it at first because the 1x programmers will often gang up on the 3x programmer to protect their own jobs, although the behavior is often unspoken about between them. Many places will thus hire 3x programmers in bulk as a separate team, but many -0.5x programmers will slip in as well. A group of such 3x programmers will often put one of their own number to watch over, say, four of the -0.5x programmers, who will thus appear to be a 1x programmer, 3 + (4 * -0.5) == 1. 10x programmers can be groomed from a 3x programmer over time, but it's difficult for a business to pull off because the other 3x programmers will gang up on them, similarly fearful for their own jobs. And only big Silicon Valley names can hire 10x programmers in bulk.

Re:10X Programmer and Other Software Engineering Myths by dahart on Tuesday March 31, 2015 @10:17AM (#9296311)
Nobody denied it. Laurent went looking for evidence (to reinforce it, as a matter of fact) and found there isn't any strong evidence to back up the number 10, he found out that it's mostly a narrative that has been repeated over the decades. He reiterates that he sees a wide variety of programmer performance, and that lots of people are confusing what he's saying, that there isn't evidence, for saying that all programmers are roughly even in productivity.

How do you measure productivity on your team? How do you arrive at the factor of five?

Re:10X Programmer and Other Software Engineering Myths by eloff on Tuesday March 31, 2015 @10:42AM (#9296514)
Well the number ten has obvious origins. Thanks to evolution we have ten fingers that we like to use to count with. I don't think many people believe it's based on some rigorous data.

A lot of people comment on HN that there are no 10x engineers, which I find strange. How can you work in this industry and not be convinced of the huge gradient in productivity?

We measure productivity with #bugs, #points of features, etc. It's pretty crude, but better than lines of code. It really doesn't tell the whole story though, because most of what makes a 10x engineer is not solving problems faster, but solving the right problem in the first place.

Re:10X Programmer and Other Software Engineering Myths by emodendroket on Tuesday March 31, 2015 @10:10AM (#9296264)
Anecdotal, subjective reports. Real rigorous; I can see why someone should find this convincing.
Re:10X Programmer and Other Software Engineering Myths by eloff on Tuesday March 31, 2015 @10:35AM (#9296450)
You must work in a really sad place.
Re:10X Programmer and Other Software Engineering Myths by dean on Tuesday March 31, 2015 @10:30AM (#9296418)
"10x" is a very specific, concrete statement about programmer productivity. And when people use it, they take it as a literal statement. And they apply it across the board. They think a "10x" programmer can actually write any code 10 times faster than an average programmer. But nobody can even quantify what programmer productivity is, so concrete statements like "10x" are misleading.

Even in this thread. Saying John Cormack is a "10x" programmer because he wrote Doom seems silly. (No offence to John Cormack.) There are lots of games out there. Why Doom? Or is it that anyone who wrote a game is a "10x" programmer. Or Linus Torvalds, why does writing Git make you a better programmer than writing Subversion? And what is "productivity" when writing code for yourself, versus writing code for your employer?

Einstein was not a "10x" scientist. He was a genius. The only problem is that there aren't many Einsteins out there. To make it your goal to only hire the Einsteins of the world, or to try to figure out how to 'make' more Einsteins, is short-sighted for an employer when there so many good, but non-genius programmers out there. But if that is your goal, at least be honest and say you are looking for geniuses.

The term "10x" is a literal measure of productivity. It defines the rate of output per unit of input. And that is why it is a myth.

Re:10X Programmer and Other Software Engineering Myths by Delmania on Tuesday March 31, 2015 @09:39AM (#9296033)
"If they are a league above other average programmers, what's an acceptable description that you'd use?"

Dedicated. These individuals have mastered their domain; they have spent years learning and practicing. They have built knowledge and skills that can be transferred to other domains. I think people need to stop focusing on the label, and start focusing on the process.

I don't believe a person is born a 10X programmer. It's only achieved through discipline.

Re:10X Programmer and Other Software Engineering Myths by RogerL on Tuesday March 31, 2015 @10:06AM (#9296229)
Do you have any evidence for this? We pretty much get Gaussian distributions whenever we try to measure inherent skills. I happily stipulate the measures are difficult and flawed, but still, Gaussian distributions with a large variance is just how it plays out. And, it correlates with everything I have seen in reality.

Explain MVC to a 5 engineers with equal experience and language skills, and 1 might end up finishing your sentences and extrapolating to other domains, while musing about limitations and gotchas, another couple will just sort of follow along, and perhaps one fails to understand and keeps asking you to repeat yourself and explain in different ways. Engineer 1 will go back to their desk and spin out reams of productive code, whereas #5 will make a mess of it and create technical debt. #5 will put many more hours into it than #1, for whom this is effortlessly assimulated. People have differing abilities.

I am really good at programming. I am moved deeply by music, but my interpretations when I play are somewhat pedestrian and/or copied (I play classical guitar & piano). I don't even grok ballet. I don't get how the movements correspond to the music, I don't understand why person A is rated better than B, and so on. It's an alien language, and I could study for 10 years and it still would be. Yes, the greats (in performance and appreciation) worked harder than me at it, but even if I worked that hard I'd still be a ballet doofus (citation needed).

Re:10X Programmer and Other Software Engineering Myths by jsaxton86 on Tuesday March 31, 2015 @10:02AM (#9296192)
Do you believe anyone can become a 10X programmer? Or do you need a certain level of talent in order for the hard work to pay off?

My high school had an introductory programming class. Most students hadn't done any programming before, yet there were a couple of students who quickly understood the concepts and could solve weeks worth of assignments in a single day, whereas the rest of the class struggled. Those students, for whatever reason, were able to learn programming much more quickly than the average student, and I believe those students they'd see a greater return on their investment of hard work.

Here's another anecdote: do you know any experienced engineers who work 12 hours a day and still struggle to do relatively easy jobs? I do. Talent is an important piece of the puzzle. Hard work is also an important part of the puzzle. Both are important.

Re:10X Programmer and Other Software Engineering Myths by fsk on Tuesday March 31, 2015 @08:35PM (#9300843)
Do you believe that everyone can become an NBA player no matter how hard they try?

The NBA players are the top 1-in-1000000 world's best players.

A programmer only has to be 1-in-100 to be competent. The other 99-in-100 should find other careers.

Re:10X Programmer and Other Software Engineering Myths by DennisP on Tuesday March 31, 2015 @10:00AM (#9296175)
You're talking about crystallized intelligence. Fluid intelligence is also a real thing: "the capacity to think logically and solve problems in novel situations, independent of acquired knowledge." Obviously that's important for programming.

A related concept is "general intelligence," which behavioral genetic research has shown to be highly heritable.

http://en.wikipedia.org/wiki/Fluid_and_crystallized_intellig...

http://en.wikipedia.org/wiki/G_factor_%28psychometrics%29

Re:10X Programmer and Other Software Engineering Myths by 32bitkid on Tuesday March 31, 2015 @10:15AM (#9296301)
I wonder how much of the "Fear to 10x" mentality comes from the illusion that software development is not a team sport; that if I go off in my hole, work hard enough, think enough then I can achieve anything.

I think the supposition that all that is required is "discipline" is very difficult to accept for anyone who has ever seriously played competitive sports...

As an athlete you end up realizing pretty early that in spite of similar levels of training, practice and dedication, you just don't have the talent (raw or cultivated) for certain levels of performance. It's just not going to happen. For me, I _maybe_ could have made a Division III or Division II team, but there was no way I was going to get accepted at the Division I-level, not to mention Pro-level. It just wasn't going to happen.

But what is perhaps more distressing, is that you it's relatively easy to recognize the individuals that do. The ones that have that the "10x factor". Its the girl or guy that you get benched for so they can go in. They one that the team rallies behind to win. Because they _can_ win the game; they can make the shot, they can focus through the exhaustion, they can make the "play", see the big picture. It's a thing...

I think thats the real distinguishing characteristic of 10X ______ (fill in the blank): they have the ability, within a group of skilled peers, to _create almost unilaterally_. While the rest of us, require the support of the team to accomplish pretty much anything in that environment.

And its easy to ignore/forget about the vast majority; which haven't cultivated the skill/craft to perform any task beyond basic.

Re:10X Programmer and Other Software Engineering Myths by icebraining on Tuesday March 31, 2015 @09:49AM (#9296098)
But aren't some people born more disciplined?
Re:10X Programmer and Other Software Engineering Myths by shubhamjain on Tuesday March 31, 2015 @09:43AM (#9296059)
> Ok, let's set aside "10x" because many previous discussions about it have shown it is a distasteful description to some. For those who do not believe in the "10x programmer", how do you feel about programmers such as John Carmack (Doom, Oculus)[1], Fabrice Bellard (ffmpeg, pi algorithm)[2], Linus Torvalds (Linux, Git), TJ Holowaychuk (node.js projects)?

I don't question that those brilliance of the people you mentioned but as edw519 says, in his free ebook [1],

> I'm not suggesting that you'll go out and write Rails in 3 weekends. What I am suggesting is that the more I meet "famous" hackers and the more I meet people from this community (online and offline), the more I realize that there's not really all that much that separates us.

> Lot's of people are obviously brilliant. And even for those who are a little less brilliant, brilliance is only one part of the equation. Work habits, determination, perseverence, passion, and maybe most of all, belief, are just as important. Don't sell yourself short.

What I suggest is, a magical genetic gift, might not be the reason why those guys achieved so much. It might be because they were more "aggressive" and "focused" hackers. They insisted on building everyday and chose to work upon very challenging problems.

[1]: http://static.v25media.com/edw519_mod.html

Re:10X Programmer and Other Software Engineering Myths by k__ on Tuesday March 31, 2015 @09:45AM (#9296069)
Maybe the problem is, that hiring companies think that programmers like Carmack or Torvalds are so plentiful that even they have a chance to score one of them.
Re:10X Programmer and Other Software Engineering Myths by rakoo on Tuesday March 31, 2015 @09:53AM (#9296130)
To me a 10x programmer has never been the definition of an excellent programmer, but a programmer that allows the overall productivity of his team to be multiplied by 10.

Maybe all programmers in the team have to build a website from scratch in Ruby, and he decides (and delivers) to build a web framework that allows his team to be 10 times more productive, not having to bother with the whole HTTP stack but only care about the application, i.e the added value of the team.

Maybe he created a new programming language that allows the logic to be expressed and deployed 10 times as fast, and allows the code to be X times more maintainable than before; that's where productivity booms and the team (and in the end, the company) can deliver real products in accordance to what the users want.

It does mean that the 10x programmer is better than others, but that's not the way this definition defines him: it only care how much he enables other to be more productive.

Re:10X Programmer and Other Software Engineering Myths by sz4kerto on Tuesday March 31, 2015 @09:47AM (#9296079)
Because they are people who found their places where they can strive. Hire Carmack into an accounting software GUI dev position, and you probably won't see a 1000% advantage compared to his peers.

In some other situations/environments he might be even worse than his peers.

Right people, right place, right time, right behavior.

Re:10X Programmer and Other Software Engineering Myths by Swizec on Tuesday March 31, 2015 @09:51AM (#9296111)
Hence why it's been a social faux pas for the last 10+ years to tell a non-hire anything other than "We're not a match".
Re:10X Programmer and Other Software Engineering Myths by olavk on Tuesday March 31, 2015 @02:15PM (#9298644)
Nobody would deny that there exist both amazing programmers and really crapper programmers. The thing is, without any hard data this information is pretty useless. How is productivity distributed among developers? Is 1/10 of developers 10x productive compared to the average, or is it one out of a million? Is is a bell curve or a power law distribution? We don't know. So we cant use the information in hiring, compensation, team composition, project management or anywhere else.
Re:10X Programmer and Other Software Engineering Myths by Delmania on Tuesday March 31, 2015 @10:45AM (#9296545)
In response to the response to my first comment, a lot of what is missing from these discussions is an understanding of how the brain acquires knowledge and builds skills. I recommend https://www.coursera.org/learn/learning-how-to-learn/ as a good starting point.
Re:10X Programmer and Other Software Engineering Myths by sterlingw on Tuesday March 31, 2015 @12:19PM (#9297492)
I highly recommend this course.