Hacker News new | past | comments | ask | show | jobs | submit login
10X Programmer and Other Software Engineering Myths (fogcreek.com)
52 points by GarethX on Mar 31, 2015 | hide | past | web | favorite | 80 comments



>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


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?


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.


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.


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.


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.


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...


> 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.


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.


Agreed. And the same happens in every field, sports are a good example, you see the 100x people on TV.


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.


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.


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.


> 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.


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?


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.


Anecdotal, subjective reports. Real rigorous; I can see why someone should find this convincing.


You must work in a really sad place.


"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.


"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.


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).


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.


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.


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


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.


But aren't some people born more disciplined?


> 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


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.


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.


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.


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".


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.


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.


I highly recommend this course.


I worked at a start-up dot-com. A programmer on my team was given a task, and a research paper with an algorithm that she could implement. We waited. It became critical to the company, and I decided to look at the paper to see how bad it was. In a matter of hours, I had a working solution. I told my boss, and we agreed to use my code in secret, while my co-worker finished her task. It took her a month of uninterrupted work... to give up.

OF COURSE there are 10x differences between programmers.

I feel like I'm relatively at the top of my game, and I know people who code circles around me. One of them has eidetic memory, and is also a genius to boot. He reads a manual to learn a new programming language. He's literally fluent in a programming language, and uses the correct idioms, in a matter of hours. Meanwhile, I'm copy-paste-modifying, doing everything like I would have in C++, for days or weeks.

An 18-year-old won Google Code Jam on his first try. I rest my frickin case.

Does there exist a programmer who is 10x as productive as another programmer, at a given task, given they both have the same amount of experience? OF COURSE ones like that EXIST.

If you want to talk about how common they are, how wide the spread really is, and underlying reasons, then yes, that warrants research.

But you don't need STATISTICS to prove something EXISTS. Anecdotal evidence is perfectly valid to prove something EXISTS.


I think like a lot of myths, there is a kernel of truth in the 10x programmer myth.

The fact is, some problems are hard. Some problems are beyond the grasp of some developers. Even given unlimited time an individual may not ever accomplish the goal. I can certainly think of problem sets where that is true of myself.

In those specific circumstances, that person can be considered a "10x programmer" when compared with another.


It is more than a kernel of truth if you've worked in certain areas. I believe in x100 and x1000 programmers because I've seen individuals who have introduced negative productivity (and I don't mean juniors who take time to get brought up to speed).


Agree 100%. Joel had a great essay on this back in the day called "Hitting the High Notes" [1]

Perhaps a better way to look at this is to assume the average is 3X, and there exist developers at X, 10X, 0X, -X, and everywhere in between. And this productivity depends massively on circumstances like the size and makeup of the team, the established codebase, and the technical difficulty of the work.

I've worked with several individuals that are absolutely a 10x for a technically-difficult project where they are leading the architecture, but range from -1X to 0X as a regular contributor to a large project.

1. http://www.joelonsoftware.com/articles/HighNotes.html


Well, sure. I suppose the canonical example is Ron Jeffries flailing around for several blog posts trying to write a sudoku solver without coming anywhere near achieving it. I still don't think it's helpful to uncritically repeat the stuff about "10X developers," though.


Ten times zero is still zero.

It's a given that some people are more productive than others. They are faster typists, or they can architect a system of similar quality faster, or they can just write good code faster. But remember the idea of 10x came from studies of similarly experienced programmers. And supposedly, the order of magnitude comes from actual data, although I've never been able to see it.

For most trivial problems, or for a given domain, I think it's easier to say one programmer is qualitatively better than another. But that may change if the domain or code base changes, and in my experience as the problems you're solving get more and more complex, it becomes impossible (or at best just boils down to who you think can crank out a POC faster, which is itself probably a specific domain of programming).

I just have trouble accepting the argument that one person is literally, quantitatively, empirically ten times the programmer as someone else. Maybe that makes me one of the 1x's :)


> But remember the idea of 10x came from studies of similarly experienced programmers. And supposedly, the order of magnitude comes from actual data, although I've never been able to see it.

How are we determining experience? If we are talking about years in the field, years with a given language, years using a given language in the same way? 'Experience' is fluid enough of a word that it would be crucial to have an agreed upon concrete definition before we could continue.


The whole point of the article is that the original claim from the original data is suspect and quite likely extremely outdated even if it was a valid conclusion in the first place.


That's my point as well (which I probably didn't articulate well enough).


