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: 
web / desktop / mobile / server programming? Seems like to me, he is interested in everything. The problem is however, he's gotta start with something.

Many will disagree, as of course there is no "right" answer to this, but I'd buy him a book on Python (*Learning Python* is thick and thorough enough to keep him busy for a long time), and it is definitely a language which will give him a good ratio of stuff I learned vs. eye candy (i.e. what can be achieved with it). It is also a good starting point for many of the above.

After that, see what he favours the most of the above mentioned, and direct him further with advice in that direction.
My logical preference based on what I know now:

1. Figuring out how things work now - While you state he is technically-inclined, how well does he understand how a computer works at this point? For example, does he understand differences between mark-up and scripts? What about writing little scripts to do this or that? This would be my suggestion for a starting point as demystifying what we have around us is a good starting point given all of stuff that could be explored pretty freely.
2. Pick a language, IDE, and source control. Now while this may seem like quite a bit to hurl at someone, these are the rather basic tools that with a little practice he may well then move on to bigger things. Figuring out how to make a "Hello World!" web page that has the message embedded in JavaScript isn't a bad starting point if one wants something a bit more concrete here.
3. Now start adding some of the harder stuff. How to do loops or conditions? This isn't really that fancy yet but we're still at the understanding the building block stage here. Lastly introduce the idea of classes and what are some ideas behind this concept.

Those would be where I'd start if someone wanted to get some basics of my skill-set.