Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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!

share|improve this question

closed as primarily opinion-based by GlenH7, MichaelT, Dynamic, Bart van Ingen Schenau, Martijn Pieters Jul 4 '13 at 14:05

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

17  
Instead of books, buy a one year subscription to a hosting site. There's plenty for beginners on the web for free. Putting sites on your computer at home only has so much cool factor for a teenager. –  JeffO Dec 6 '10 at 16:27
    
Haha, I run a number of VPS' that I've set him up with, so he should be good to go in that department! –  vorbb Dec 6 '10 at 16:32
add comment

14 Answers 14

I would go to school, if college age. I would take it high school, if high school age.

I'd have a mission and adjust the curriculum accordingly at 14.

many people will down me for this but Visual Basic .NET seems to be easier for some, just saying folks. It appears to be that way for many not in the initiate.

share|improve this answer
3  
If big brother can help or the local high school uses it, that may be more of a benefit. Now I think the .NET IDE is what makes building a website easier and not necessarily the language chosen. A beginner could pick up C# just as easily? Mandarin is a difficult language, but toddlers in China do OK. –  JeffO Dec 6 '10 at 16:40
add comment

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.

share|improve this answer
add comment

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.

share|improve this answer
add comment

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.

share|improve this answer
    
+1 for giving the hardware needed. That's going to be more of an issue than the information. –  Joris Meys Dec 6 '10 at 21:14
add comment

Starting with web dev is a nice idea. You can get results even if you're a true beginner, and if you mess up, it won't matter much.

I'd say Html/CSS + Php. As Jeff stated in his comment, having his site hosted will matter, and Php hosters aren't expensive, often even free.

As for theory, I would simply forget it for the moment. The way I understand it, he mostly wants to have fun, and let's face it, theory isn't very fun. Besides, if he does like programming, he will have plenty of it in school.

Obviously we all care about nice code, but if he's just going to play around, what does it matter if his code is messy?

share|improve this answer
    
+1 For mentioning the need for quick results for beginners and messing up not causing bother. –  Orbling Dec 7 '10 at 1:45
add comment

Does his high school offer classes in computer science? For example in the United States the Advanced Placement program has a computer science class that goes through quite a bit of the basic computer science concepts (flow of control, basic object oriented development practices, loops, etc.).

I was able to attend a high school that offered computer science courses for basically all 4 years (from an introductory course through to basic LIPS, MIPS, and Open GL). I ended up testing out of the basics in college and then re-learning a lot of the other languages and topics in upper level courses. I can tell you that 14-17 year old brain had a lot more difficulty wrapping around the theory than an 18-22 year old brain did. Topics like recursion, pointer arithmetic, low-level programming, network topography, and functional programming took me a long time to get in high school, but the second time around in college I found them to be a breeze, perhaps because I'd already tackled them but also perhaps because of what developmental scientists have proved about the young brain - some of the abstract thinking required for higher math and CS concepts is still developing.

Even though it was difficult, thinking through CS starting at 14 is extremely helpful. Doing it without teachers seems like it would have been complicated. I would've spent time developing web pages for fun because it's what I loved to do back then (and now), but I would never have taught myself pointers, recursion, and LISP for fun at the time.

share|improve this answer
add comment

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.

share|improve this answer
add comment

Register him an account for StackOverflow.com and 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

share|improve this answer
15  
I don't agree on the digital reading. Actually, I give the students the papers and make them read it. On a computer, they're far too soon distracted by all the other candy. Studying concepts is done best away from any digital device in my experience. Plus, reading on an mobile kills your eyes. What with schemes and figures? the only advantage is links, but that didn't help our students too much. –  Joris Meys Dec 6 '10 at 21:02
1  
@Joris Meys, I concede that mobile reading is harder on the eyes, and 'being distracted by the other candy' would be a problem, but at the same time I am able to absorb information much quicker when I can easily look for the missing pieces... I can't even begin to estimate the number of tabs I spawn in my browser when researching something new. –  instanceofTom Dec 7 '10 at 23:53
add comment

I really like the way that I came into programming; the only thing I can imagine changing is my access to books. My family didn't have the money for all the books I could devour, and our small rural library didn't exactly stock tech manuals. In the grand scheme of things, this is a small nitpick.

I wholeheartedly disagree with those who say you can't learn theory at 14. The earlier you learn the theory, the better. I read The Art of Computer Programming at 14, though I'd already been coding a while.

The best thing you can do for your brother is to give him the tools to pursue his interests, and include him in the hacker/coder community whenever possible, so he can learn the mindset of a great coder.

  • Nudge him away from proprietary tools wherever possible. There's so much more available to him in the open source world. I got as good as I am largely due to the guidance I received from more experienced folks in the open source community.

  • If you can afford to, get him a Safari account, or help him buy books when needed. Even lending what you already own can help.

  • Make sure he has access to a decent desktop or laptop and a server or VPS to experiment on. If mobile apps are his thing, make sure he has a phone or demo device to work on.

  • Show him how to find IRC channels, mailing lists, etc. for the things he is interested in working with/on.

  • Make sure he knows how to ask smart questions and, conversely, the particulars of a support leech so he knows what not to do.

  • His first programming language isn't the most important factor. The totality of programming languages he learns is extremely important. One-language coders never pass a certain (relatively low) level of coding-foo.

share|improve this answer
    
