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: 
Register him an account for [StackOverflow.com](http://www.stackoverflow.com) and [Programmers.StackExchange.com](http://programmers.stackexchange.com)
-------------------------------------------------------------------------------------------------------------------------------------------------------

and get him into the habit of **browsing** different **questions when** he is **bored**. Start with the hot/most popular questions. 

*Also*

Help him come up with **a goal** of something he wants **to create** that is slightly beyond his reach, a simple game, an app that can send a tweet? It has to be something **that is exciting**. This will help guide the topics he exposes himself to and **provide him motivation** through the tangible output he creates.

*And*

Where possible **don't buy books in physical form** *if he works well with digital print*, I am sure one of you has an android or iphone or blackberry or ipod touch? Get the ibooks or kindle app and **buy digital versions**.

Having to deal with a physical book slows the process of knowledge acquisition; the tools built into **digital readers provide many benefits** to technical reading.

*Note: as mentioned in the comments, there are drawbacks to digital vs printed books, so take this point with a grain of salt*
I personally wouldn't start with the hardcore theory. I'd start with practical programming intermingled with some elements of the theory. It could keep one much more motivated and not scare him off.

It is for instance a case with musical schools. A huge portion of students quit because they get bored with the theory and eventually lose interest.

Besides, the theory is not that good when it is learned before having gotten your hands dirty with practice. You won't know when and how to apply it.

But if you had some theory knowledge then practiced a lot, after that a serious course in IT would push you on a different level. Otherwise the years spent in a university are just wasted on a deaf year.

In that order:

1. Some basic theory about hardware, computer architecture and programing that hardware. Just basic.
2. Then develop practical things. Basic applications to keep interest. First local, then something with graphics. Web pages not yet since you would want to demonstrate the server-side programming and it is often useless without databases.
3. Drop him some database knowledge crops
4. Interface you local application with the database. Then try web development.
5. Adjust the course as you go.