It's very easy for us to forget about variance and standard deviation of programmer productivity when all other factors are equal. Let's imagine we have 1000 of the world's best programmers working for a year on creative projects. All of them will try something innovative. Only some of them, however, will succeed.
Who succeeds is a function of what projects they were working on. And that, is almost purely random and a result of circumstances. We like to think that Sergey and Larey were more brilliant than anyone else, for example, but the truth is they just stumbled into the right thing at the right time.
Don't discredit yourself as a programmer for not yet having a huge stroke of luck.
The problem here is that you're segregating the "world's best programmers" without explaining how you selected them. The more relevant question here is what makes someone the "best" at something.
You're also using a limited angle of success (Larry and Sergey's business success via google). Many of the other "best programmers" on your 1000 person list may have non-commercial success (their creative project leads to a highly cited paper for example).
If you just took the top 1000 programmers (again assuming you could) in 2003, it's unlikely that Mark Zuckerberg would have been one of them. Not that he wasn't a great hacker, but what metric could have demonstrated his creative/business abilities as an undergraduate?
Of course luck is involved in anything. Einstein was "lucky" that he happened to be obsessed with the relative speed of light to different parties at a time when we knew a bit about how light/gravity etc worked. Perhaps if he'd been born in Newton's time, his style of intellect would not have had the same impact. Nonetheless we can, in hindsight, only measure someone's achievement, not his/her luck.
No doubt hyper-achievement (like Einsteins' or Zuckerbergs') is evidence that the achiever possesses a high degree of work ethic AND talent with at least a bit luck thrown in. No doubt that you would agree Hyper-achievers are a subset of "Potential Hyper-achievers" (those with talent & work ethic) and someone's level of achievement will roughly correspond to his/her personal characteristics.
In a particular poker game, it's mostly luck whether you come out ahead, but over time (as in life) those who practice harder and play smarter will (usually) come out on top.
People attribute almost everything to luck to feel better about their own lack of success. Luck plays a minor role. Intelligence and tenacity are much more important. If luck was the main factor nearly all successful programmers would come from China or India since they have the most entrants in the "lottery" for successful programmers.
You argue that intelligence and tenacity are more important than luck, but then it follows that since China and India have the most entrants, the only explanation for their lack of proportional success is lack of intellence and tenacity relative to Americans(I'm not saying you think this, I'm just noting it follows from your argument).
I would argue luck does play a big role, and that they weren't lucky enough to be born into a country with the standard of living, educational resources, and number of tech jobs that Americans have is the major differentiating factor.
I didn't mean to provide an exhaustive list successful characteristics.
Also it is a bit of a logical fallacy to say just because luck is not the main factor in success that being unsuccessful means you are lazy or dumb rather than unlucky.
You can take the luck argument too far though. You were lucky to be born as the you that you know because there were millions of other sperm competing to fertilize your mother's egg.
You can take it too far, but I think at a macro-level "luck", by which I mean random factors beyond your control, is by far the dominant factor. I do fairly well for myself, among the top 0.5% by world income, but I'm quite sure this is not because I am among the top 0.5% in world intelligence+tenacity. I like to think I'm fairly smart, especially when it comes to reading widely, in an interdisciplinary way, and making unexpected connections between different domains.
But honestly, I came pretty close to "winning" by the time I was 10 years old. I was born in one of the richest countries of the world, to well-off parents who were science/technology-minded, attending a good school district, etc. I also happen to have computer science as one of my strengths from a young age, partly due to foresighted parents who sent me to an after-school Logo program, and partly due to what feels like natural affinity. That pays well, while I could just as easily imagine being gifted in something less-lucrative, like music or history (I'm personally completely in awe of people who have perfect pitch and what seems like an innate sense of rhythm). I had to do relatively little on top of all that to succeed, at least compared to what other people would've had to do to succeed similarly. Basically had to not completely fuck it up. (And I assure you I am lazy as shit compared to a lot of people doing less well.)
Successful people attribute almost everything to their own intelligence, willpower or hard work to feel better about themselves. Luck is extremely important for any individual trial - once you get up to a large sample size, sure, your traits will win out - but many people will never reach such a sample size in their entire life.
When I see "fail fast", what I really think is: "increase your sample size".
This does not match my experience. While certainly some successful people like to take all the credit, most of the successful ones I know acknowledge either luck, fortune, or God's blessing played a huge roll in their success. Machievelli in particular talked about it at length in the Prince and other works.
But you can't directly control luck. You can directly influence the other factors, and while luck does play an important role, so do other factors. To borrow a quote, "The harder I work, the luckier I get."
Sounds like you're putting the cart before the horse. How are you identifying 'the very best' but by their successes? The argument is that you need both to 'succeed'. So, sure, if you only look at the ones that were both hard-working/relentless/growth-oriented AND lucky, then boy howdy does it look like luck isn't a factor.
The difference between lucky people and unlucky ones is that the lucky ones were able to recognize opportunity better. I've seen some research on this, but don't have a link handy.
I prefer the idea that the lucky ones "made their own luck" by increasing luck surface area.
In this view, the lucky may not have recognized opportunity better, just created better opportunities for themselves (through hard work). Even if this notion isn't completely correct, I like how it incentivises working rather than waiting.
Nassim Taleb talks about this, I think in Fooled by Randomness. He couched it in terms of increasing exposure to chance (serendipitous) occurrences via being more social, studying across disciplines, keeping friends whose views differ from yours, etc...
Edit: corrected my phone's overzealous auto-correct.
i've come to view luck as preparation + opportunity. You can't directly make yourself "lucky" but you do have control over how much you prepare (study, practice, exercise, think, train, drill, paying attention to surroundings, planning for future, etc) and you can expose yourself to more opportunities by meeting more people, being more ambient, being social as well as analytical, watching community and industry news, etc.
ps. huge fan of Empire! thank you sir for working on that game. i think Sid Meier cited it as a design influence for Civilization as well.
Who succeeds is a function of what projects they were working on. And that, is almost purely random and a result of circumstances. We like to think that Sergey and Larey were more brilliant than anyone else, for example, but the truth is they just stumbled into the right thing at the right time.
Don't discredit yourself as a programmer for not yet having a huge stroke of luck.