How can a 10-year-old learn to program?

A Manhattan friend has a 10-year-old who is interested in “coding” (the Dad’s phrase; I’m going to guess that the work of Claude Shannon is not actually what the child wants to learn about). The kid has already looked at code.org and done some programming in Scratch. What’s the next step?

New Yorkers; are there good hands-on programs for children this age?

Everyone else: even for adults, learning programming and/or software engineering seems like a sterile exercise. Without a customer or a project goal, how does anyone stay motivated to push through the tedium of modern programming environments? (SQL and Haskell possibly being exceptions, but what kind of database would be interesting to a child (SQL) and what would a kid want to do with Haskell?) Would it be crazy to try to match up a 10-year-old with a customer who wanted something done? Or should 10-year-olds program games for themselves and friends to play? Or should a smart 10-year-old just be helped by a parent or family friend through standard college-level programming classes?

[I started learning to program at age 12 (1975-6), but it seems doubtful that anyone today would want to use the same tools: Fortran IV on a UNIVAC 1108 mainframe; 110 baud printing terminal with acoustic coupler (literally 1 million times slower than a modern broadband connection). McCracken was my tutorial.]

23 thoughts on “How can a 10-year-old learn to program?

  1. If they have access to an iPad, they should take a look at Swift Playgrounds. For a project, how about a command line oriented dungeon exploration game?

  2. 10 year old definitely can learn to code in any language you throw at them but you first need to start pre-teens interested. I recall writing simple AI chat-bot like apps that mentioned kids’ names with some fabulous statements and writing small programs to verify solutions for advanced math problems, it seemed interested kids. I recall kids were fine with downloading MIT Scheme and looking at VBA code in Excel that validated some math problems. High School uses Java (for teenagers) with free educational environment, but it pays to tech kids use NetBeans if Java your educational language.

  3. Most kids love games. So teach them to design a game and get them to program a game for the PC or IPad. My next door neighbor kid (he was 10 when I moved in) did that 17 years ago. He loved to game and started programming to add features to some games he played. He is now one of those rich tech kids who runs a gaming department in a major game company. Oh yea he also owns 2-3 apps for phones one of which he finished in college. So he was running a small app company as a senior.

  4. I learned at about that age using apple logo (nice because graphics were built in) For that reason, I’d recommend processing.org (stripped down java with built in graphics) Then the same IDE shows up again with Arduino, where you can do physical computing (buttons, lights and networking). For $40, you can internet some things. https://www.adafruit.com/product/2680

  5. I started programming on my own at the age of 15 on Commodore 64. I was natural born arts, so computer graphs programming, using BASIC what got me started. And the fact Commodore 64 had a direct memory access via PEEK and POKE and there were good books on the topic, helped a lot and kept me motivated to write video games. Once I mastered that, my uncle paid me to write for him a motel management program: reserving and keeping track of rooms and income tracking. This project was where I learned about algorithm with the help of books.

    Doing the same today is more complicated because there is no book or resource that focuses on a single area for programming. Even if you find a book on graphic programming, for Java or any language, a beginner will be lost in no time trying to read through the development environment setup: download Java, Eclipse, create a project, debug, reference to 3rd part JARs, etc. to name some.

    My advice: find someone to work 1-on-1 with the 10 year old to get him / her started, and if after few weeks the 10 year old still shows interest, keep at it or see if there is a club / school the kid can take. May parents do this for their kids to learn musical interment, why not for coding?

    Btw, I think it is time for our public schools to over courses in “coding” just like they do for other crafts such as: woodwork, mechanics and electrical, music and arts, to name some.

  6. (sorry if this gets posted multiple times, somethings seems to be wrong and my post isn’t going through)

    I started programming on my own at the age of 15 on Commodore 64. I was natural born arts, so video games and computer graphs programming, using BASIC what got me started. And the fact Commodore 64 had a direct memory access via PEEK and POKE and there were good books on the topic, helped a lot and kept me motivated to write video games. Once I mastered that, my uncle paid me to write for him a motel management program: reserving and keeping track of rooms and income tracking. This project was where I learned about algorithm with the help of books.

    Doing the same today is more complicated because there is no book or resource that focuses on a single area for programming. Even if you find a book on graphic programming, for Java or any language, a beginner will be lost in no time trying to read through the development environment setup: download Java, Eclipse, create a project, debug, reference to 3rd part JARs, etc. to name some.

    My advice: find someone to work 1-on-1 with the 10 year old to get him / her started, and if after few weeks the 10 year old still shows interest, keep at it or see if there is a club / school the kid can take. May parents do this for their kids to learn musical interment, why not for coding?

    Btw, I think it is time for our public schools to over courses in “coding” just like they do for other crafts such as: woodwork, mechanics and electrical, music and arts, to name some.

  7. @philg: Playgrounds should give a 10 year old at least several days of use. My thinking is that it would give them a chance to do stuff with graphical feedback while they learned actual programming in an environment restricted to words. Do I think this time is different? No.

  8. I started programming around age 9 when my parents ‘secretly’ brought a computer from USA to Moscow. It was around 89 so Basic from DOS+Norton Commander. My father set up the goal and taught me: something about drawing and filling up a reservoir of a certain volume from some other containers. I remember sitting and thinking about the problems/errors and fiddling with elaborations. having a problem and seeing feedback really was very motivational, enough that I spent lots of time on it, even though I had a few games on it that I loved too. (I did not progress too far – although I have continued to “program” for limited purposes to get by over the years – Fortran, C++, Matlab, R, Oracle/SQL, I am fairly atrocious in all respects when it comes to doing anything not directly needed for my work – I’m still trying to make a decent webpage that doesn’t use the blink tag. But I do have a kid who is too good looking, so I want to teach him some programming when he gets a little older to keep the risks down)

    My guess is that something procedural with lots of feedback, might be better than something that forces you to work with db’s early on is better. Maybe a toy kit with a physical robot that can be programmed.

    Google has resources like https://www.madewithcode.com/community/, which in addition to inspiration and examples has suggestions/kits to host a “coding party” which might be motivational if a parent cares to do the organization.

    I tend to think you would want a kid to move to abstraction soonish (rather than rearranging blocks or dragging symbols like with mouse like some of these games) so I would try something like Khan Academy which does slick and informational tutorials, eg: https://www.khanacademy.org/computing/hour-of-code/hour-of-html/v/making-webpages-intro

  9. A couple of game-related things to consider:

    RPG Maker – drag & drop programming with Ruby under the covers for more advanced work.

    Minecraft – has a Java IDE.

    Steve

  10. @philg 4
    It did bore me enough to give up programming; I comeback to programming (and anything STEM) in few years later when I got sick for few days and by chance started to read an Assembler manual!

  11. Can somebody explain what would make SQL and Haskell different, especially SQL?

  12. This is an aside, but I’ve found the on-line development environments very useful. Rather than installing and maintaining dev tools on your own laptop, let somebody else do it for you and access it via a browser. Examples:

    JSFiddle.net, CodePen, etc. for simple web page / JavaScript development.

    Cloud 9 for Linux development.

    mbed for hardware / embedded code projects.

    Having tools already set up and on-line really reduces the barriers to getting started.

  13. bjdubbs: What’s different about SQL? A powerful program can be expressed in half a page of code. It isn’t pages and pages of tedious declarations as in Java or similar languages. SQL programmers spend more of their time thinking and less time typing. That said, most RDBMSes contain data, e.g., business records or web site content, that would not be of interest to a child.

  14. philg: It is not very hard to create simple text pictures with SQL. Could interest a kid, but relational design of RDBMS seems to be very specific and not needed for someone learning programming.

  15. On eBay/Amazon $20+ will buy you an Arduino nano, breadboard, power supply, jumpers, resistors, LEDs, buzzers, pots, sensors, LCDs = enough to make lots of interesting projects. Eg: here’s a pong game assembled by 11yr nephew: https://m.imgur.com/IoLb7NU

  16. idtech.com is probably the biggest for-profit tech camp vendor, with an excellent reputation. They offer coding, robotics, minecraft, arduino, etc. Several $hundred per week per seat.

    Shameless plug: If you want to do it in London, try my daughter’s Fire Tech Camps in the UK.

  17. Programming sterile? Programming is a pleasure! It has an attractive similar to solving a sudoku, crossword or another mind teasers. You don’t need to make programming funnier, and much less for someone who already likes it. You just need to give them problems… interesting problems increasing in difficulty.

  18. My son started at age 10 with HTML. (He is now a graduate student at a top CS department.) An advantage of HTML is that you can create something meaningful and interesting easily and quickly.

  19. My son who is now 16 and good enough to work over the summers, had the following journey:
    – Minecraft as a user
    – A few Processing scripts one summer, just the tutorials
    – Minecraft modding (in Java, in the days before any API, when you had to decompile Minecraft)
    – A Linux server so he and his friends could have a Minecraft server for the summer
    – Now he’s doing all sorts of stuff

    In terms of motivation, Minecraft gave him that first project and a customer.

    I’m remaining interested and try to make sure there’s the resources he needs, but I’m not directing him. The rule now is if he can look it up he should – I’m here to provide wisdom should he need it.

    In the early days I kept an eye on him and tried to make sure there wasn’t any big roadblocks, when he was younger I felt it was too much for him to fight with something for more than a few hours without any progress. So sometimes I’d help with that. I also made sure he was properly resourced, e.g. a decent iMac so the compile turnaround wasn’t that bad, and the Jet Brains tools (which are free for students).

    IMHO the key transition point is when they learn how to learn. Then you just need to keep feeding their appetite.

    Minecraft was amazing for him because there was a vibrant community, he got to make his friends happy, and the level of technical challenge was pretty high. I don’t know what today’s equivalent of that is.

    Since then he’s been through a whole variety of languages and architectural styles and discusses computer languages like some kids talk about sports. One big project was a Minecraft server management framework, and another ongoing one currently on the nth re-write is a system to write his School work in Markdown-like syntax and then have it produce PDFs. He’s currently meant to be revising for his exams but for procrastination purposes he’s taught himself CSS and JavaScript so he could do a web-based control for the Hue lights and Sonos – he’s never done client stuff before.

    All of this is self directed and most is just for fun although the school notes system is properly mission critical for him and it has been interesting watching him wrestle with the implications of that.

    This summer’s challenge will be to see if he can work on something someone else wants him to do rather than something he wants to do…

Comments are closed.