Hacker News new | ask | show | jobs
by InclinedPlane 5008 days ago
The truth is that the difference is even more extreme. Good programmers are much more than 100 times more productive than average programmers.

Good programmers create features, designs, and implementations which are more elegant, cleaner, more understandable, more robust, less buggy, and much more valuable to the end user.

Consider J. Average Coder. He implements a feature in a typically half-assed way. The feature isn't well thought out, it barely works from a user perspective and has horrible usability. Anyone who doesn't think this is how average coders work has never experienced software developed by average coders. More than that, it's buggy and hacky and it serves as a development time sink, a tar trap for the entire development team. Bugs get reported and because of how messy and convoluted and fragile the code is it takes a lot longer to fix each bug. And in the end the effective productivity of that coder ends up being astoundingly low. Because the end result is a single feature that has taken a tremendous amount of coding and especially bug fixing on his part and on the part of his co-workers. The ratio of total end-user value to total invested dev-hours is incredibly low.

Now compare this with Dudley Code-right. He comes up with not only an excellent feature with high-user impact but he also comes up with a very elegant way to implement it. Boom, it's done, and nearly bug free. What bugs are found are quick to fix because the code is so clean and well put together. The ratio of total end-user value to total invested dev-hours is through the roof in comparison. Not just a factor of 100 different, but factors of thousands different.

There are tons of easy examples out there in the real world. Look at open source projects with tiny dev. teams, like nginx or varnish, and the value of those code bases relative to the effort behind them, then compare that to some random line of business software abomination from the enterprise trenches that has had hundreds of thousands of dev-hours dumped into it.

4 comments

This is called "an argument", one in which you appeal to some stereotypical descriptions of programmers which may or may not be accurate.

It's not the same thing as what we call "evidence", which consists of actually going out in the world and collecting information from more than a tiny and highly biased sample (which, like it or not, is a fair description of the set of programmers most of us will run into over the course of a career).

For instance, for one "Dudley Code-right" who is just as you describe, how many "Dudley Code-fast" exist, who are just as you describe except that no one else can understand their elegant constructions and it turns out that the "nearly bug-free" part, well... disappoints? Dudley Code-fasts look highly "productive" for a little while, then cause big problems down the road.

What we're dealing with here is the representativeness heuristic, which often makes us misjudge statistical truths. It's akin to the way people are much more afraid of flying than of driving, even though the former is orders of magnitude safer.

You can create a fictional story to prove anything.
And some things you don't have to prove, because you've seen them with your own eyes. Have you ever seen a programmer that is crazily more productive than another? If yes, then you know what we're talking about.

It might not be 10x or 20x --which is hard to measure anyway--, but we've all seen programmers that are far far better than others.

What's crazy to me is why would anyone try to argue otherwise. Isn't the same true for EVERY other field of activity?

There are painters (e.g Picasso) that are crazily more prolific than other painters. There are inventors that are crazily more prolific than other inventors (cough Tesla cough). There are athletes that are crazily better than other athletes. Writers. Composers. And so on. On some of those fields (like sports) we even have objective ways to measure how better they are. But in all fields, we know there are geniuses, crazy good guys and average ho-hum dabblers.

So, why exactly, would it be any different in programming?

So, why exactly, would it be any different in programming?

Sadly, it's not.

Thomas Kinkade was, I believe, far more prolific than Picasso. But I do not want Kinkade-grade developers.

There needs to be some other metric for software development. Figuring out what that should be, and how to accurately measure it, is non-trivial.

>Thomas Kinkade was, I believe, far more prolific than Picasso. But I do not want Kinkade-grade developers.

I meant "prolific" in the sense of producing lots of GOOD work, not merely churning stuff.

Which for Picasso, it was. If anything, the critics agree (which is as far a metric as you get in the fine arts).

>There needs to be some other metric for software development. Figuring out what that should be, and how to accurately measure it, is non-trivial.

Sure, but the "good programmers are X times more productive than bad" (as I see it) is not about producing more code, but about producing more of what a project needs. I.t they are qualitatively more productive, not quantitatively.

Come to think of it, it sounds more of an obvious statement, almost a tautology or truism: "good programmers produce MORE good code than average programmers".

Downvotes?

I don't see any offensive parts in my comment.

Is there any part of my argument which is not trivially and patently true?

Consider Dudley Code-right. He implements a feature which isn't well thought out, barely works from a user perspective , and has horrible usability. He comes up with a very elegant way to implement it. Boom, it's done, and nearly bug free. What bugs are found are quick to fix because the code is so clean and well put together.

Now compare this with J. Average Coder. He implements an excellent feature with high user impact in a typically half-assed way. The ratio of total end-user value to total invested dev-hours is through the roof in comparison. Not just a factor of 100 different, but factors of thousands different.

You are above average, right?