That is a childish misrepresentation of what I said. If you
don't understand where the statement "a good programmer can be
100x productive as an average one" comes from than my guess is
you haven't worked with any *really* good programmers.
And that's insulting, because I have worked with really good
programmers. A lot of them. And I know a lot more, including
some of the very best (go to a meeting of the ISO C++ committee,
and you'll see what I mean), none of whom claims to be able to
write a good program without help---in fact, I find it a
consistent characteristic of the very best (people like
Stroustrup, for example) that they are generally the quickest to
acknowledge that good programs require teamwork, that you can't
do it alone.
Surely you don't claim to have worked with every programmer on
Earth?
I'm an independent consultant, and have been for 25 years. I've
worked with a very large number of different people. And I know
enough about human beings to know the expected degree of
variance. I repeat: Superman only exists in comic books. No
one is 100x better than "average", in anything. No one is
perfect, and capable of producing a perfect work, in any field.
In most engineering fields, this has been acknowledged, and
there is often even a legal requirement for review. In software
engineering, we're not there yet; the fact that bad software
is tolerated, and even widely used, is proof of that. (And of
course, review isn't perfect either, since the reviewers are
also fallible humans. So we occasionally have bridges that
fail. The percentage of bad bridges, however, seems to be to be
a lot less than the percentage of bad software.)
Given that you have not, why isn't it possible that
some of the programmers you have not worked with are
significantly better than the best programmer you have worked
with? You must concede it as, at a minimum, logically
possible.
As I said elsewhere, Superman only exists in comic books. I've
worked with enough different programmers to be able to have a
very good idea as to the variance. Some are five times more
productive, no doubt. I wouldn't exclude even ten times more
productive. But that's an upper limit.
Beyond programming: take any human activity, and you'll not find
people 100 times better than the average. (For activities like
programming, which require special training, the "average" of
trained people, of course.)
Given that it is possible, why do you so fervently deny it?
Because it isn't possible. Superman only exists in comic books.
People (in general, not just in programming) don't show that
degree of variance in ability, at least not in the positive
direction. (It's an interesting question why. A genetic defect
or some such can cause extreme variance, but it's always
negative.)
I would quite happily accept you saying that you have not seen
the phenomenon - but you are claiming that it doesn't exist
because you haven't seen it. When someone digs a trench like
this they usually have a vested interest in their position
being true:
The fact is a lot of engineering process designers and project
managers would love it if programmers were homogeneous
interchangeable parts.
There's a difference between homogeneous and a 100x difference.
Programmers aren't homogeneous. Different programmers are most
skilled in different aspects, and even when they're best area is
the same, there is a distinct, measurable difference in their
abilities there. But with the exception of some (very few)
remarkably bad people, the difference isn't more than about five
times.
Note that different programmers have different skill sets. As a
consultant, I've often been used to provide "missing"
skills---the permanent employees were better than me in
application domain programming, but weren't that good in other
areas, like threading, or low level library stuff. In a very
real sense, saying that x is 100x, or even just five times,
better at programming doesn't mean anything, since different
aspects of programming require different skills.
When you see someone performing 100x better than someone else,
you'll find that the environment he's working in plays a major
role, and not just his competence.
It would make a managers job so much easier that some even try
to bury their head in the sand and pretend that this is the
case. X programmers produce Y lines of code with Z errors.
Unfortunately it just doesn't gel with reality.
That's for sure. Different programmers have different skill
sets, and can vary globally in competence. Just not to the
degree you claim.
Programmers vary greatly in their level of productivity (yes
as much as 100x).
Different environments can cause a 100x difference in the
productivity of a single programmer. (At least twice, I've
worked in environments which guaranteed negative performance,
regardless of how skilled the programmer.)
I repeat: I have seen this firsthand, I have heard firsthand
account, it has been written about in books.
I've heard a lot of war stories, too. People (myself included)
like to exagerate, and memory can play cruel tricks. That's why
measurement is so important.