Need help navigating "follow your dreams" vs. "follow the money" dichotomy!

My son taught himself programming by using “Visual Basic for Dummies” when he was in elementary school. He learned Java at a summer camp. He fooled around a bit with MIT’s Open Sourceware. Taught himself C++. Got interested in Linux through computer fora I think. And learned SQL during a summer job. A kid who is interested in computer science can teach themselves a lot.