This and "if you read books, you're already way ahead of the pack" or similar statements are just feel-good statements. It's very clear that the other guy and the two original team members are way more productive than I am despite me trying to hit all of the recommended reading books and reading HN/subreddits/blogs/etc.
You can read HN/books/stack overflow and be really good as long as you take advantage of the information and actually practice it in the real world. But until you go and actually measure real things like LOC/fix time/projects completed, the signals "reading HN/books/whatever" are just cultural signals.
Nailed it.
Average programmers tend to: * like new projects * want to build "new things" * not like fixing bugs * not like reading code * not like to redo their designs/code * think their code is as good as it gets
Good programmers on the other hand * tries to find joy in thr task at hand * thinks their old code is bad * aren't invested in their own designs * don't fear trying solutions * reads code rather than docs about the code * don't mind fixing bugs * happy when the code quality goes up, hates it when it goes down.
In other words - good coders CARE, average coders just want to have fun and build stuff. This means the latter group doesn't build the understanding of how to build good, bug free code. They prefer to build themselves into a corner rather than throwing out their designs. Thus they get less practice.
A bad programmer can do simple tasks nearly as fast as a good programmer.
But at a higher level of difficulty that difference might be 10X. Hell, it might even be infinite.
For example, the best NFL QBs will win 10X as many games as the 3rd string backups. But you wouldn't call them 10X better. In fact they are probably only 10% worse than the elite QBs in their completition percentage.
Or if you raised the height of the hurdles 4 inches in hurdle racing, some of the racers wouldn't be able to jump over it any longer.
[0] http://www.construx.com/10x_Software_Development/Origins_of_...
And I say "average" programmer because average is fairly bad if you look at the workforce on a global scale.
Take the iOS app development. Consider someone who has never used Objective-C but has lots of experience doing client side web development. It would probably be faster for them to develop using a tool like Phonegap and use existing skills. It is theporetically sub-optimal to native code but surely the time spent learning phone gap will produce faster results than trying to learn an entirely new stack.