That might be true, but those problems are rare. The majority of developers will never encounter one, and if they do they'll use a library or middleware to solve the problem and they'll just move on, maybe without even realising they've faced a problem they could never have solved themselves.


I think we should replace "10X" with "1X" and all the existing "1X" should be re-labeled "1/10X". Nothing motivates the drones like negative reinforcement.

Also, I'm hiring. ;)


I think it's hilarious that Fog Creek is devoting effort to debunking a large part of the core of Fog Creek; namely that there is such a thing as a 5x or 10x programmer.

http://www.joelonsoftware.com/articles/HighNotes.html

His theory is that salaries are distributed fairly normally so the top of the heap might only demand 2x the salary of an average, and only 4x the salary of the bottom. But they might be 10x as skilled or productive. That means that they're actually cheaper. 10x work divided by 4x cost = 2.5x productivity.


Some points toward why this is not hilarious or even unexpected:

* They aren't really devoting effort, not beyond setting up a skype recording and transcribing the result. The effort comes entirely from the author, Laurent Bossavit, they are interviewing. * The claim is against the existence of rigorous evidence that supports the idea that 10x programmers are around in sufficient quantity to be a practical consideration for people involved in the creation of software. Bossavit explicitly states that he's not saying that 10x programmers don't exist at all. He's not even saying that they aren't reasonably common. Just that there's not rigorous evidence that demonstrates the phenomenon, even though he's found many citations that misleadingly imply the existence of such evidence. * Joel's claims in the article are anecdotal, and don't appear to be meant as a rigorous proof, but as a feeling extrapolated from his personal experience. So there's really not a lot of disagreement between what Joel's claims and Bossavit's. * Even if there had been a direct disagreement, why should that preclude a Fog Creek blog from exploring ideas that are incompatible with one of the multitudes of ideas that their very opinionated founder has published? Fog Creek is very concerned with attracting developers as far to the right of the bell curve as they can manage. Forbidding the exploration of thoughts independent of those the founder has expressed is extremely counterproductive to that goal, since highly competent people tend to have their own ideas about how to do things. * Finally, even if we were to treat Fog Creek and Joel Spoelsky as the same entity, we should expect such thought leaders to entertain and grapple with thoughts that seem to be contradictory to their past opinions, especially when they come with a more thorough examination of the available evidence. Being a 'flip flopper' is only a disadvantage in politics. In reality humans have to make determinations under uncertainty, and therefore do not always get things right. It's a sign of intellectual maturity to be able to revise one's previously held/stated beliefs.


He doesn't say that the 10x programmer is a myth. Just that there isn't academic research that proves it to be true, which hardly means that it's wrong.


Right. In order to "debunk the myth of the 10x programmer", I'd expect to see research that shows that the phenomenon isn't true - not just that research wasn't modern enough or wasn't completely relevant to modern methods of programming.

In my experience, there are 10x programmers out there. I've known a couple in my 20 professional years who exceeded that.

The fact that there isn't research proving it only tells me that I don't know distribution of that kind of talent, not that it completely doesn't exist.

You could say similar things about the notion of "debunking" the exponential cost of defects.


This is very much one of those things that after a couple years in the industry you'll just intuitively have a grasp on. And when one has a large sample size of similar intuitions stemming from experience...well, it's hard to completely discredit such notions.


