Ask HN: How are you teach your kids programming in 2025?
However, I don't want him to JUST play games 24/7 but for him to do something productive like learning how to code. And I'll meet with him once per week to check up onhim.
My dilemma is that AI has completely changed how I personally code(and learn things), and all of the existing courses/curriculums for kids just feel a bit archaic...
Obviously, I can't just tell my nephew to go talk to chatgpt all day long and learn, without a project plan/target, he's gonna drift off(as I would too). I'm also thinking, since my main goal here is for him to just learn, maybe we should even just start with basic math/science instead of straight into coding?
I don't have any kids myself, so I'm curious to learn how all of the parents on HN are educating their kids today! Anything is helpful :)
I personally got hooked on AtCoder and Codeforces when I was in middle school. Back then, many contests started around 2 AM Japan time, which was tough, but it was incredibly fun. That experience is what led me to become a software engineer.
This hasn't changed even in the AI era. I now have Claude Code write most of my code, and I don't spend nearly as much time actually writing code as I used to. However, the underlying data structures and algorithms still excite me immensely. There's something deeply satisfying about understanding the fundamental concepts and problem-solving techniques that no AI tool can replace.
Competitive programming teaches you to think algorithmically and break down complex problems - skills that remain valuable whether you're writing code yourself or directing AI to do it for you.
I'm partial to PhaserJS because it's browser-based, not too much required to get started, lots of simple game tutorials and lots of instant-feedback making characters move and stuff.
Be prepared to cover a lot of basic computer usage and math.
One idea is to pose problems at a high level and ask how one would solve them.
A reference is Strategies forCreative Problem Solving, by Fogler and LeBlanc
I recall an early day at work when I called the boss that I would be in late, running some numbers on the home computer (in Basic). They were tradeoffs using various ranges of variables. The alternative was the IBM 360, fat chance. He looked a bit angry when I sauntered in, but when I showed him the printout, he realized that I had done about a week’s worth of work. Basic is out the window now, but the point is to go from a problem to proposed solutions (TMTOWTDI) [0] and there may be more than one way. In fact, that might lead to a globally better solution than some local peak and certainly more instructive, as in proofs of Pythagoras’ Theorem.
Through successive narrowing down, one finally gets to what AI does “best”, boilerplate, and by isolating its output, one can actually test the result with a smaller range of inputs.
Okay, I am not, nor was I a professional coder. More a scripter and admin, tasked with solving problems in the quickest way. Perl did most of the heavy lifting. So, I am not griping on pro’s.
The main thing I liked about perl, and groovy and python, which I didn’t need to use, was the existence of tested libraries. So, with groovy, I could access all the java libraries. No doubt the same for others. I have no idea how to impress this on others, since I think it’s way more trustworthy than black-box code, but I do recommend it. To what extent AI is going to reinvent the wheel on every coding request from it’s giant parts bin, I don’t know.
I believe that the value is in translating problems and needs into potential solutions and finding or choosing a “best” one. Code blocks are a dime a dozen, or perhaps better put, 45+ cents a kilowatt. (In CA). It’s how you string them together that makes all the difference. A wheel for climbing stairs may be three-lobed or even legged [1].
A beginner is going to get no insight from black box output, IMO. More from documented examples and libraries. I learned a ton about perl from the rdb relational database by Hobbs, [2], reading through it and learning what was going on and how. It was open source, and has moved to github.
Of course, you might suggest something newer than all of the above, but start simple, of course.
I liked things like map() and such, as an alternative to looping, but that may be on the advanced side.
[0] There’s More Than One Way To Do It
https://perl.fandom.com/wiki/TIMTOWTDI
[1] https://www.mdpi.com/2073-8994/15/11/2071
[2] https://github.com/ironsmith58/RDB