Whenever i read some quote that makes its argument by comparing one method that makes tons of money and the other that doesn't, it send up flags for me.
Even though i do believe strongly in the general argument being made here, i think it needs to be said: The goal in life is not to make the most money. Just because one path makes you more money doesn't mean it's the right path to take.
It's almost certainly true that in the software world, the "best" code is almost never the code that makes the money -- making money on software probably has more to do with marketing than anyone wants to admit. Does that mean the best way to be a "successful" coder is to stop reading programming books and start reading marketing books?
There is sooo much to be gained by theorizing and trying to think about the bigger picture and to break free from the daily grind to get something done now. Just as it's not a good idea to spend ALL your time theorizing and planning without ever putting your ideas into action, it's also not good to spend all your time with your head down soldering things without ever taking time to theorize, dream, plan, etc.