The real question is if we should expect their to be evidence behind it. And considering the funding, the opprotunities for research, the difficulty of doing a study someone won't easily pick apart, and the community push to verify it at a peer reviewed level, I am not surprised we don't have peer reviewed research.

For starters, I've yet to see a good way to measure productivity.


Not a lot of academic research that proves bigfoot exists either.


Not a lot of evidence that the tree outside my window functions similar to trees that have been studied. Would you suggest that the assumption that it does is as reliable as the assumption bigfoot exists?


I don't think people realize how rare 10x programmers are. If you read the book iWoz, you will realize Steve Wozniak was definitely 10x more productive than other programmers. He was doing stuff it would have taken other people years to figure out. I think it's really on the bleeding edge where the 10x productivity shows.

In 1997 I think I could have done a web site 10x faster than most people, because I had been obsessed with it. At this point that's no longer true. Right now there are people that can do machine learning stuff 10x faster than other people because they are obsessed. Because they are experts and deeper into the 10,000 hours it takes to become an expert. The phenomena is more like that book outliers.


the 10,000 hours it takes to become an expert

Speaking of myths... ;)


One of my favorite pieces of research in this space is DeMarco & Lister's "Programmer Performance and the Effects of the Workplace." Basically (go read it! it's short!), they show that the difference between private offices and tiny cube/open floor plans is strongly correlated with being in the top 25% vs. the bottom 25% of developers, which is a difference of around 2.6x.

Not 10x, but also non-trivial for those of us who don't have Facebook-like dollars to throw at filling desks in an ever-larger open floor plans.


Maybe the better programmers have more leverage to negotiate better work conditions, so it isn't a causal effect.


Yes, this is mentioned in the paper, right next to where they talk about the correlation.

The most telling part, though, is where they take some of the lower-25% from cubicle farm/open office spaces and put them in private office spaces. Guess what happens?


I see, they give evidence for both factors.

1. Better programmers are more likely to have negotiating leverage.

2. Taking a poor programmer and moving him to a quieter space improves his productivity.

I'd still like to see a proper modern scientific study comparing office environments. It's very hard to do correctly, because there are too many variables.

Also, there really are 10x programmers. At my current job, the new programmer took a couple of weeks to do something that I thought would take a couple of days. (and I was already familiar with the codebase, so my estimate of how long it would take me to do it was probably accurate) That's only 5x, but he's be deficient in other ways, such as not noticing severe bugs until other people pointed them out.


Lets say a great senior coder is twice as good as an average junior coder. The factor ten comes into play, when teams grow up, skills get diluted, and communication overhead kills the project.

Lets say the great senior was able to code 20 hours per week, and used the remaining time for email, a weekly blog, walk the dog and other recreations. He now has to lead a team of a few average coders, and as hiring hyped a lot of sub average people (1/4 of his own productivity), who are only working 8 hours effectively because the rest is wasted by powerpointless kickoff meetings, and recreational office coffee talk.

imho, the factor 10 comes not from the coder, but from the system. There are some companies where its 10 times more fun to work, likely those attract those who are 10 times more productive.

The software crisis for big projects is also a system crisis. Those projects start by big companies betting on a budget, without knowing whats really in the sack, and without knowing whom to choose to solve the problem from their pool of employees. Once one of them gets the projects, the middle management starts to fight each other. Trying to hire good coders from other projects, or trying to get bad people into the new budget. The resulting internal fluctuation will cause a mess on any project.


I am glad that someone took the efforts to dig around and dispel these myths. But then even more important is the question - why we don't have enough evidence based scientific studies in the world of software?

My guess is that it is because no two software projects are alike. Differences stemming from differing technology stacks, to domains or people skills, it is practically impossible to generalize anything across them.

Unless we all standardize on a one true way of software engineering, such folklores will continue to exists and there will be a dearth in repeatable conclusions.

PS: However, I do agree with Laurent that we can work towards aggregating numbers from several real software projects than rely on unsubstantiated folklore.