Definitely agree there. I was well on to assembler by 14, definitely not too young for a bright kid. I had the RISC OS PRMs for my 14th birthday present. (computinghistory.org.uk/userdata/PRODPIC-12025.jpg - god I loved those books). But then I started at 7. –  Orbling Dec 7 '10 at 1:49
add comment

I never thought I'd say this, but get him 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.

share|improve this answer
add comment

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.

This seems reasonable. Impart some basic skills and help him flesh out an idea for a challenging, project that he will remain interested in.

His first experiences don't need to be perfect, in fact it will help if he makes a ton of mistakes early. You just want to ensure that he remains interested in expanding his knowledge. When he hits his limitations, he will be begging for assistance and you can point him in the right direction if he hasn't already branched out to reference material.

share|improve this answer
add comment

Get him a book on Test Driven Development. It will make solid unit tests second nature to him. I wish I learded having tests as the core of my programming from square one.

share|improve this answer
add comment

  • c
  • c++
  • python upto basic programming
  • then HTML
  • css
  • javascript
  • do hard with css its very important and javascript upto minimum validation level
  • then srart python for html and getting url
  • then framework if all stage are ok


    levels are are follow

  • basic level with command prompt to understand basic anatomy
  • application level
  • mouse graphic level
  • web level
  • designning level
  • database level


    dont forget to modularise things when you teach , undesrtand he will not understand javascript untill he know c/c++ or python etc

  • once he know basic programming he can do HTML easily
  • once he know html he llike css to
  • but stop and try more with css so new ideas will generate and he feel he need help to get started with project then he will try to learn javascript and python with database for completion of project .



    Added on 04/07/2013

    at the age of 14 when you want to try u r hands on programming first you need to understand what resource i needed to get completed the task or project or basic guidelines , well as i mensioned in my post learn basic programming first , it will help you to understand how the programs or software works with looping and condition , when next you think i understand all things but i dont klnow how to access mouse or do something when i click somewhere , you will try some libraries like graphics and mouse , so you understand how this works , next question will come to ur mind how to place my buttons and add events so they can interact with my code , so you will like to learn event programming then when you complete this stage , next question will arise i make very big code and i dont know how to call function its bit complicated , then you will try modularization , object and classes for application ,

    after that you will think i know how to build basic application but i want to make application for database, then Database comes to mind , you like to learn but problem is that you feel its hard to get connected with code so you will work on database command prompt ,

    its a programmic approach believe , i do and learn from same way and my basics arevery clear so i can understand how routines or program is work,
    once you understand and much confident about you can make application for desktop try same skills for HTML


    when you try for html , you will feel its much more easy than what you learn prevoiusly , just because you spent lot of time on basics .
    in html , understand structure and how code works , once you know this things , you loike to give validation and database connectivity for application , give try and you get succed in a day , you can easily builkd form place buttons and validate with the halp of javascript, then you will ask a question to yourself i made everything but what about look it dosnt match with what i see on internet , so try hard with css, i am very sure if you dedicately try for css with best IDE or dreamweaver you will be in love wit hTML/css .

    its enough for you to make a simple application or web with HTML,
    at certain point you will ask another question to yourself how to make it dynamic when you know hyperlinks work well , then what does dynamic , lets think about database , that you learn prevoiusly ,


    yes thats my point , show records , insert record , delete record and play with database locally with javascript and server side programming, then other concept will come to your mind automatically , to create user , validation , session , user history, internationalization etc
    and you will go ahead without guidance because your base is clear and you know what to do and what resource you needed to complete the task


    thats all the stages . basics are very important and right steps also . once you know basics you can easily learn another language or migrate from one language to another language
    thanks for reading

    Added on 04/07/2013

    progarme is nothing but a set of instruction and routines , eg our daily routine , we wake up , take bath , lunch , work , dinner, go to sleep .
    but if we mis any one of the task we feel unconfortable thats is if day is sunday when you have no work or on vacation the condition is change and daily routines also , so you get match with other things , thats what like programming approach , learn from practical not from what books tell you , books are good for reference but understand natural way how we react , work with the help of if-else statement , eg: suppose we have two work and both are very important , but we can do only one at a time , you pick 1st one and complete then you can go to home , if you pick second then you need to work next 5 hours , else if you complete both work , you get 1 day leave ,thats about programming approach

  • share|improve this answer
    2  
    Your answer is heavy on particulars but light on justification. Your answer would be stronger if you explained why you feel this path is best. –  GlenH7 Jul 3 '13 at 12:57
        
    thanks i will do it now –  Vijay Balkrishna konduskar Jul 4 '13 at 14:08
    add comment

    I would start him off with a C based language. I have found that there are more helpful resources for them. You can also look into getting a book on how to design and format your code so he starts off using good coding principles. I had a class devoted to it and we used a book called, "Clean Code" and another one titled, "Software Development: Design Principles" if I remember correctly. I also wish that I would have been introduced to this site sooner haha.

    What helped me the most though was getting an internship early in my college career. I went out to the career fairs as a freshman and received an internship my sophomore year. I also try to have a project that I am working on at all times and I like to do something that I have never done before so I can keep learning. Right now I am working on using a Raspberry Pie and implementing Apple's Siri for a home automation system.

    Basically though, do whatever it takes to keep it fun. Don't get frustrated. Take breaks. Don't get too caught up in books. Sometimes the best way to learn is to just go for it and use trial and error.

    Oh... and learn how to Google :)

    share|improve this answer
    add comment

    Not the answer you're looking for? Browse other questions tagged or ask your own question.