So being a good programmer is not synonymous to having your bank accounts with decent zeroes following some non zero number.
Incidentally, yesterday I was talking to a programmer who had been coding for 17 years, he codes bots for games in C++ when not coding other stuff. He did not take his degree seriously, and today is looking for an MNC to hire him, so that he gets married, for the chic wants a secure life.
What did the good programmers do differently? Its a difficult question to answer. Having said that, couple of things are:
1. starting early
2. getting lucky
3. focus and hardwork
4. marketed themselves properly
5. surrounded themselves with better programmers, to get better at it.
6. capitalized on the opportunity of solving a tough and challenging problem.
ending on a pragmatic quote: passion burns out, what sustains is greed. (taken from "Do you want to be doing this at 50")