>why we don't have enough evidence based scientific studies in the world of software

If you're interested in this stuff you could do worse than checking out Andy Oram and Greg Wilsons 'Making Software: What Really Works, and Why We Believe It' a series of literature reviews on various topics including the 10x programmer thing, different development methodologies and practices. It's not perfect but it's a good start and helped me to think critically about my own practice.


>I am glad that someone took the efforts to dig around and dispel these myths.

I'll admit that I only focused on the x10 programmer one, but nothing in the transcript dispelled the notion for me.


Convincing evidence for claims regarding software engineering should be based on:

1. A large number of programmers. Statistical significance, also real development is done in teams.

2. A long time - conclusions valid for short snippets do not necessarily translate to large projects where people in a team have to cooperate.

3. Controlled environment - passively getting statistics from existing companies won't cut it.

So you need to pay a programmer's salary to a large number of people for a longish time which is expensive. Perhaps this could be worked around by having deals with existing companies to let you control some factors in their existing processes. Maybe not perfect but still better than anecdata.


Are there similar myths in other professions?

It seems like software as an industry is very prone to myths, poor introspection, and no-true-scotsman methodologies that purport to solve or harness the resulting "insights".


  > So this is the notion that there is a 10 fold 
  > difference between productivity and quality 
  > of work between different programmers with 
  > the same amount of experience. 
  > Is this fact or fiction?
One thing everyone forgets: there's never the same amount of experience. Different people have different experience and therefore perform differently on things, where difference in experience matters. So, obviously there could be even a 100 fold difference.


He make a good point about there being no studies proving "10x programmer". I don't think it is something you can prove with a study. You would first have to define the metric you are measuring. Lines of Code per minute? Time it takes to build a basic fizzbuzz, web app, compiler? Standardized test?

Once you defined a measurement people could study for it. Someone who has memorized a gzip function is going to make a compressor 100x better than I am going to from scratch.


Interestingly, one of the key origin vectors[1] for the 10X meme appears to have been a 2005 blog post by Mr. FogCreek himself:

http://www.joelonsoftware.com/articles/HighNotes.html

[1] In the sense of https://en.wikipedia.org/wiki/Vector_(epidemiology)


This is really one of the stupidest ideas that have arisen in this industry in recent memory. I wonder if other industries consider hard-working, intelligent and talented people to be 10x-ers.

10x chef

10x receptionist

10x writer

10x mechanic

SMH...


I believe not only in 10X programmers, but in 1000X programmers. I work with a senior lead developer who has decades of experience, but asks for help with the most trivial issues (like, how an overridden method would behave and how to call the parent class implementation.)

I also firmly believe copy-pasting should be disabled on sites like Stack Overflow.


I don't think it's healthy to have an opinion on disabling copy/paste on Stack Overflow. It far too trivial.

If these are the kind of problems that you're experiencing then I think you need to find a more challenging environment where you're the worst developer in the team.


Copy/Paste functionality is in the browser not on the site.


I love these videos, but the production values are terrible. Invest in a good camera and microphone setup.


Sorry about that, we're trialing some new software which will help improve future videos. For now, hopefully, the transcript will fill any blanks.


I dont really mind the video, but the audio makes it really difficult to stay engaged.


Or at the very least move your headphone-mounted microphone near your mouth.


And pick audio codec settings carefully - it sounded to me like excess audio compression artefacts. Gave up after 30 seconds as the audio was so bad.


He doesn't actually use that as his mic, it's just for headphones - there's a much better one just below the shot.


Maybe there's a certain problem a developer was born to solve. Like the hummingbirds whose beak only fits one type of flower. On this problem, the developer could be 10x, on others he sits with his peers.


Bullshit. If there are no 10x programmers in your group, it's because your group is tiny, you can't hire 10x programmers, or because you're stifling your 10x programmers with bureaucracy.




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: