Hacker News new | past | comments | ask | show | jobs | submit login
Teaching our five year old to code by cheating (baugues.com)
123 points by gregorymichael 8 months ago | hide | past | favorite | 106 comments

I've done something a bit like this for "career days" for elementary school kids. I coded up a perl script that was basically something like this:

    $score = $ARGV[0]

    if ($score > 90) {
        print "A";
    elsif ($score > 80) {
        print "B";
    elsif ($score > 70) {
        print "C";
    elsif ($score > 60) {
        print "D";
    } else {
        print "E";
And I'd ask, "What do you think happens if you put in '85'? What about 10000? What about -30?" If the group I was talking to seemed pretty sharp on the uptake, I'd ask, "If you wanted to hack it so that people who got 95 got an E, and people who got 50 got an A instead, what would you do?"

The kids really seemed to enjoy that. Apparently they even told the teachers I was teaching them to hack programs -- a bit concerning for the teachers, but mission accomplished as far as I'm concerned.

Look I don’t want to criticise but I’ve got to say, this is the sort of thing that makes kids hate programming.

“Hey kids ready to do some super exciting math in a computer program?” Nah.

I had a computer teacher who managed to make me bored and disinterested with stuff like this, despite me being crazy crazy crazy interested in computers.

The best way to teach kids programming is via programmable graphics I.e visual games making systems. Not written code.

All I can say is it went pretty well for me. Remember that this wasn't a full-on class; it was a "career day" where I had at most 5 minutes with any student, most of whom had no experience with any kind of programming whatsoever. And my main goal was actually to get "normal", not crazy-interested-in-computers children to experience the cognitive dissonance of running `./grade.pl 10000` and seeing it print out "A". My favorite response was the girl who knitted her eyebrows for a few seconds and then exclaimed, "Oh, I see -- you tell it what to do and then it does it!" Yes, exactly. Whatever she ends up doing with her life, her attitude towards computers will different now.

> "Oh, I see -- you tell it what to do and then it does it!"

I love it

Look I don't want to criticise but I've got to say, this is the sort of thing that got me into programming as a kid.

"Hey kids ready to do some super exciting graphics with turtles in a computer program?" Nah.

I had a computer class based on Logo that managed to make me bored and disinterested with stuff like this, despite me being crazy crazy crazy interested in computers. Then as I got older I actually did get into graphics and gamedev, but early on it nearly killed all interest for me.

The best way to teach kids programming is by making sure the kids are engaged, whatever they enjoy doing.

Yeah logo and Perl are both boring as batshit and great ways to turn kids off.

I think you got the wrong takeaway here. It's not about Logo and Perl specifically, it's about making sure that whatever you do, it's enjoyable for the kids. For some that's math, for others it's graphics, for others it's "hacking". Whatever works for one, isn't guaranteed to work for the others.

Just as for some, Perl is pleasure, for others, Perl is pain.

And I didn't do anything like "teaching them perl". In fact, I think I may have actually used bash; and if I were doing it today I'd probably use python. The point was to have something that you could reasonably guess what it was doing from looking at it. You don't have to know anything about perl replace "A" with "E" and vice versa.

And although I wouldn't call this exercise "fun", it's something that connects with a part of their life they understand. Nobody would actually write a script like this, but someone could totally write a function like this as part of a larger program, and have exactly the kind of "bug" that was displayed there; or, could be hacked in exactly the same way.

Kids are sharp enough to know when a skill is going to be useful, even if it's not "fun".

> Kids are sharp enough to know when a skill is going to be useful, even if it's not "fun".

Kids are also a lot less dependent on fun than people think. If they actually feel useful you'd be surprised what they're interested in doing that's not considered fun.

“I had a computer class based on Logo that managed to make me bored and disinterested with stuff like this”

That’s not Logo, that’s the teaching. The whole point of Logo is that it should be 99% self-taught. The teacher’s job is to teach the bits that aren’t naturally discoverable (see my three steps above), and to offer hints and nudges towards rich new areas for exploration should they bog themselves down in old, crude inefficiencies and repetitions.

Bad Logo teaching is making kids memorize what all the buttons are called and what each one does when you push it, of setting “problems” that have one right answer which the student must return or is penalized for being wrong.

Yes the “turtle” was limited, and if all you ever did was draw “turtle graphics” with it then, yeah, you’d quickly grow bored.

But being limited to turtle drawing only was a limitation of the hardware and software of Papert’s time, plus the inability of most adults—particularly those in charge of the purse strings—to see the need to expand that platform to provide other opportunities as well. That damned turtle should’ve been just the first of a myriad of Logo “expansion packs”, but those damned grown-ups couldn’t see that because they lacked the imagination to do so. (Though if they had, they’d have been terrified by the thought: creating kids who think for themselves and can run circles around them—inconceivable!)

Because all those adults saw Logo as was just another hoop to teach students to mechanistically jump through in rote-taught lessons before putting it away and moving onto teaching the next hoop, not as an open-ended user-led tool to be put in the hands of the kids so that they can explore and experiment and teach themselves while pursuing whatever it is that is of interest to them.

That’s the worst thing about authoritarians: all they ever want to do is to make more of the same.

> That’s not Logo, that’s the teaching.

No, it's logo, because we were taught in exactly the manner you describe, to the letter. In fact I might have enjoyed it more if there were more structure.

I hated art class as a kid, and turning computer lab into art class was not something I was ready for back then. At the time I was laser focused on wanting to learn to program, and I saw logo as something different than programming.

You're using this as a weird segway to rant about authoritarians, but you're also telling me that there's a single way to teach kids programming that everyone needs to adhere to, and anyone who doesn't like it was taught wrong. Seems a bit tone deaf.

I've also run elementary school coding classes and my lesson plans and class engagement are largely the same as the OP.

The differences were just that I used Python rather than Perl and the program was a higher / lower game:

  from random import randint
  random_number = randint(1, 100)
  guess = 0
  while guess != random_number:
    guess = int(input("Guess a number: "))
    if guess > random_number:
      print("Too high!")
    if guess < random_number:
      print("Too low!")
    if guess == random_number:
      print("You win!")
(there's obviously a lot of ways you'd write this as better code but the point was to teach the absolute basics)

So the basic concept of the program is essentially the same (command line based and integer comparisons) but it's structured as a game. I too encouraged the kids to hack their programs and they loved it! In fact at every stage of the class, from teaching how strings work (eg below)....

  name = input("What is your name? ")
  print("Hello " + name)
...to the completed game, I gave kids time to hack the code and adapt it how they wanted. Kids genuinely loved it. They'd put silly code in as jokes and found it hysterical that the computers repeated their silly code etc. They were very much engaged.

Obviously there will always be outliers who don't enjoy those types of lessons -- I mean everyone is different after all. But this kind of structure for teaching code is actually very effective for engaging the majority of the class.

I teach kids to code (plus other techy stuff) for a living.

Some kids love my robotics classes using MakeCode or MicroPython. Some kids love my data science classes with Python and SQL (I doubt anyone loves the Excel formula :P). Some kids love writing games in Scratch or MakeCode Arcade. Some love writing MakeCode in Minecraft EE. The one thing they all have in common is there are always kids who get turned off by the environment we're using.

Music programming languages could also be fun. Bonus points if you can produce interesting music and interesting graphics at the same time.

When reading your comment I remembered the old LucasArts game called Loom. I wonder if that would be a proper jumping off point for a music language? Of course, my memory could just be bad.

I am probably too young for that :) but this [1] seems a nice list, perhaps there's something similar

[1]: https://github.com/toplap/awesome-livecoding

Different children like different things.

I'd try to frame it in a different way. I think the best way how to get someone excited about programming is to show them how to solve a problem they care about.

Kids like to play games, so creating their own game is a problem they will likely care about. If they spent past 10 hours trying to advance to the next level, then showing them how to hack their way to the next level is probably going to get them excited. If they are stuck in a system where everyone's focus is on their grades, showing them how to hack that system will likely get them excited. Even if it involves doing some math.

Doing things like that was exactly what got me into programming. The first code I ever wrote was an infinite print loop on an atari and that was like the coolest thing in the world to me at the time.

From there I made guessing games and text based rock paper scissor games and stuff. I didn't get into any kind of graphics programming until I was older.

Just being able to tell the computer what to do and make things happen with words on the screen was what got me fascinated with programming.

As a teen I “learnt” C (and later C++) by reading books from the library. I didn’t have access to a C/C++ compiler (the best I had was a Mac Classic and Pascal). I wrote my code with pencil and paper and checked syntax against examples.

Worked well for me — I aced all the C and C++ computer science papers all through 100/200/300-levels at University.

Yeah well, actually I liked that sort of stuff and my daughter like that sort of stuff.

Some kids do like the puzzle aspect of things. And specifically small exercise like this can be fun or not for kids who normally dont like puzzles, if you create the right mood.

I've been frustrated by the magnified expectations of kids w.r.t. programming because they play sophisticated games compared to the pong/bricks/tetris of my highschool days. Very hard to satisfy my kids with doing, say, turtle graphics. I'm yet to try Minecraft programming (need windows machine) but that might do it for them as they're into Minecraft.

I had a blip of a realization one day when idly talking to the 6yr old with a prolog terminal at hand. Documented that here - http://sriku.org/blog/2019/07/16/prolog-is-magic/

That's awesome! Not sure I've ever seen such a compelling demo that started from nothing.

In general I think starting from nothing is the original sin of programming pedagogy. I think it's easier to learn by example, imitation, and extension and then learn the deeper principles once you need them.

My wish is a game that would be compelling enough to get a few app store downloads but allows for live editing of the source. Say a soccer game where you can start by changing configuration options like the ball color, then maybe you can find where goals are added in and make yours count for more, eventually basic physics like changing acceleration.

Probably not for 6 year olds, but even at the college level I'm not sure about having students start by staring at an empty editor window.

> In general I think starting from nothing is the original sin of programming pedagogy

I think you're right in saying that. Back when I was in school, I learnt a lot by copying BASIC programs from mags and typing them in and then modifying them. I don't think I even acknowledge that early stage much now given that learning strategies have evolved from there.

edit: Thinking back to that, it seems to me that one of the attractive aspects of BASIC for interactive programming was line numbers. You could replace any line by typing a fresh line with the target line number instead of going back to edit the program. There's something innocent and simple about that.

I know this is naive but I have a lot of hope for Racket in this space. I'm just hoping it gets more institutional support for making educational tools with it.

The line numbers definitely help you imagine the computer mechanically reading and executing the lines. I wasn't taught with BASIC so in the few times I've had to modify a program with meaningful line numbers I have often used make or similar to just put them in for me. I'm glad someone likes them, I never understood why they existed!

Yes I share that hunch too and been trying it with the kids off and on.

The team's work with Bootstrap (https://www.bootstrapworld.org) is actually pretty awesome .. where they're trying to accommodate even kids who may not have access to a computer. One of the best CS educational efforts I've come across. Check out racketcon2020 ( https://con.racket-lang.org/) where Kathi Fisler (co-founder of Bootstrapworld) is keynoting on "data centric computing".

Well there you go, I think I have an idea and someone is 10 steps ahead of me! Glad to see it!

Racket is a fantastic language! If I may ask, what are you looking for? In your previous comment you alluded to live-reloading and graphics; both of which are possible but a little clunky at the moment.

The features are certainly there in Racket, clunky or otherwise! Plus this seems to be in the spirit of the language.

I think what's left is building it more or less. Also structuring the code for education. For instance keeping the complicated, scary code out of files that will be modified early.

Just putting this out there: You don't need a windows machine. Minecraft, including programming mods like ComputerCraft run fine on Ubuntu (and therefore probably on a lot of other distros).

"Java Edition" is, assuming the system can run "modern" games decently well.

I've also heard good things about "ro blocks", but having watched a stream or two I'm less sure of it as a good introduction.

Computercraft turtles and LUA aren't terrible, but when I see a FOR loop I think C style, while LUAs is the other kind and I'd really love for that for to be named something like ITER instead.

I think you mean Roblox.

I was considering this initially - https://www.microsoft.com/en-us/research/blog/code-minecraft... - but ComputerCraft (& ComputerCraftEdu) look like a lot more fun. Thanks!

Well I never heard of MakeCode, but I can say that I really liked ComputerCraft, especially because it does not try so hard to be educational. Instead it just adds to the gameplay. Quite fund indeed!

(I would recommend playing a bigger modpack where ComputerCraft is included)

Kids should be taught programming when they express an interest, and when their brain is ready which in my non-facts based opinion is 11-13 years old.

Trying to make kids learn programming without them being interested is about the parent wanting their children to be like them.

Kids should be taught whatever their parents know well, starting as early as possible. If the kids have no aptitude or interest in those things, they should eventually be dropped. But when you teach your children what you know, you get to take advantage of the fact that your children have an interest in and an admiration of you, and you might be able to cram in the basics of a trade that they can always fall back on later in life.

> Kids should be taught programming when they express an interest

If we felt this way about other subjects, we would never teach 95% of kids math, or 50% of them how to read.

edit: the best outcome is that they might love it, and if they do will probably end up far better than you at it, and will make a trustworthy business partner once they reach adulthood.

Agreed. Everyone wants to share what they love with someone else, but you have to respect the fact that others won't love what you love.

I've tried to encourage my little (he's 21 now) brother to get into programming, but he's just not interested. I'm disappointed, but that's my problem, not his. He's had every opportunity to get into it. He's got his own computer and a big brother willing to teach him. If he wanted to do it he would've done it.

My other brother became a mechanic despite nobody encouraging him to do it, nor providing him with the resources when he was younger. He had to go out and find old lawnmower engines to work on by himself. He was actively discouraged from bringing home junk by our parents, but he did it anyway.

The vast majority of people do not want to become programmers. The best thing you can do for children is to expose them to as many things as you can. Take them to museums. Involve them in your hobbies and your friends' hobbies if possible and if they want to. You'll know when they've found what they want to do.

Also, don't be disappointed if girls just want to be mothers. It's one of the most important and noble jobs there is. Don't discourage it because you don't think it's as important as what you do.

Also, don't be disappointed if boys just want to be fathers. It's one of the most important and noble jobs there is. Don't discourage it because you don't think it's as important as what you do.

These statement don't sit well with me. Anyone "just being a <whatever>" in their life feels incomplete. (I think you were implying this by reversing the genders.)

To the GP, if it's OK for girls to "just be mothers", is it then OK to describe a woman as "just a mother"?

I have a daughter. I suspect that if she becomes "just a mother", what that really means is her skills and interests are so foreign to me that I can't come up with a better description than "just a mother". And I hope that I will not be OK with that.

"Just a regular guy" etc. There's nothing wrong with being just anything.

You need to stop treating everyone in the world like a member of your scrum team or something. Understanding people's "skills and interests"? They're just people for crying out loud, speak to them. And no, there's nothing wrong with being "just a person". Stop being so analytical and desperate to have everything conform to your fantasies of what the world should be like.

"Just a regular guy" is still assumed to have distinct personality, interests, hobbies and skills. "Just a mom" is not. That is not the statement on what actual moms are like, but what people imagine when they hear the phrase.

Like in the original comment this started with "girls just want to be mothers" is contrasted with being a person who has any out of parenting interests at all.

And for all the talk about "noble", no interests at all leaves you with nothing to think about, nothing to talk about, nothing to do, nothing to be happy about when children are not present. Nothing to be proud about once the kids are not toddlers anymore and their achievements are their own.

> "Just a regular guy" is still assumed to have distinct personality, interests, hobbies and skills. "Just a mom" is not.

Speak for yourself. Sounds like projection to me.

Do you have children? Parents can be very proud of their children's accomplishments.

Yes I am parent.

And parent "living exclusively through childrens achievements" is object of criticism. That situation is not good for children, because they end up being pushed into parents dreams. It is unfair to children to expect them to be your source of proudness or whatever.

> Take them to museums. Involve them in your hobbies and your friends' hobbies if possible


Also, focus on removing obstacles to learning, rather than pushing them to learn.

The best way to get a kid interest in music is to keep a second hand guitar lying around (tuned, what a coincidence) on the couch. The next best thing is to play yourself from time to time.

Everything else is just noise.

> Take them to museums. Involve them in your hobbies and your friends' hobbies if possible

How is that any different then "and show them also some programming"?

Hardly. Programming should be treated like reading: an essential life skill. And if you use reading as the example, you can start developing an interest in books before the child is actually old enough to read.

The OP isn't taking his daughter through a coding course, just showing her that cool things are capable via coding. What could be wrong with that?

I'm curious why anyone would think programming is an essential life skill, considering how many successful people are alive today who cannot code.

Another thought: when ML starts getting applied to solving programming (see recent GPT-3 demos for many examples), do you think by the time that 5 year old is 20, programming will still be a viable career for humans?

> I'm curious why anyone would think programming is an essential life skill, considering how many successful people are alive today who cannot code.

There was a time when you probably could have said the same thing about reading.

I'm not talking about programming as a career. Much like reading and writing, you can have a career focused around it, but it has applications in non-technical careers.

Many jobs have repetitive tasks. I've personally had jobs in my life where lots of aspects could be handled by scripts (although I didn't know how to write them at the time). Additionally, a lot of workplaces rely on Excel for key workflows that would be simpler and faster as programs. Computer literacy, much like writing, opens doors. The vast majority of people who learn how to write are never employed as professional writers.

Additionally, like reading and writing, it can be a great source of pleasure. Much like the author, I make little games for my daughter to play on (https://letter-press.netlify.app/snek/ for example). You can create art with code, or treat it as a puzzle solving exercise, or use it to modify your favorite games.

Hacker News readers include some of the most sheltered and naïve people in the world. It really beggars belief sometimes just how out of touch with reality they are. A lot of them are funnelled through university straight into ridiculously high paying jobs and will never experience life at a normal level.

As time goes on the more essential it will become as it is one of the last jobs to be taken by AI.

I agree with you that it will be one of the last jobs to go, but it will go. Fast-forward 15 years, and hypothesize about "GPT-15" or whatever, running on a quantum computer, just as a fun thought experiment, then put your kid up against that in the jobs market.

I think people will always learn math, programming, and natural languages for fun and intellectual growth, but I don't see those being paying jobs in 2 decades, when AI will be vastly superior to us.

For example, think about how many millions bugs are because of the most basic of human errors, time and time again, and the huge costs associated with that.

Is it essential though? I'm a competent software developer developer, and programming rarely saves the day for me. In fact, I'd probably have fewer problems if I stopped coding outside of work.

Depends what you do, I guess. I'd argue that there are uses in most jobs, but you have to know how to code AND know the domain well. There are few jobs that I've had that couldn't have benefited from knowing a little scripting or some basic unix tooling. At least they would have been a little more fun.

> Trying to make kids learn programming without them being interested is about the parent wanting their children to be like them

That's harsh. I'd say it's about introducing their children to something they enjoy/find valuable, in the hope that the kid will enjoy it (or get value from it) too

Related: I've tried to get my kids to learn piano, because music has been one of the primary sources of joy in my life and I wanted to pass it on. Hasn't been particularly successful - they've developed some skills, but it never really became something fun for them (at least for the older one, the 12-year-old is still learning)

Definitely agree with this. I knew my son was into computers from a young age, and tried to see if there was a further interest there, but didn't push it.

He's now 13 and is programming every chance he gets - but because he came to it himself, I think he enjoys it more.

Fine article, and what it (tongue-in-cheek) calls “cheating” is just what us self-taught automators call “making the machine do all the crapwork for you”. It’s just unfortunate that the greater tooling and culture currently available is such a sprawling hostile ballache that even the most enthusiastic cheater will be driven to conclude that this shit would be (and likely is) quicker and easier just to do by hand.

The foundational mistake is “teaching programming”. The goal should be to instill (“teach”) critical thinking and analytical problem solving skills, and a “programming environment” just another tool, like pencil and paper, which the student can use when exercising those skills on real-world problems.

Whereas “teaching programming” is teaching language features: what all the buttons are and what they do when you push them. Thus mastery of button-pushing becomes feted as the end-goal of itself, instead of being just some tiresome but necessary tool-practising crapwork (like memorizing the ten-times tables and drawing all the letters from A to Z) that you have to go through on the way to achieving your true goals (which can be anything).

Once again, I point to Papert’s Logo[1] as a good demonstration of just how simple that PE can—and should—be to serve that purpose. Logo’s core concepts can be communicated in just three steps:

1. This is a Word.

2. This is how you Perform words.

3. This is how you Add your own words.

Anything else that the platform provides, such as its dictionary of pre-defined words, can and should be explorable and discoverable; something today’s hardware and software can support and encourage without blinking. Let the students teach that crap to themselves if/as/when they need it, and keep the adults on hand just to observe when students start running themselves down a dead-end and prompt them to other possibilities they had not realized/considered.

Oh, and it really should go without saying that the PE’s error messaging must be the top of their class. Because errors aren’t the “wrong answers” of which a student should feel embarrassed and ashamed, but fresh questions in their own right which spark awareness, exploration, self-correction, and insight.


[1] https://www.amazon.com/Mindstorms-Children-Computers-Powerfu...

Kids show interest in random times tho. And if you do stuff with small children in way they find pleasurable, they tend to start liking and valuing that thing.

Most parents introduce kids to things they themselves like or value. Like, sport, reading books, music, video games, nature, shows they themselves like and so on. People do it even with math and grammar (through I was never able to fully understand the grammar thing). The list is pretty long and the more parents you know, the more normal it seems to be to show your kids what you yourself like soon.

Yeah, five years old is really young but I guess it's worth a try.

I think at 5 years old I played some educational games that my parents had (I can't even remember the names..) and I was lucky that we had a computer because that wasn't common in the early 90's.

I learned a lot about computers from trying to cheat at games though - whether it was hex-editing to get around CD-ROM checks, or memory/packet editing to cheat in the games themselves. I guess mischief and breaking things is attractive to children.

I would have definitely been interested in it before school. I created my own story games using papers and letting people make decisions which lead to a next paper with a story/picture on it. Kind of like a text based game. It would have been amazing to be able to do that without having to use tons of papers... I also loved maths though, but sadly nobody taught me :(

This mirrors my experience. My father was a software engineer, he tried teaching me BASIC and C++ when I was 7-8. I didn't take to it at all until I discovered programming on my own around age 12-13 when I wanted to learn how to build my own websites.

Generally I find a lot of my interests align with my parents, but I always had to discover a passion for them on my own.

Yeah my kid is around the same age as the OP (kindergarten) and seems like he will be interested in coding some day, but just isn't there quite yet! I didn't get into coding until much later, probably 11-13 like you said, and it didn't hold me back!

We're just trying to meet him where he is at and try to make sure he is being creative, whatever it is.

I think until a certain age, kids shouldn't really be bothered with programming. I'm hoping to teach my niece programming. for now we sit down with legos and I try to teach her via socratic method how to break down an idea in her head into the sum of parts and to see what lego piece she can use as parts to construct the whole.

I agree with this, it's like forcing a kid to play sports if they just wanna read books etc.

Worth noting that the author says he started learning to program on his own when he was seven.

Unless we get an AGI to do it for us, there's a part of me that thinks that programming will eventually be as baseline as literacy.

If I'm right, OP is either ahead of the curve or jumping the gun, depending on your perspective. :)

Depends on the kid and the kind of programming. Scratch can be taught at a younger age because it is very visual and the basics do not require much abstract reasoning.

The script you included doesn't actually work, as you're comparing a string with an integer. It will always return false.

Huh, did the kid understand that 3 != "3"? I'd be stumped how to explain that...

Sure give them a cookie and a picture of a cookie.

Epic, I like your analogy!

So good!


I was going to comment the same thing. It can be fixed by addding a conversion in the if like this:

  if int(guess) == lulu + boonie:
instead of

  if guess == lulu + boonie:

Thanks for the catch! Should embed a version a REPL that we're not still working on.

That's the real teachable moment ;P line 9: guess = int(input(question))

Captains log, stardate 345.455.33:

I record this for people who might want to try this with kids around 10 years old:

I made a game with my daughter, according to the .apk date it was 5 years ago so she was 10.

I started by making a project in android studio. Then a gameloop, where you had one function for drawing and one function for handling clicks/screen presses. So when you pressed 'play' on studio, it opened an 'empty game' on her own phone. All you had to do to make a game, was to edit 2 different functions and to make variables to pass info.

After that we started coding together and I no longer touched the keyboard. I just asked what she would like to do next, and gave advice how it could be done. She had patience for about 15 minutes at a time, and after of total maybe 2 hours, calendar time 4 weeks, we finished a 'hit a mole' game. I was quite careful not to put any pressure like 'lets do a bit more'. And asked maybe twice a week, 'would you like to do some coding'.

After the project she said it was 'not her thing'. This summer she was coding web-UI with Java+IntelliJ in my work as a summer trainee, and now she said she enjoyed it.

“After the project she said it was 'not her thing'. This summer she was coding web-UI with Java+IntelliJ in my work as a summer trainee, and now she said she enjoyed it.”

Her first instinct was not wrong. I’ve been coding 20 years now (self-taught automator who turned pro after the first 10), and though I absolutely love what programming enables me to do I still despise the amount of hostility and crapwork that “popular” modern programming platforms put me through in order to do it.

I hope your daughter goes on to achieve whatever she wants to achieve, and if that should be programming I hope she never forgets that early distaste, because that is the only thing that will drive substantive improvement in a culture and industry grown fat and complacent on the sorry status quo.


“The reasonable woman adapts herself to the world: the unreasonable one persists in trying to adapt the world to herself. Therefore all progress depends on the unreasonable woman.” ― George Bernard Shaw (paraphrased)

I made a game with my 9-year old who's struggling with math. Because of this I did all the programming, but I made him draw the main hero and all the monsters. He's got an interesting style. You can see the game here:


Of course, the game itself is meant for him (and other kids) to play and practice basic math.

I hope he'll get to program his own games in a couple of years.

The game looks great! I love the idea of the maze, it brings me back to the RPG games I played when I was younger. What was the tech stack you used to make the game? I'm wondering if there are any tools or frameworks intuitive enough to make the game with a 9-10 year old.

My kid turned 6 years old in August and is just starting to read basic words and do basic sum/subtraction math with the help of counting the fingers.

I can't imagine how he could start to learn programming at this age.

“I can't imagine how he could start to learn programming at this age.”

Don’t. Instead imagine a computing environment that facilitates the basic reading and math skills he’s now attempting to practise.

Age 6 is a bit young, but by age 8 a child starts developing the capacity for abstract thought, which enables them to turn those rote-taught skills into useful practical tools which they can apply to the problems that they themselves want to solve.

Again, go read Papert’s Mindstorms. It is worth their weight in gold, if/once you can understand it yourself.

Will do, just purchased on kindle. Thanks for the recommendation.

Today I made this with my daughter: https://scratch.mit.edu/projects/433574144

She was watching closely and asked about important details of it. She saw that "if you don't have what you need, you can make it yourself".

Programming isn't everything. Having the confidence to make the world into what you want it to be is. If programming gets you there, fine. If art, poetry, activism, or welding get you there, so much the better!

Nice article! I liked the "I can use code to do anything." remark. It's so true! I assume you're the author.

How did you pitch the idea of coding with her? While I don't have children yet, I love the idea of coding together with them, but I'm not sure how to get them to do it. Especially with minecraft and other way flashier options available to them.

code.org was a great place to start. making anna and elsa dance using ~logo. dance party. also the book Hello Ruby.

My 4yo doesn't know how to read yet, introducing him to programming is definitively out of the scope for now.

And yet.

We have been doing videogames together. (Maybe spent 4 or 5 hours total, distributed in several months. I don't want to overwhelm him or anything).

I found that pico-8 is an excellent platform for doing this kind of collaborative thing. I can do the programming (for now) and draw basic sprites (for now). He's the art director, and provides game design ideas. It's fun, although he gets frustrated when I am "writing" too much time. But I think the idea that "games are made out of letters and graphics" is already permeating into him. I would love to teach him the programming part, but I will wait for him to express some interest on it first (after he learns how to read). If he prefers the graphics (or doing something else) that's fine too.

You don't need to read before programming Scratch Jr

I love reading these. My daughter is only 2 but I've been compiling these tips as "learning hacks" to present as soon as she's ready since before she was conceived! I was also introduced to software development through "hacking" some 20 years ago and immediately fell in love (ms frontpage websites made in school and hosted on free hosting servers that injected banner ads.. my first ever hack was getting rid of those pesky ads with a bit of js back when "js is a dead technology, don't use it" :D) Ive since believed the thrill of "hacking" is the best intro into programming in that it's like a sort of gamification of logical thinking where you need to beat the game by finding and exploiting the weaknesses. Best of luck and please continue sharing your experiences!

Try scratch junior with her. 2 is too soon, but small creative kids can have fun with that.

would you be willing to share this compilation of yours?

Having some success with Logo and 8 yo. Not sure if Logo is the best, but it’s fun and that’s my main concern :-). She quickly figured out how to draw some letters from the basic lt/rt/fd commands.

I'm glad Greg Baugues started blogging again. I discovered his blog all the way back in 2013 with one of my favorite articles of his, "Autoworkers of our generation" [1] and I've been reading his blog religiously until he stopped writing circa 2017.

Glad to discover he got back to writing recently.

[1] https://baugues.com/autoworkers/

these days, and at that age, what you exclude is probably more important than what you teach.

so many overdeveloped, hyper-real, dopamine-avalanches fighting for their attention--good luck getting them to pay attention to mere reality after that. especially when mere reality has to be introduced in baby steps.

Yeah this is a good point and why I think it's important to make sure young children still get lots of physical playtime

I remember taking some classes in basic when I was 7.

I teach my daughter programming in Scratch and it much easier. The fact that she can record sounds and draw her on characters are just some of the aspects that make Scratch appealing.

Addons like MakeyMakey make it more interactive.

if int(guess) == int(lulu + boonie):

There ... I fixed it.

Yeah, question 1 it gave me was "What is 0+1?" and then it told me that 1 was the right answer, when that's what I typed. A few questions later and I thought "hmmm... something is up here"

As the random lulu and boonie are already integers you only need to edit line 9: guess = int(input(question))

guess = int(input(question))

mine was:

`if guess == str(lulu + boonie):`


I just have to say, I would have completely forgotten about 3-2-1 Contact until reading the reference in this article. I "learned" BASIC exactly the same way. Excellent :)

Funny that the code provided in the article doesn't work, but the right (working) code is the one pictured on the header image.

Tss.... replace all Code with

print(" !!!!!!YOU WON THIS GAME !!!!!!")"


totally! i was so proud when she figured this out!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact