What is the difference between people like Zukerberg, Page and Brin who are programmers and also extraordinarily successful financially, and the other wise great programmer who are not very much financially successful (like most of the employees at facebook and google).
Putting aside individual programmers for a second and focusing on "programming" in general (and, say, small companies and startups), this is basically how it goes:
In many, if not most cases, programming skill and technical quality has very little to do with the financial success of a project/product. Good business acumen, marketing, luck, and just being in the right niche at the right time is most often what brings great financial success in programming.
I've worked in companies which were very successful (albeit in a very tight small niche), but the quality of the programming was, to use the technical term, a Holy Mess. Some of them were epic Joel Test failures and pretty much went against every best practice imaginable - but because they were in the right niche at the right time, and made a product that fulfilled the client requirements well enough to sell and not get sued, they were fairly successful little shops at the time. And the founders that started them, well, let's just say they "don't have to worry about money anymore", at least not in typical wage earner terms.
So coming back to individual programmers (eg. Zuckerberg, Page and Brin) - you're seeing a lot of the same things play out. They didn't necessarily produce THAT much that was all that technically difficult or magical from a programming perspective, but they were in the right place at the right time, and had the right business acumen to turn their ideas into money. Think about something like Twitter: There really isn't anything there that any web developer couldn't whip up over a weekend as a basic prototype site (ignoring scaling). But it's not the "technical programming greatness" that turned it into a winner - it was the marketing and ensuing popularity.
In short, the only real path to financial success for a programmer is to be an entrepreneur. Being a corporate codemonkey won't make you rich, though if you have the right skills, and/or rise up to management, you might be close to pulling in a close-to-upper-middle-class income someday.
Right place right time.
Also guts, bone-headed stubborn determination.
And good financial sense.
I know many programmers who struggle to tie their shoe laces. And who have not the faintest idea about money in even the simplest sense.
Some people get money and business ["get" as in understand - pretty much instinctively]. Most don't (which is why they work for somebody else for a living.) This applies irrespective of other interests (eg software, brick laying, whatever).
**Nothing - they simply have different priorities.
- Some choose to expend their time and energy, focusing on the greatest monetary outcome.
- Others choose to focus on climbing the corporate ladder (being increasingly respected by those in their near vicinity).
- Others just care about honing their technical skills and don't care about respect and/or money.
Most financially successful programmers tried something.
There are huge number of great programmers out there that won't be financially successful only because of fear of trying something.
Working with (it) entrepreneurs almost on a daily basis, I can say fear is what prevent them from doing great things.
Result? Many of those who are the most successful are not the greatest, but the fearless (the ones that are not conscious of what they are doing, I was one of them at my 20s) or those knowing what to do (very rare, usually those that did it once already). So most great programmers prefer to be followers.
Which is perfecly fine as soon as they are happy in life.
We are not born equal and we won't live and die equal.
Right ideas at the right time.
Sprinkle that with generous doses of sheer luck, strong branding, some real smart business decisions and a loyal set of developers who'd like to be associated with the brand.
Having said that lets not shy away from the fact that Page, Brin, Zuckerberg et al are extraordinarily good technical minds who wanted to make a difference. And that matters a lot.
It depends what you mean financially successful. Where I live a good programmer would be at the 100k range. Most people would consider that financially successful.
Three levels of financial success:
- a good salary
- a lifestyle company
- a billion of worth company, i.e. big bussiness
What you need most at each level:
- being a good programmer
- being determined
- being able to think outside the box and sense the needs of many people.
At each level you need to have the previous qualities as well. Nevertheless, many more qualities are needed in all three, like networking, talent, positioning, understanding of a variety of matters, ability to learn fast anything.
Well, first a great programmer doesn't mean a lot to me: you can know a lot of things about programming, techniques and whatnot, have a great computer science culture, it's not what will make you type useful code.
What you call a financially good programmer is someone who put his knowledge aside and asked himself what he found out computer could do, and are not still doing. It's not marketting or "inventing a need", it's just using the tools you have to help people who can't program it themselves: you have to imagine yourself without your computer science knowledge.
Often people who are in the software industry but don't know how to code tell that programmers have a great gift that a lot of potential of success.