Slashdot Mirror


How To Encourage a Young Teen To Learn Programming?

Anonymous Hacker writes "I'm in a bit of a bind. My young teenage son is starting to get curious about computers, and in particular, programming. Now, I'm a long time kernel hacker (Linux, BSD and UNIX). I have no trouble handling some of the more obscure things in the kernel. But teaching is not something that I'm good at, by any means. Heck, I can't even write useful documentation for non-techies. So my question is: what's the best way to encourage his curiosity and enable him to learn? Now, I know there are folks out there with far better experience in this area than myself. I'd really appreciate any wisdom you can offer. I'd also be especially interested in what younger people think, in particular those who are currently in college or high school. I've shown my son some of the basics of the shell, the filesystem, and even how to do a 'Hello World' program in C. Yet, I have to wonder if this is the really the right approach. This was great when I was first learning things. And it still is for kernel hacking, and other things. But I'm concerned whether this will bore him, now that there's so much more available and much of this world is oriented towards point-n-click. What's the best way to for a young teen to get started in exploring this wonderful world of computers and learning how to program? In a *NIX environment, preferably." Whether or not you have suggestions for generating interest or teaching methods, there was probably something that first piqued your curiosity. It seems like a lot of people get into programming by just wondering how something works or what they can make it do. So, what caught your eye?

6 of 1,095 comments (clear)

  1. python by utnapistim · · Score: 5, Interesting

    Teach him python (or ruby, or whatever else that is high-level and easy).

    It's the same as basic was twenty years ago, just much more powerful, easyer to learn and more fun.

    --
    Tie two birds together: although they have four wings, they cannot fly. (The blind man)
  2. Re:Write a game by Anonymous Coward · · Score: 5, Interesting

    I'll second that. Many of us learned on 8-bit home computers, where you could understand everything that was going on, and we made games. Brilliant self education.

    The best way of doing that now is with the Hydra console. The hardware is completely documented and described at the beginner level in the book. And there is no OS or APIs to deal with, disguising what's really going on. You code straight to the bare metal.

  3. My experience by mtxf · · Score: 5, Interesting

    I started programming when I was about 12, and I am completely self taught. My parents knew nothing about computers, and still know nothing now despite my efforts. Anyway, i started with javascript, html, and php. (This was around 6 years ago). I think it was much easier to start learning the basics of this kinda stuff when you don't have to deal with all the boring (to a 12yo) details of memory management, libraries, and compilers etc. Web programming is something were you can get the instant results and action, you can just keep tweaking the source file and hitting F5 until you get something that works and looks vaguely like what you're after; this is especially useful when you don't know what you're doing. :)

    I had a few books which taught me the basics, a javascript book and a html book. They only covered simple things, (I think the js book was a For Dummies..., actually), but it was enough to get me started. After that I found the php.net docs and a friend showed me loads of his php code and i picked that up fairly quickly.

    Being a website, it's something easy to show off too, it was kinda cool to be like "dude, the whole world can see my webpage!". Following that theme, i got started on irc bots, eggdrops are written in C, and you can script em with tcl. Be careful tho, tcl is kinda quirky and weird (at least, that's how i remember it). But it's great for simple stuff, get the bot to parse some text and reply etc. This might also be a good time to learn some networking stuff. Also since eggdrops can also have C modules written, this is a possible path into C, although I didn't go that way so I don't know how good it is.

    I eventually learned C(++) from some online tutorial, http://www.cplusplus.com/doc/tutorial/ I think. And I wrote a load of code for manipulating some large binary files (game resource files, from Halo). I certainly don't recommend letting anyone learn C solely from some tutorial, since I had rather large gaps in my knowledge at this point (that code i wrote is terrible), but it was some great experience anyway. I played around with some .NET (ugh!) gui stuff, because I didn't know how else to make a gui program at the time (seriously, I don't know how I was meant to know about qt, gtk, or win32 etc at this point) and a program that just prints text on the command line got boring real fast.

    Hacking at computer games was what really drove my interest in C at that time. Reverse engineering of the file formats was fun! Even if I did kinda suck at it and just found most of the info on the web.

    Looking back, I'm thinking I probably would have liked someone to show me python (and maybe perl) much earlier than when i eventually discovered them. php sucks as a general purpose scripting language and C gets tedious for those little tasks.

    Sorry that was all probably a little incoherent, I spent the time I was meant to be doing english homework programming ;)

  4. Re:No ShortCuts !!! by QuantumHobbit · · Score: 4, Interesting

    No job prospects?

    At his son's age I learned to program in Pascal and was grateful for the privilege. I even had to compile in the snow uphill both ways. See if I put that on a resume.

    Python is a great language to learn on, and there are more and more serious projects that use it especially in the scientific community. If he enjoys python, he'll move on to more powerful and commonly used languages lick Java, C++, and how could I not mention Fortran. (Actually Fortran wouldn't be a bad language to learn on if he's a math nerd. I'm not entirely joking with that.)

  5. Re:No ShortCuts !!! by Tim+C · · Score: 5, Interesting

    For most people programming is a long road of breaking your head against a problem until it gets solved. Long hours spent tapping away at the keyboard and honestly "normal" people think we're all out of our minds.

    And then most of them go back to driving a truck, or waiting on tables, or shuffling paper, or laying bricks or whatever "normal" job it is that they do.

    Don't get me wrong, I'm not saying that there's anything wrong with any of those jobs, but let's face it - they're not exactly riveting, and yet we are the mad ones...

  6. Re:No ShortCuts !!! by baxissimo · · Score: 4, Interesting

    Agreed! I think graphics are a great way to get young folks interested in programming. They were the thing that captured my interest the most anyway. I can still remember trying to figure out some Apple BASIC code that made a little blip bounce around the screen back when I barely knew what a less than sign meant. But if making things move around on the screen doesn't motivate your kid, then find out what does. Other projects I remember working on early on were tools to make D&D characters, because I liked playing D&D but thought the process of re-rolling the dice a thousand times till I got the stats I wanted for a character was too laborious :-) Also my friends and I tried to create a computer version of the BattleTech board game. We had know idea what we were doing, and never got anything even close to playable, but I still learned a lot from it, and over the subsequent years as I learned knew tricks and techniques I always could recognize them as something useful, as something that would have helped us get over one hurdle or another I faced on those early projects.

    These days I think maybe young folks might be more motivated by web stuff that they can show their friends. Hey check out my web page! (Which would suggest javascript or java as the first language) We didn't have a modem till I was in high school so those things weren't really an option back when I was learning. It looks like a lot of kids are writing silly plugins for Firefox too.

    But still I think graphics is good, because before long you start to see that you need to learn some math to do more interesting things with it.