by laze00 on 6/1/25, 4:27 PM with 93 comments
My son is showing interest in programming, mostly because, like other kids, he wants to make games. That's what got me started, too :) We've been working with Scratch and GameMaker, and I’ve been focusing on fundamentals like logic, structure, and problem-solving.
It's really about getting him experience breaking problems down so he can solve bigger problems. E.g., before the hero can shoot an arrow to defeat the bad guy, we need to be able to create arrows, move them, know their position, and know when they hit the bad guy. He gets it.
That said, I wonder whether focusing on CS fundamentals is worth it. Knowing fundamentals is always useful, but learning to collaborate with an AI is probably the more important long-term skill.
What are other parents doing? Have you found a balance? What tools are you using?
by Waterluvian on 6/1/25, 5:57 PM
This started at a very young age: we gave him access to a windows PC, not a tablet. So by 3 he could log in and get to YouTube kids. This meant that keyboard and mouse and web browser were very comfortable concepts.
We also gave him and his younger brother countless building toys. Meccano. Lego Technic.
A few lessons I’d love to empart:
- you can’t make your kid into this. His younger brother has no interest and is far more about sports. So we nurture that with him instead.
- open ended learning. I’m not sitting down and teaching him. All I do is make sure he has access to the tools, and I unstick him when he’s stuck.
- I connect concepts when I see them. “That’s called a loop. It’s just like that thing you did in Minecraft to make your machine work over and over again.”
- the learning must all be a side effect of having fun. Don’t try to teach programming. Do fun things and fill in the programming toolbox, tool by tool, as they’re needed.
- connect programming to what your kid is passionate about. Programming is a means to an end, not the end itself. My kid loves trains and has a Lego train set. I suggested he use his technic to automate the track switch. I then let him work at it for hours and hours over weeks, giving him breadcrumbs of what to consider next.
by dybber on 6/1/25, 5:18 PM
- Make them curious, if they are curious they will teach themselves. Example: don’t tell them what a for loop is, make a project where they really need it, but let them first to write it very verbosely without loops, then they will almost invent it themselves and be relived when you teach them (same style can be applied to most things)
- make projects that have low entry level, but where they can improve it infinitely. E.g. build an aquarium simulator or a city simulator using p5.js
- make them collaborate with other kids if possible, often they learn better from their peers than listening to their parents. Facilitate collaboration, and help them come up with more and more difficult projects, that require more and more of them, so they don’t stay on the same level too long
by primitivesuave on 6/1/25, 5:43 PM
This was a really useful realization when I was teaching kids to code in person for ~5 years. I started off teaching Java with an abstraction layer (https://www.bluej.org/), but I found that many students would be intimidated by anything that ventured outside of the abstraction (e.g. just run `javac` on your computer with a `.java` file). My most successful students intuitively understood how to turn a text file on their computer into a useful piece of compiled code, or into a JAR bundle that they could share with others. They also used the various abstractions that were thoughtfully introduced over time - e.g. an IDE that gives you a run button, libraries like Firebase which enable some exciting multiplayer game options, and so on.
by neilv on 6/1/25, 5:50 PM
How difficult a skill is "collaborate with an AI" that it can't be picked up quickly at any time (and will be changing rapidly)?
And how permanently stunted is a person who always "collaborated" and never had to think.
> I’ve been focusing on fundamentals like logic, structure, and problem-solving.
These are good. And exploration, and having fun.
> CS fundamentals
You can gently drop CS-ish ideas, or more sophisticated programming ideas, as the kid is ready. For example, they're blocked on something they're building, and can't go any further, because they're trying to do everything as code with not enough data. So you show them what could be data, and what language feature enables that, and suddenly their code looks a little more sophisticated, and a lot less repetitive.
If they keep going, eventually they will want to frontload learn all the CS things. Not for Leetcode interviews, nor for whatever job-gatekeeping atrocity is made up next for people who also have to interview-prep to fake "passion".
by codingdave on 6/1/25, 4:30 PM
by protocolture on 6/1/25, 11:48 PM
His favourite book at the moment is "Baby Loves Coding" mostly because it features a train.
He has a phonics laptop that he drags around the house, types on it madly then uses it as a step to climb over obstacles. He already uses 3 or 4 step logic when trying to get things, like seeking a second tool to use to pull something he wants closer to him. Pushes a chair to the front door, climbs up and tries to operate the deadbolt.
My goal in the short term is to read to him more. Long term, I reckon he will be able to work with pygame before he is 10.
by SoftTalker on 6/1/25, 5:44 PM
Give the kid some programming tools and leave him alone. Be there for questions, and brainstorming if he wants it. Otherwise let him figure it out. He'll shoot himself in the foot, and maybe get discouraged but if his interest is deep enough he'll persist.
by PaulShin on 6/8/25, 4:57 AM
You're wondering whether to focus on CS fundamentals or the skill of collaborating with an AI. My take is that this is a false dichotomy.
From my experience building an AI "teammate" that's integrated into our team's daily workflow, the most crucial skill of the next decade won't be one or the other. It will be using the fundamentals to ask the AI better questions.
The biggest challenge we see isn't the AI's ability to execute a task; it's our team's ability to frame a problem clearly and break it down into logical steps that the AI can understand. The best results don't come from our best pure coders, but from those who can translate a vague goal (like "make this design better") into a series of fundamental, actionable instructions.
So, I believe the original poster is on the perfect track. Teaching his son how to "break problems down" – how to create arrows, move them, and know when they hit – is the foundational skill for collaborating with any intelligence, human or artificial. He is not just teaching him how to code; he is teaching him how to think.
And that's the one skill that will never be outsourced or automated. Best of luck to the OP on his wonderful journey.
by supportengineer on 6/1/25, 5:32 PM
by dfxm12 on 6/1/25, 9:48 PM
I think it's important to really understand our kids. They may not have the experience or vocabulary to have this discussion. Wanting to make a game and coding are different things. You're on the right path in terms of breaking things down into smaller, solvable problems. Coding might be part of it, but translatable skills to making a game might also include leading a band, making a short film, playing team sports, etc.
by wslh on 6/1/25, 5:17 PM
Just my two cents: if your kids aren't very interested or ready for that kind of knowledge now, you might find that in a few years they can learn it surprisingly quickly if they're interested then. What takes months to teach early on might work in days or hours later.
Also, don't forget to explore https://www.alice.org/ it's a 3D way to get started.
by nico on 6/2/25, 6:10 AM
* https://openjam.ai/stupid_coral_852/8s0opc6yc5
* https://openjam.ai/stupid_coral_852/y2hj69iqvo
It gave them the experience of using a computer to create more complex things they wanted to create. They also got to experience the fun of iterating on something while playing with it. It kinda felt very natural for them
As long as they keep enjoying using these tools I believe they'll keep wanting to learn more
by empressplay on 6/1/25, 8:41 PM
If they have a good foundation in these things, then if they choose to go on to coding later they can learn all of the minutiae. But I've found in teaching it is important to stress that learning basic coding is _not_ about steering them towards coding as a career, or even a pursuit.
It _is_ important to stress that learning basic coding will help them become better problem solvers, better able to anticipate issues and mitigate them. And that this is useful to them in a wide variety of areas in which they may have interest, such as sports, engineering, adventuring etc. And yes, also learning how to guide an LLM.
So once you get those fundamentals down in the context of coding (Scratch, GameMaker, Logo, BASIC are all fine here), go practice them in more real-world applications. Those are the skills you need to foster, not object-oriented programming. And if they take an interest in going further with coding, then that's fine. They will have the tools they need to do that.
by gus_massa on 6/2/25, 2:25 PM
First just graphics, then functions without parameters to make a fixed drawing on demand, then add a parameter to choose size or color...
For games I think it's better to use absolute coordinates, so perhaps redo most of that without a turtle (and without rotations).
> That said, I wonder whether focusing on CS fundamentals is worth it. Knowing fundamentals is always useful, ...
Wait a little, until they learn to use the editor and run simple programs. Try to focus in teaching nice habits like not too many globals, but how many bits has a byte can wait.
> ... but learning to collaborate with an AI is probably the more important long-term skill.
I'd not worry too much. They will learn faster than you.
by AndrewKemendo on 6/1/25, 5:54 PM
I teach them the following:
1. Goal determination - what do you want to do?
2. Context mapping - What is the environment and action space we’re operating in?
3. Problem decomposition - Given The previous how can I chunk the overall space of action into measurable and manageable parts to solve
4. Tool selection - what effector systems can I access and can they solve the subproblems?
5. Structured solution exploration - Now that I know my goal, context, problem heirarchy and tools, how do I create experimental system to progressively solve each subproblem and the intersection between them
Then it’s just running that until you have a solution
This transcends “coding” to more important thing which is holistic alignment of goal (direction) and action capabilities (magnitude) that results in a measured action vector which is discrete and bounded.
by StrauXX on 6/1/25, 6:25 PM
It was a slow burner but over the course of four years he ended up learning quite a lot. Now being one of the best programmers in his college.
by freefrog334433 on 6/1/25, 11:52 PM
I made a website for parents to see, at http://rustycc.com.au/whyrust for more details of why I chose Rust.
I used Rust, partially because like you, I started with C at an early age, courtesy of my Academic father, who placed me in front of a Unix mainframe at the Uni "babysitting", and older children taught me.
To make it fun, I developed multiplayer games, and children program the actions of a robot avatar, so they have their character, and robot in the games. I also used it to teach mathematics.
by scarecrw on 6/1/25, 6:27 PM
One of my personal favorite resources is CS Unplugged. [1] It sidesteps any particular language or toolset in favor of pen-and-paper interaction.
by danenania on 6/1/25, 6:00 PM
It’s fun for me too since learning to program robots has always been on my bucket list. Chatgpt helps since even though it’s meant to be intuitive, you still run into various issues pretty often, and documentation is scarce. Sending screenshots to o3 works amazingly well to get unstuck.
by sizzle on 6/2/25, 9:16 AM
This is readily accessible to non tech savvy parents and was never an option before, but here we are in 2025 with AI coding tools front and center.
What about using LLMs to help break down the concepts in kid friendly terms, lowering the cognitive load for exhausted parents.
I can even see it as an extension of your lesson plan, further guiding them like a virtual tutor version of yourself. Thoughts?
by slt2021 on 6/1/25, 5:39 PM
these three fields underpin all advanced sciences
by chili6426 on 6/1/25, 6:46 PM
by agentultra on 6/1/25, 11:50 PM
[0] https://www.csunplugged.org/en/#:~:text=CS%20Unplugged%20is%...
by joshuajooste05 on 6/1/25, 6:11 PM
I think the only way to learn to code is to really limit the use of AI (obvs can speed up some things, but never let him copy and paste from it)
I don't really think there is a substitute for encouraging him to push through without AI tbh.
When he eventually start's vibe coding, it will be like putting a v8 in a Ferrari instead of a VW golf.
by sriram_malhar on 6/2/25, 5:10 AM
As a next step, I'd suggest GoboScript, that was on HN a few days back. https://news.ycombinator.com/item?id=44026799
This is Scratch with a textual interface, with a few lovely and much needed extras.
by zeroc8 on 6/2/25, 6:53 AM
by aptj on 6/2/25, 8:13 AM
> Veritasium: How One Company Secretly Poisoned The Planet https://youtube.com/watch?v=SC2eSujzrUY
Edits: minor typos.
by hobsonlane on 6/2/25, 1:04 AM
by bhu1st on 6/2/25, 3:43 AM
by bigs on 6/2/25, 11:14 AM
They have a bunch of other programs too but for some reason I seem to only be able to find them on Amazon now.
He did want to create Roblox levels and Blender based characters and it was just too much to start with.
by rcarmo on 6/2/25, 6:40 AM
There was zero emphasis on CS fundamentals - they went out and explored those themselves.
by chondl on 6/1/25, 6:20 PM
by orochimaaru on 6/1/25, 6:11 PM
by abstractbill on 6/1/25, 5:46 PM
by 28304283409234 on 6/1/25, 5:41 PM
by chaddattilio on 6/1/25, 7:10 PM
by empressplay on 6/1/25, 7:38 PM
by type0 on 6/2/25, 7:29 PM
by ramshanker on 6/1/25, 5:31 PM
by dyauspitr on 6/1/25, 9:32 PM
by khelavastr on 6/1/25, 5:43 PM
by ninetyninenine on 6/1/25, 5:51 PM
by dataf3l on 6/1/25, 5:42 PM
by darthrupert on 6/2/25, 5:51 AM
In other words, be a parent, not a friend or, even worse, a colleague.
by jmole on 6/1/25, 10:45 PM
One game they play is luanti (formerly minetest). I gave them instructions on how to clone the git repository for the game, run the build script, and then start the game. They've probably forgotten the build instructions, but they know to play, they have to type `cd code/minetest` and then `bin/luanti`. Occasionally they have to run `git pull` to update the code on their computers. I handle all the game server administration.
I initially blocked all internet access with a kill switch, but this quickly became an issue because you need to be able to run `apt update` and a few other commands to keep the system up to date. So now I run a proxy server called e2guardian that lets them access sites that I choose.
Later, I introduced them to scratch, and I downloaded the entirely of griffpatch's youtube library with yt-dlp and organized it into folders on each of their computers. I've done the same thing with other tutorial style videos. They don't have access to youtube, and I don't really think it makes sense to give them access at this age.
They run scratch locally, as opposed to using scratch.mit.edu. I enabled the scratch website for a couple of days as a treat for them, and as expected, they spent most of the time exploring and playing others' games, but very little time building their own. I sort of expected this to happen, so we closed off access a few days later, and they took some of the ideas they saw online and started playing with them locally.
So my experience is:
a) linux makes a great platform for kids, since it's very easy to tweak things to stop behaviors that you don't want to reinforce. e.g. `sudo chmod 400 /usr/local/games` turns off all the games, `sudo killall kidname` will close the desktop session if your kid isn't listening when it's time for bed, you can set up time-based login policies with pam_time, you can install your own root certificates for SSL MITM, etc.
b) games reinforce that "computers are fun", and games like luanti are free, open-source, and hackable.
c) interest in games naturally spills over into interest in making your own games.
If you want to try luanti/minetest, I recently cleaned up/released a mod that I built for the kids last year called turtlebots. It's a visual programming tool that lets you program little turtle-shaped robots that can navigate in a minecraft-style world and build things as they move around. Source is here: https://github.com/jmole/turtlebots
by moritonal on 6/1/25, 6:08 PM
by senectus1 on 6/2/25, 2:21 AM
he's teaching himself c, c#, openGL, c++ etc etc. kids these days learn at their own rate via youtube in my experiance.