Question: My younger brother is looking to start programming. He's 14, and technically-inclined, but no real experience programming. He's looking to me for guidance, and I don't feel as if my experience is enough, so I figured I'd ask here.

He's more interested in web programming, but also has an interest in desktop/mobile/server applications.

What would be a good learning path for him to take? I'm going to buy him a bunch of books for Christmas to get him started; the question is, what should he learn, and in which order?

The way I see it, he needs to learn theory and code. I'd like to start him off with Python or Ruby or PHP. If he wants to get in to web, he's also going to need to learn HTML, CSS, Javascript, etc.

Out of those three domains (Languages, Theory, Markup/Etc.), what is the best order do you think to learn in? Also, am I missing anything?

Thanks!

Answer: 
I'd go with learning stuff for the mobile phone arena, that's prime real estate there. Get him set up with an IDE that has a phone emulator, and **get him a phone he can push the apps to**.

Set him up for some real world usage and hacking, supplemented with some theory from your books to guide him. Make sure they have good samples.
I never thought I'd say this, but get him [Alice 3.0](http://www.alice.org/index.php?page=alice3/download "Alice 3.0").

I hate Alice with the burning fury of a thousand suns, but it definitely does do a good job of teaching the fundamentals of programming (loops, statements, functions, etc.) when coupled with a decent tutorial.

Once he's solid on the basics, move on to a more practical text-based language.