Ask HN: How are parents who program teaching their kids today?
98 comments
·June 1, 2025Waterluvian
8 year old badly wants to be an engineer like his dad. :’) Public school got him into Scratch so he was animating things. The high school robotics team I mentor has Lego robotics kits for their community outreach program. Those kits use Scratch. So I got him a used kit and he spends an absolutely ridiculous amount of time making robots that do stuff.
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.
chasil
When I was younger, the "logo" computer language was well-regarded for education of the young.
It is now a JavaScript platform:
Historical background may be helpful:
https://en.m.wikipedia.org/wiki/Logo_(programming_language)
Smalltalk, as the founding language for object-oriented programming, was originally targeted at children.
https://en.m.wikipedia.org/wiki/Smalltalk
I don't think any operational versions still exist.
antfarm
There is a turtle graphics framework in the Python standard library: https://docs.python.org/3/library/turtle.html
Pharo is a cross-platform implementation of the classic Smalltalk-80 programming language and runtime system: https://pharo.org/
glitchc
> - you can’t make your kid into this.
Thanks for saying this up front. Worth repeating.
tough
Goboscript was on HN a few days ago https://news.ycombinator.com/item?id=44026799
for when they grow up =)
laze00
This is great advice.
dybber
I have run a codeclub for 10 years. Here’s some quick thoughts:
- 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
primitivesuave
These are awesome pointers. I especially agree with your first point about writing verbosely - I would do this all the time when I was teaching kids. I would copy and paste things and write all kinds of hairy logic, so they can see how useful it is to use different syntax and apply some refactoring.
exe34
I still do that at 38 - I often write something, copy-paste and edit something, and do it a few times until I figure out exactly what needs looping over. It's not always clear if you use coding as part of understanding the problem domain.
akkartik
This is pretty much the answer.
- I made this little thing with 100 levels, each easy enough to do in 30 seconds to 2 minutes: https://akkartik.name/post/2024-10-26-devlog. My kid has zero patience for lecturing, and this is me trying to sneak through that filter.
- When you get to the end, it turns out you're pretty close to a game of Pong or Snake, and it's been interesting to see people build toward one vs the other. I've been obsessed with Snake lately, alternating between playing it and hacking on it: https://merveilles.town/@akkartik/114547652849162554
paulmist
p5 first sparked my interest in programming 10+ years ago when I was in secondary school. Definitely recommend.
primitivesuave
I taught kids how to code for several years, both in person and through a website that taught Python to ~500k kids. My eternal advice with teaching CS is to delay abstractions as long as possible. Teach them how to draw a circle on a canvas, then get them to move the circle to different parts of the canvas, then get them to draw multiple overlapping circles/rectangles/etc. Once you've got that down, make a bouncing ball animation, simple games, and so on. Most kids don't really care for leetcode problems these days, so it's best to stick to things that are visual, creative, and instant-feedback (i.e. games).
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.
deepsun
My experience also shown that Python, being considered "simple", is actually harder for students to learn. Things I took as obvious are not for first time coders:
Ok, so spaces and indentation matter. How many spaces exactly there should be around `=`?
`a[1]` -- does it fetch something or does it modify something?
`for k, v in a.items():` or `for i in range(10):` -- waaa? How many spaces there should be?
What do you mean my Python script doesn't run, you see I clicked it and it runs. What do you mean "interpreter"?
And the main issue -- types. I'm 100% convinced now that the first language must be strictly-typed, like Java, and don't use `var`, always use explicit types. Otherwise students don't think in terms of types, but "what I put there" like it can hold anything.
scarecrw
I've been increasingly concerned by packaged CS curricula that includes an overabundance of guidance and tooling. I've seen too many students complete a course (successfully!) and leave without any ability to start building projects of their own.
I don't want to end up as a curmudgeon griping about how "back in my day we didn't have an IDE!", as I'm in favor of giving students real world tools early, but I'm worried that we're filtering out some level of independence by sandboxing their learning so strictly.
yjftsjthsd-h
Yeah, I'm an adult and half the time I find that abstractions just muddy the water. The correct amount of abstraction is not zero (possibility excepting the poor engineers who have to actually design microchips), but IMHO it's usually lower than people think it is.
Fire-Dragon-DoL
As a heads up, I fell in love with abstractions as soon as I could understand them (at some point in age 12 or 13 I "invented" function calls in rpg maker events)
neilv
> Knowing fundamentals is always useful, but learning to collaborate with an AI is probably the more important long-term skill.
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".
margalabargala
> And how permanently stunted is a person who always "collaborated" and never had to think.
How permanently stunted are today's programmers which have always collaborated with a compiler or interpreter, and never once written or even looked at assembly?
neilv
That's levels of abstraction, but still thinking.
Just last night, while looking for clear technical information about MCP integration options for Gemini, I found this Google-written article[1], that -- with a positive, hype-compliant spin -- opens with:
> Have you ever had something on the tip of your tongue, but you weren’t exactly sure how to describe what’s in your mind?
> For developers, this is where "vibe coding " comes in. Vibe coding helps developers achieve their vision with models like Gemini 2.5 Pro to generate code from natural language prompts. Instead of writing every line of code, developers can now describe the desired functionality in plain language. AI translates these "vibes" into your vision.
That's not thinking.
We've even appropriated "vibe" terminology, which means something like emotional gut feel, without having to think about it. (Mostly associated with wake-and-bake stoners, who've self-imposed two-digit IQs and munchies, and who will sometimes speak in terms of "vibes", for lack of further analytic capacity.)
Recognizing that the top killer app for "AI" right now is cheating on homework, the collaborate-with-AI 'skill' is like the well-known collaborate-with-lab-partner. The lab partner who does all the work, while the slacking student learns nothing, and therefore the slacker fails the exam. (But, near-term, the slacker might scrape by with a C- for the class, due to copying the lab portion, and due to an instructor who now just wants to be rid of the hopeless student.)
[1] https://cloud.google.com/blog/products/ai-machine-learning/b...
margalabargala
You call compilers "levels of abstraction but still thinking", I call LLMs yet another level of abstraction.
This isn't really some new concept, the only thing new is that it's being applied to areas that haven't historically had a ton of automation.
Hand-wringing about LLMs and "not thinking" is the same thing that was hand-wrung about students using calculators and not knowing how to do long division. Or using a computer lookup and not knowing how to use the dewey decimal system. Heck, or using an automobile/bicycle and not knowing how to shoe a horse.
People over the last decade have demonstrated they are perfectly capable of generating large quantities of crappy, not-thought-out code all on their own. Just look around you. LLMs democratize the lowest common denominator, and those that are doing sufficiently difficult, nuanced, unique things that they actually need to know what they're doing, will continue to do so.
I don't think LLMs will reduce the abilities of the 10% best software engineers, and I don't think the quality of output of the rest will meaningfully change.
oarsinsync
Considering the ridiculous amount of memory and cpu very simple apps use nowadays, in large part thanks to things that enable developers to optimise for their own time, rather than compute, I think you’ve unintentionally hit the nail on the head.
Very few developers today care about resource usage and resource management. Very few developers even understand that there’s something there to care about.
margalabargala
It wasn't unintentional. Like I pointed out in a sibling comment, I agree that plenty of present day programmers are not amazing.
Things like compilers and LLMs decrease the necessary skill to become a programmer, but neither will decrease the skill or quantities of the most skilled programmers.
yjftsjthsd-h
> How permanently stunted are today's programmers which have always collaborated with a compiler or interpreter, and never once written or even looked at assembly?
Not fatally, but the answer to that is not zero
margalabargala
That's tricky.
Did people who would become programmers become worse programmers?
Or did programming just become more accessible, drawing more mediocre talent and dragging down the average skill level?
codingdave
You are already on the right track. Fundamentals are far more important that trying to teach them whatever is current in the industry, whether that is a popular language or using AI. Those things change over time. Fundamentals do not. So keep on teaching those basics, and he'll figure out whatever the current toolkits are, as needed, just like we do.
paulryanrogers
Which fundamentals may vary. College insisted I learn binary and bit shifting, which I've never had to use without libraries doing most of the heavy lifting. Data structures was more useful, though the business focus was at odds with where game dev was at the time.
Games in particular are such a vast mix of skills, techniques, and ever shifting market demand. I left game modding and went full time into biz software as my pixel painting and low-poly modeling skills were falling out of favor. Art fundamentals served me well enough, but I was far too slow an artist to put out high fidelity work at the new pace.
When my dad gave me QBasic, I bounced off it hard and thought I hated programming. Meanwhile I was programming games with tools like Klik-n-Play, Con, and batch files. Later in university I had to learn several programming languages and finally it clicked.
protocolture
My 2 year old is already way too good at problem solving and it causes me significant problems.
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.
SoftTalker
Who guided you? If you're like me, nobody. I was exposed to BASIC as my first programming language, and I just started doing stuff that seemed interesting. My school offered a few "computer math" classes as they were called at the time, which I elected to take, but nobody pushed me into it.
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.
aethertap
This is how it was for me too, but I actually think the world has moved out from under us. The environment today is way more complex, and it's a lot harder to be proud of little things when you see people crowing about how they "wrote this little app over the weekend" and it's already polished and full of features. I remember being proud of my little unit converter that ran on the command line, and even more proud when I got an actual window to show up on a screen (GUI programming took a long time to get into). These days, those things just aren't special enough to keep them engaged. I don't know if it's just too commonplace now, or too complicated to get started, but it doesn't feel the same as it once did.
My kids have finally gotten hooked by godot, after a few years of building up a foundation with simple programming assignments. It's fun to see them digging in for hours to make something, but man, it was a long road to get here.
kyriakos
I come from a similar background and learned to program long before getting any formal cs education. The problem I find with my kid now is that back when I was learning the spectrum of things you could spend time on a computer was vastly smaller than it is today. The distractions are there and it's almost impossible for adults to avoid, imagine children.
A pet project a child commonly wants to develop is a video game. Now imagine going on Google and searching how to build a game and what kind of results you get. How do you convince that child that he doesn't need the shiny flashy thing the ads are trying to sell and just needs to sit down and learn real coding?
nico
With kids under 8, been doing some light "vibecoding". I am their typist as they guide the ai to do stuff they want. Like these:
* 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
gus_massa
Probably start with a turtle, like https://docs.python.org/3/library/turtle.html
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.
dfxm12
In my experience, most of the time when kids say they want to make games, that doesn't mean they want to code them. Making a game is usually not a task done by a lone coder. It is a task done by someone who can manage different technical, creative and business types. I think kids want to have ideas. This creativity can be captured by coding, maybe, but maybe there are better outlets for the individual. The director of street fighter 5, for example, started as a music composer.
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.
ryoshu
Mentoring some middle school kids right now and they are coding games. They didn't know they could do it. But it's really easy these days with modern tools. They love it. And doing the music and art and story as well.
supportengineer
My teenagers have zero interest in programming. They like just about everything else other than programming. They both have the ability, but it’s not what they want to spend their time doing.
SOLAR_FIELDS
For what it’s worth I hated programming as a kid and was not interested in it and didn’t pick it up until well into university. A couple of my siblings followed the same arc.
bombcar
The surest way I’ve seen is to show something practical that can be done - which can be relatively easy with things that interact with the real world - like programming Home Assistant to do things, especially things to annoy siblings and parents, like lights that turn themselves back off.
Nextgrid
> show something practical that can be done
The consumer tech industry's primary objective is "engagement" aka wasting human time and is thus intentionally hostile to automation or any kind of programmatic interactions, so it isn't easy to find such things.
sizzle
I wonder if the next generation of dads will be teaching their kids how to ‘vibe code’ with fun and simple prompting in the age of LLMs.
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?
Father of two here. I started coding in BASIC when I was 8 and fell in love with computers. It evolved into a passion for building products, and it has been my life's career.
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?