Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: Please share your experience teaching your kids to program
295 points by lmilcin on Jan 5, 2021 | hide | past | favorite | 234 comments
Hi HN!

My son recently turned 7yo and I have successfully got him interested in programming. We started about half a year ago playing Minecraft and building more and more complicated automated machines. Recently I have added some robots that can be programmed in Scratch and now we have also started writing some simple games in Scratch.

I am not just trying to teach him programming but also show that with a bit of organization and working little bit each day you can achieve pretty huge results. So we created a very simple version of a game. I have then created a document where we are maintaining a listing of functionality we want to add. We then take them one by one, discuss how it can be added to the game and then tick off once it is done.

For Christmas he asked for some programming books ("how to make complicated Minecraft machines, how to write complicated commands and how to make mods").

We plan to do some more complicated robots and also make our own fun mods for Minecraft (as soon as I figure out how to hook up Scratch to recent version of it).

I am trying to not spend too much time on any given day (about 1,5h every day currently) so that ends up still wanting to do more.

I am also doing large part of coding myself and we switch who sits by the editor when he says he knows how to do something. I am trying to keep him enthusiastic by showing constant progress which I think is more important than that he actually does everything by himself.

I have 20 years of development experience so generally programming is not an issue for me.

Please, share your experiences, things that you have tested with your kids that did or did not work. Any tips you have personally tested.



Didn't work:

  - BASIC, Ruby, Python, Java setups + intros, tutorials.
  - LEGO Mindstorms
  - Scratch, Squeak
  - Coding classes / camps
Note that I "made these things "available" but never pushed. I'd set up the environment, show him to to edit and run the code, and pointed him to tutorials. After some time went by I'd show him the next thing. Rinse and repeat.

Worked:

A Texas Instruments programmable calculator. He read the manual, played with it a bit, then found out he could automate some of his homework. Then found out he could make simple games. Then fairly impressive games.

After that, he did a bunch of Minecraft programming and loved it.

Fast forward a decade and he smokes through Advent of Code without breaking a sweat, and is a co-founder and CTO.

I.e. all my efforts to pique interest didn't have any effect that I could see. He had to find his own way to it.


> Worked:

> A Texas Instruments programmable calculator. He read the manual, played with it a bit, then found out he could automate some of his homework. Then found out he could make simple games. Then fairly impressive games.

That's pretty much how I got into programming, except rather than homework it was coding automation for a very repetitive video game I was playing at the time. Although in terms of time spent, it was a net loss as I spent more time combined programming and playing as opposed to just playing, but there was a significant net profit in terms of skills I learned which has had a far more practical and positive benefit to the real world as opposed to if I just played the video game all the time :)


TI99-4A long time ago. Programming a textual adventure game in Basic with my father (complete with matrix printer code printouts to make notes on). About a highrise appartment block with one unknown inhabitant being a murderer. Started with a crime scene. As player you had to find the murderer by walking around, talking to residents. You might talk to the wrong person and get killed yourself.

It was the combination of the game being thrilling and exciting, combined with the notion that you could make it ever better. Adding objects, people, discussions to be had, intrige, distracting side-plots.

My father had the lead in this, and in the evening he added stuff and surprises, that I could discover during the day, and then build further upon.

Also I think the fact that is was text-only rather than graphical helped keep interest, where my child's fantasy filled in the imagery (we went to graphical, Donkey Kong like games, later on. A different exercise, started when my interest in programming had firmly taken root. With graphical games you work on abstractions that aren't needed in text-based games and may be less easy/appealing for kids to take the effort to grasp).


> A Texas Instruments programmable calculator. He read the manual, played with it a bit, then found out he could automate some of his homework. Then found out he could make simple games. Then fairly impressive games.

Some thing never change. This is literally how I started programming too. "Hey, I can automate my homework" -> "Wait, I can write a program to play poker with all the time I saved by not doing homework."


Wait what you guys actually save time by automating things?


Underrated comment


Same here. Twenty years ago my dad gave me a TI-85 and told me I could program it. I remember being stuck for a while until I learned that “string” meant text. The first game I built was hangman, using “split mode” where you could show half the screen as a graph and half as text


Ditto on the 85. Stick with the 85 or similar. I later had a 92 which was sweet but the symbolic capabilities made it easy to not retain a lot of early calculus.


I don't know the full story but this kinda lines up with what I wanted to say about the topic.

My GFs kid was not at all interested in what I did, until it could relate to her friends at school.

Apparently some of the boys at school had used Devtools to modify a class website and add dirty words or whatever it is they do.

So I showed her at home how to go into Devtools and change the appearance of the teaching portal they had. That really captivated her because it was something she could show off to her friends.

Same with the calculator. I remember kids having those at school and programming them when I was young. It was something you could actually bring to school and show off, it was something relevant to all kids because they all had to get one.

Another modern suggestion would be mobile app dev.


> until it could relate to her friends at school.

Perhaps that's the key for making something stick, beyond "immediate practical applications".

I learned programming as a kid because I played videogames, and started dreaming about making my own. But at the same time, I also had people I could talk to about it! At age 10, my cousin and I were constantly discussing how to make StarCraft and Fallout better. At age 13, when I first picked a C++ book (after prior failed attempts of other people to expose me to Basic, Pascal and VB) with intent to learn gamedev, I had a friend at school who decided to learn C++ as well. Over the year, we've managed to drag a third person into learning to code, and another one as a spectator to what turned into years of trying to one-up each other in doing shit in OpenGL.

And then I got on-line and discovered a local gamedev community, where again, I could participate in mutual showing-off.

Point being, as I re-evaluate my early years of coding, I notice I always had someone to talk to who could relate, or at least be impressed (real!impressed, not fake "I don't understand or care about any of this but go you!" parent!impressed). Looking at all these stories here about programming to automate homework - which presumably also impressed classmates - I'm starting to wonder if this isn't a necessary condition for a kid to get into programming.


First, respect for taking the time to teach her. Second, I have difficulty writing this exctly because of the last sentence, will do so anyway -

I taught myself to program in 1984, two years before finishing high school. That and being on the chess team pretty much killed my social life and any chance at carnal activities until I turned 21 (high school was followed by compulsory consription for 2 years). I struggled with that.

Today I note that impressing friends and strangers has become very big business. Influencers. Looked at one this morning on Instagram. This dude had muscles, gave thed impression of owning a Bently, a curvy girlfriend and a house in Majorca. No clue as to how he eant a living or obtained that wealth. Assuming those material posessions are his.

These things are the antithesis of what I went through, even though today I have the means to aquire everything from the Bently to the large-breatsed blonde in a house on the Costa Del Sol.

And yet that prospect fills me with dread because it's vacuous. There's no meaning or value behind it. Same goes for teaching someone something for the purpose of becoming popular or impressing others. Seriously please don't take this as criticism. ANY time spent with kids is time well spent.

I guess where I'm going with all of this is that I hope to teach my 8y/o boy to seek out meaningful, rewarding relationships and experiences that build him up. Without a need for others' approval. And I have vague ideas how I might do that but in a practical sense I'm at a loss and that scares me. And I would LOVE to teach him how to program but so far I've made no progress.

Part of being a dad I guess. Happily I've discovered that if I want a thing enough I find a way. Patience...


Hello, I've stumbled across your comment and happy to see that enough time has passed that my reply is unlikely to be read by anyone but you. I am a very similar position as you, being a self-taught programmer, living a very "contained" lifestyle despite my past professional successes, and also in our calculus of what is meaningful and valuable. I completely agree with your sentiment about these things we see on Instagram conveying no inherent meaning, but I would like to suggest and warn you against the trap of thinking that we can possibly know what is "meaningful" to another human being, even a member of our immediate family or one of our children.

We are human, yes, and there will be inevitable similarities in the things in life from which we derive joy and sadness and meaning and love and hate, etc. But it is after all a subjective thing in the utmost, and trying to persuade or coerce our own subjective meaning and value judgments onto others will only ever result in conflict. That's not to say we shouldn't have our values challenged, as that is the only way we can grow as people. But your kid -- indeed, every human being that ever existed -- has to make this trek themselves. Nobody can do the hard work of finding meaning and purpose for us, and the older I get, the more I can see how damaging it is when we try to do this hard work for someone we care about. It's impossible to convey tacit knowledge, and it's from tacit knowledge that we derive meaning and construct our system of values. The world's languages are littered with empty platitudes as a result of this struggle. That's why the best answer is also the most challenging: Set a good example and be there to help those you care about to process their experiences (good and bad) intellectually so that they might gain that tacit knowledge. If you're still reading this, I'd like to suggest taking a look at the ancient Stoic philosophers (Epictetus, Seneca, etc), as the things they wrote thousands of years ago have been extremely helpful in my own journey.


Well there are different ways of looking at impressing your friends.

Funny but I have two replies to my comment, one saying they became proficient at programming by competing with their friends in games programming and discussing together how their work could improve. And your reply taking a completely different direction about showing off with cars and women.

It seems the morale is that youths like to show off, regardless if it's with a car or with their code.


You would enjoy a Bentley if you liked Bentleys or certain kind of cars and enjoyed driving them. You would love a big house in Majorca if you were from the area and had a big family -or plans for it- and you would love to be with the person you'd love to be. Those are just examples. There may be a thousand more reasons why you'd love those.

The fact that you don't like Bentleys, big houses in Majorca or a specific lady does not make them vacuous or meaningless; not to mention it would be 100% rewarding if those were your dreams and you've accomplished them.

That guy may or may not like those, but appeals to people that would love -or they think they would- those. The same goes for any other dreams we have.


Deserves Kevin Mitnick's medal. We likely should think hard about creating good opportunities to rebellious learning of computers at schools.


Many clever computer tricks I saw in high school were ways to get around restrictions set by school admins, including an IP blocker that my classmate helped me bypass so I could check my personal email for college admissions results.


I taught myself to program on a Ti83 because I wanted to cheat on math tests by creating programs to do the formulas and calculations in trig and calculus. However by learning them enough to write a program to automate it, I was actually doing a form of applied-studying and learned them so well I didn't need the programs!


Very simple: first you showed him a complex, abstract, adult world boring thing.

Then he found out how to apply code to immediately impact his real life. Code became _useful_ and _fun_.

Aim for immediate practical application.


I think this nails it.


How do you attribute failure to the early introductions? Perhaps they didn't stick at the time, but they likely laid a solid foundation :)


I think there was a giant gap between expectations and reality. He wanted to program so he could make video games, but learning to program starts out text-based. The gulf between learning to code and learning to make video games like the ones he enjoyed is overwhelming.

I think the calculator eliminated that dissonance between expectation and possibility.


This is why I think javascript is secretly the best programming language to start someone out in as you can very quickly get to doing "cool" things - throw up a barebone html page with a canvas element and boom, you have full control over a graphical user interface. You figure out how to draw a rectangle, move a rectangle, and keep track of where that rectangle is, and you basically have everything you need to write a (very) basic game engine. With guidance, something like pong might be only a few hours away.


A classmate of mine in HS always played with his TI in class and I had a similar calculator (TI-84 plus silver edition). I asked him what he was doing and he introduced me to basic logical operators to make math class easier. That’s how it all began for me.

Will, if you’re reading this, I owe you my career!


>I.e. all my efforts to pique interest didn't have any effect that I could see. He had to find his own way to it.

All of my attempts to interest my now 13 year old have met with similar indifference. He's genuinely impressed with the work I do, but is much more interested in being a streamer. Oh well.


I also started programming using my calculator. I would write programs that fed me equations I needed to memorize via a menu system but by the time I programmed it, I had already memorized it and never needed to use it.


Your kid is 7. I'm pretty sure hat I was eating dirt when I was 7. If he has showed you he's interested in programming then go ahead, but make sure you're not projecting your own interests onto your kid. It'll lead to resentment in 7 or 8 years.


I agree completely. I don’t understand the recent trend to believe that we need to get kids into software engineering as soon as they pop out of the birth canal. My friend is an accountant. If he asked me for advice on how to make spreadsheets more fun for his kid I’d think he had something against his kid. In the words of Pink Floyd “Hey! Nerds! Leave them kids alone!”


> I don’t understand the recent trend

You are mistaken about that "recent" part. Parents have always wanted their kids to go to best schools and learn for well paying, prestige jobs. It's just that what is well paying has changed.

Why wouldn't I want my kids to be interested in something that will get them good start in life, that could be groundwork for their future careers ASSUMING it is fun for them and they are doing this out of their own volition?

That would teach them you can have fun doing science or technology rather than treating is as a necessary evil?


No worries, you seem to be doing fine.

I would justs try, not to put too much pressure on him (or you) to make progress with your project, when he wants to do other things. And in fact, don't forget to motivate him to do other things, like play outside with friends in the actual dirt. Or with you. That is very important for his motoric, social and immune skills, too. In general, just being a kid. With not too much responsibilities and just being able to play freely. 1.5 h of serious work and learning every day do sound a bit much, if that means, it is cut from the outside time with you.

You can also combine being outside with the project, by having pen and paper around to discuss and write things that come to mind ...

Oh - and of course: have you considered Lego Mindstorms? I had great success with it, teaching nephews the basic of robotics. With something they can touch. And the ability to work with their hands and minds, as this involves also designing of the chassis and the arragnement of sensors, etc. In general, LEGO is very accessible. So I would start with that, before turning into a more serious base of actual robots.


> Oh - and of course: have you considered Lego Mindstorms?

Got 51515 from Santa:)


Oh, there is a new generation out, it seems, looks good. I used the very first version of Mindstorms .. have fun with it :)


No offence to you. If your kids show a genuine interest then fostering that interest makes sense of course. It could be programming or it could be tennis, if they show an interest then go for it. I guess I’m just sick of seeing so much marketing around ‘code-for-kids’ classes and products and all that faff.


> Parents have always wanted their kids to go to best schools

Parents haven't even always wanted their kids to go to school.


> Parents haven't even always been able to send their kids to school.

FTFY


My kids LOVE making spreadsheets. They use it to track points in various competitions and games and stuff like that. The script is actually a good entry point into programming too (simple stuff like SUM and AVERAGE, and constants like $A$1 or whatever).


While there's good things for a kid to learn from spreadsheets, it might also do harm because it's so dissimilar to "the real thing".

It's like when students learn MatLab. While much closer to regular software engineering than spreadsheets, it is still different enough for all the wrong basic concepts to sneak in and manifest. Switching to a classic programming language afterwards might actually be harder that way (not only learn all the new stuff, but unlearn/unlink the old stuff).


I also loved making spreadsheets as a kid. I remember I'd get books about dinosaurs and add information about them to a sheet - latin name, size, height, etc. IIRC my dad accidentally deleted the file at some point, or it got lost somehow.


Actually making accounting fun for kids is also a good idea and should be encouraged.


Well you could say that about any vocation.


Maybe. But accounting, or at least grasping personal finance, is a practical gift in a way that many others aren't at an introductory level. For example if you only want to be a manager at McDonald's you have to learn the most basic of accounting tasks.


“Accounting” and “personal finance” and “spreadsheets” are three very different things that seem to have been used as if they were interchangeable in the subthread beginning with dave_sid’s hypothetical about an accountant asking about making spreadsheets more fun for kids.


They're very related, though. Kind of like "cooking", "personal nutrition" and "kitchen utensils".


Honestly, a small amount of programming knowledge would make a lot of jobs better


Sure. The basics of a lot of vocations is something that is very useful to be able to do for yourself. A bit of plumbing, a bit of carpentry, a bit of cooking, a bit of cleaning, a bit of accounting, a bit of public speaking, etc. Pretty much the 101 of being an adult.

Or put another way, a skill or service being a vocation just means it's useful enough for enough people, so that society can support it functioning as a distinct job (or set of jobs). The more useful it is, the more demand there is for that job - but that also means the more useful it is to know the basics yourself. A random Joe or Jane doesn't really need to know how to x-ray stuff to find material defects, but they sure as hell will benefit from knowing how to wash their own clothes, fix their own faucets, balance their own books, ... and how to automate this and that in their use of computers.


Agree: I followed my Dad around the farm for hours when I was a kid.

And yesterday I completed the first part of my prototype "gaming couch" and made sure those of my kids who cared could see how I did it.


Seeing as accounting is on its way to being mostly automated in the coming decades, this is not good advice.


Yeah bullshit programming classes https://www.whitehatjr.com/, where they promise that your kid will become the next Gates/Zuck. Have your kids go outside, let them indulge in free play, explore. We're destroying a generation with this nonsense


Agree. Although “destroying” is maybe a little strong a word. I’d say we’re more just irritating them.


To be fair, software engineering connects better to the interests of STEM-ish kids (video games, robotics, electronics) than spreadsheets ever could.


Depends on video game and the parts of spreadsheets.

For an extreme example, Eve Online is a game that makes kids do feats in spreadsheets that set them up straight for careers in accounting and supply chain management.

But less extreme: if your game exposes numbers, spreadsheets are useful to play with them. If I knew more about Excel when I was 13, I'd probably retype unit stats from StarCraft into it and do the maths that I ended up doing in my head. Spreadsheets have plotting functions, which are a fun thing to play with. Also tracking my own magazines & CDs is something I remember doing as a kid - entirely doable in Excel, though in my case, this was my first exposure to Access and RDBMSes in general.

Also worth noting that a proper spreadsheet like Excel is in itself a functional reactive programming REPL. FRP is what you do when you play with formulas.


Having been a STEMish kid that only got into spreadsheets later than programming because my families first computers all came with BASIC but it wasn't until the third that I also had Visicalc, I'm not sure that spreadsheets really have that much less appeal than programming, presented in the right context. Even moreso with modern spreadsheets, where the barrier between spreadsheets and accessible programming tools is low, so using programming with spreadsheets is doable.


Really? My earliest memories of Excel are from third grade and long before I started programming. Calculations for electronics and min-maxing video games are perfect applications of spreadsheets.

Spreadsheets are a great visual way of programming up to a certain point.


"video games, robotics, electronics" is a rather tech-sided perspective of "STEM".

Spreadsheets are great for maths, planning projects, tracking experiments/collecting data, ... which I'd also all attribute to things "STEM-ish kids" might do.


We do it with maths and languages. Why not programming? It is just another tool exactly like math and language.


Do many people grow up with a love of math due to this common practice, though? I would have thought the opposite.


That's more of a problem with the school system, which force-feeds maths (and other subjects, most of them hated just as much) into kids at a pre-set pace, with no regard for quality or making it interesting for the children. Which is why I'm also worried that including coding in the basic school curriculum is only going to make people grow to hate it.


That's a problem with schooling not subjects. Industrial revolution school systems don't fit the 21st century


As a counterpoint, I started programming on my own at 7 with no guidance. Mainly because my IBM PC booted into a BASIC window if you didn't put the DOS disk in. I asked my mom to get my some magazines from the library so I could copy the games in them.

So it's not totally odd for a 7 year old (or I was odd, which is quite possible).


>If he has showed you he's interested in programming then go ahead,

>As a counterpoint, I started programming on my own at 7 with no guidance.

To nitpick, that's not really a counterpoint. Parent comment already allowed for the possibility that OP's 7yr old is independently interested in programming. If a child develops that interest of their own volition, with no pressure or leading from the parents, then by all means support and cultivate it. It's only a problem when the parents try to force the child in that direction before the child has developed their own interest first.


The 7 yo's interest here were the games though, not so much the programming, right?

PC games have been the gateway drug for a huge number of programmers.

I think it works in at least a few ways:

1. You discover the amazing power and value of computers, they're not just boring work devices.

2. You learn that other people made the games by writing code, and that anyone can do it if they want to.

3. You end up making your own games and/or get bored of games and want to see what else the computer can do that is also intersting.


> want to see what else the computer can do that is also intersting (sic).

God, so much this!


I also started about that age. At least in the 70’s I think it was a normal age to expose kids to computers if the family was so inclined, and back then Programming was the only thing you could do with such a gadget so that’s what we did.

Ok, I was also competing with my brother who was 10, but still: didn’t feel unusual at all.


Yeah. I did the same thing. I started hacking on the TRS-80 when I was 6 and IBM PC BASIC a couple of years later. Mainly because it was “just there” when you turned the computer on.

When my kid was 6 he had no attention span or desire to learn so I didn’t push it. Now he’s 9 and is asking questions.

I found that the best way to engage him is the old DOS game ZZT. It has a simple but complete OO language. And since you’re programming sprites, the notion of what an object is makes sense.

I taught myself OO with ZZT and I’m hopeful that it’ll click with him too.

Plus, it runs on the beat up laptop I let him use.


Same for me... 2nd grade, a colleague of my dad saw I liked playing on the computer and gave me some old BASIC programming books. I distinctly remember reading about PRINT and running to my mom and dad to tell them I could make the computer output something.

This was in 1991 or so, and the books were from 1978..... I had no idea even where to TYPE the stuff I was learning into. My dad’s friend came over and gave me Qbasic. 30 years later, I still love to code.


> I started programming on my own at 7... Mainly because my IBM PC booted into a BASIC window if

Same here!

Getting started in programming seems so much more daunting these days.


I started coding when I was 12, which itself was strange. I attended a top 10 engineering program and around half of the cs students came in with 0 programming experience. There's no rush. Let kids be kids, if they want to code great, just don't force it. And don't be upset when they burn out after 1.5 hours of extra work a day.


I started programming when I was 19, because that's when I got a computer (more projection) but in any case hard to not project onto your own kids. I think.


That's not a counterpoint, that's just reinforcing their point. It's a good idea to open up a child to as many early experiences as possible, but don't project your interests on them. They'll find out what they like on their own.


They like fortnite!

My wife wishes my son wasn't so into gaming. I'm like, just push him to do gaming more, force him to game, then he will get into watercoloring.


Can you expand some on copying games from magazines?


During the previous century of human civilization, computer games were primitive enough that their entire codebase would fit into a few pages of a magazine. You could play the game by manually retyping the codebase into a text editor.


This is how I learnt loads of great magazines in the 80's in the UK with code in, you spent hours typing it in. It didn't work and you fixed it (that's how I learnt to debug!). The next week the corrections were usually published, good times.


Exactly the same for me, I reckon a lot of 80s kids in the UK who had the right amount of attention span to do it were the same. I remember trying to input the massive list of hex for Tim Follin's 3 channel sound routine that I somehow managed to mistype a part of AND mistype the checksum so that it validated! Cue instant crash every time and disassembling was beyond me at that point.

In the 90s I got an Amiga and discovered the demoscene (basically showing off as mentioned in another comment).

Fast forward another decade and bored at my parents after finishing Uni I dragged my Speccy out of storage and managed to get the Tim Follin music routine running! And found an assembler and did some Z80 assembler demo effects for the lulz.

As you said: good times.


This was later, but I learned a lot from Game Developer magazine. The entire archive is available for free.

https://www.gdcvault.com/gdmag


I am not a parent but I am a product of parents. I have friends that were pushed to learn a musical instrument. They hated being pushed as a kid but as an adult they are so happy to have been pushed. My father was a musician but his POV was unless I showed an interest he didn't push. I'm jealous of those who got pushed.

Similarly I have American friends that speak a 2nd language because their parents forced them to go to language school on the weekends. As kids they hated not being able to go play on Saturdays like their friends but as adults the love speaking the 2nd language. Conversely I have a friend who's parents sent him to language school but around 11 or 12yrs old he complained enough they let him stop. He still regrets it to this day.

I have no clue where the balance is but I don't believe it's 100% only do it if the kids want to side of the meter.


Another data point, one of my friend plays guitar, was part of a few bands. He was pushed by his parents to learn an instrument. He has complained multiple times about what a waste guitar playing been. He has spent his twenties chasing dream of making it as musician.

Now he has finally given up on his rock star dreams and working in his career but he is far behind his peers. His family struggles financially right now. He wishes that he was never into music and was focused on more productive stuff. He thinks his parents wanted him to play an instrument because they wanted him to impress their friends.

So the lesson is children will find any excuse to complain about their parents.


1.5 hours a day seems like an immense amount of time for that age, but if the kid is pushing for it, good for them both.


Kids have a different relationship with time. As a kid who was intrinsically interested in programming, 1.5 hours was a joke and a non-starter. I didn't really feel comfortable doing any coding until I could secure 2-3 hours of time for it, and I would easily spend 8+ hours on the rare days when my parents were otherwise engaged and didn't call me away to do other things.


At age seven? Again, if the kid is up for it then great, but I think most kids that age have a hard time committing that amount of time to any single activity.


It's not commitment if it's voluntary play.


My 7 years olds will spend 1.5 hours minimum playing roblox and minecraft. So... I think designing and building a game with them is a great idea!


Fair point. I guess I wasn't much older than seven when I began my Nintendo addiction.


Meh. My kid will leave the house able to program at the pro level. If they resentment me and open a bar more power to them. If the bar fails and they need to program to make ends meet - great. If I was a plumber, my kids would leave my house a certified plumber. If they want to be a lawyer instead - more power to them. Either way my kids leave with a skill.


What ever you do, give your kid a skill. Let them hate you for it.


Huh. I was going to object but I think you're right. The problems I know with parents forcing kids to do X when they wanted to do Y came from a) pushing X way too far (e.g. forcing a particular university degree), b) refusing to let the kid explore Y when they express interest for it, and c) resenting the kid for choosing Y over X.

So as long as one isn't forcing a skill exclusively, and isn't resentful when the skill doesn't stick, I'd say this is a wise approach.


The irony of this statement is that only someone with strong memories of his or her parents projecting their interests and him or her and later resenting the effects thereof would project a fear like this on total strangers on the internet.


Well OP is an adult and not my child.


Ah, interesting misread (this is why I love forums like this). What I was saying was you seem to be reflecting on your childhood and the resentments thereof (a somewhat universal exercise). But your reply was to OP (an adult who thinks he or she can get their kid hooked on programming). However, your reply was a projection of your own resentment of your childhood. Therein lies the irony.


He says his kid asked for programming books. Doesn't seem like it's being forced to me. Could it be that maybe, just maybe, both father and son enjoy programming?


You may be right, but I wanted to share an anecdote anyway.

When I was 8 years old, my dad offered to buy me a go-kart. I think he was concerned I spent too much time indoors, and wanted surprise me with an exciting idea. I knew that my dad didn't have a lot of money, and I also knew he'd be angry if he bought the go-kart and I never used it, so I lied and said I didn't want one.

My point is that there's often more going on inside children's brains than we realize, even at a young age. The kid could be asking for that present because he thinks it will make his father happy, for example. Just something to think about.


If they as teenagers resent you for teaching them programming then the problem is not that you have taught them too much, the problem is that you haven't taught them the harsh reality of human life. We programmers live especially privileged lives and it's important to not let your kids fall into the misapprehension that the privilege we, and by extension they, enjoy is somehow normal or expected.


I honestly believe that programming should be considered a vital skill on par with reading and writing. I'm not saying everybody needs to be able to solve LeetCode or build production ready apps, but anybody who works with a computer could benefit from being able to do a little scripting. Programming is a skill that can be a foundation for thousands of different hobbies.

Why do most adults know how to read and do basic math? Because we consider these to the important enough to teach them to children whether they are interested or not. Obviously the thing that differentiates good teachers from bad is the ability to make learning interesting. So in the case of reading, we have books specially written for children of all ages.

Programming is a much younger subject than reading, and it's changed a lot in the last few decades. I am happy to provide my kids with the tools I had available, but honestly I never got good enough at BASIC to build anything useful and LOGO was fun but again, useless. Scratch and other modern kid-focused languages are much better for the job.


Sure, but are 7 year olds ready? As this thread has shown some clearly are, but in my experience he vast majority are not. Why not wait until middle school instead of pushing them toward something they aren't ready for. It would be like teaching an 11 year old calculus.


Are they ready for what? I had no problem instructing a turtle around to draw a line on a screen with Logo or building a number guessing game. Nobody is talking about teaching 7 year olds Haskell.

To go with your calculus example, we don't teach 11 year olds calculus, but we do teach them things that they will need to know later in order to do calculus. We expect them to practice those skills again and again until they are easy.

You expose your kids to things, and hope they'll like some of them. That's just how it works. You just have to hope that they end up liking some of those things you've exposed them to, or at least gaining enough from them that was worthwhile. I know I got dropped off at soccer class plenty of times, even though I fucking hate soccer


I’m already projecting my own interests opinion on my child by virtue of what I choose to give him for his birthday, or allow him to do in general though.

I don’t think this is something you can (or should, it’s basically the definition of parenting) avoid as a parent.


And beyond environment, it's likely (but not certain) that your child's genetics predispose them to enjoy programming, if you do.

From John Carmack Twitter's feed, it sounds like his kid is well on his way to being a great programmer, which should surprise no one.


While I agree, it is equally important to get them a diverse set of experiences.

Some people grow up never knowing they have some inclinations and or talents.

My childhood had a ton of this stuff. I saw and did a lot! And peers who did not have that diversity sometimes found out later.

While it is good to eventually know, earlier is often, but not always better.

What I did was a balance. And given my son is in meth hell, am doing again with my granddaughter.

That balance was:

Take them through things I hope they have an interest in. I had some familiarity and real skill in many of these. I brought in other people where I felt I was not the right person.

Take them through some rando things! And frankly, I lived vicariously in this way. Very highly recommended. They may benefit and so may you! Sports was one area where I sucked as a kid, but was able to lean and excel with them as an adult. Neat! Major bonding and memories happen this way. It is kind of terrible sometimes too. (Hold that thought)

And finally, take them through things they are interested in, ask for.

Now, the terrible experiences?

All good, and here is why:

Regardless of how we want to shape our kids, they are their own person. Some are strong in all this. I was as a kid, and after major conflict with parents, I was very lucky to have others in my life who understood how people work.

Self discovery happens when we have experiences. How we respond, what piques our interest, latent talents, skills, understanding all present themselves during experiences.

Nobody knows who they are, until they have opportunity to respond and interact. The more diverse the body of opportunity is, the better of a look we have at who we are.

This all moved me as a young person, and as a parent too:

I see our job as making sure the basics get done. Competent, well rounded, civic minded, people. When the basics are there, one has all the tools needed to learn how to learn, get along with others, follow instructions and all that basic, important stuff.

And our job is to seek those diverse experiences, observe, discuss all that with kids and tease out the good stuff! Most importantly, nobody knows what that stuff actually is! Or maybe we do, to a degree, by inference or various signs. Fine. But I assure you it is nowhere near inclusive enough.

Some molding and shaping can and should happen, but some of the canvas gets filled in and we can either weave that into the potential person we are raising, or bodge over it, hoping it all works out.

Where they are aware, crave things, themselves looking to contribute to maximizing who they are, parents may see themselves shut out, less relevant when their expectations and efforts do not align well with who their kids are.

And in some ways, the die is cast. In other ways it takes shape, and we can plant seeds, and have some influence.

My 0.2 having raised very different kids.

Good luck. At a minimum, give a shit, respect who they are, try hard to get them through to quality adults and it is hard to go wrong. Just know, despite your efforts, they may be very different people than you may expect or hope for.

Celebrate that. People are amazing. Try to amplify the good.


I tried to read the K&R C book when I was 9. It went over my head hard. I tried again at 13 and something started to stick.

The brain evolves really quickly at that age, at 7 you're still trying to learn not to eat that dog poop you found in your garden.


I cant get my kids to tidy their rooms so no chance teaching them to code


Learning to code is way easier than learning to tidy one's room. Many people struggle with the latter their whole life.


The best thing we can do for our children right now is keep them AWAY FROM SCREENS!


Keep in mind that there is a colossal difference between a screen that boots into a basic interpreter (BBC/Atari/Amiga style) and a screen that boots into iOS/android/youtube/bubblepop-whatever-the-current-attention-grabby-brain-dead-game-of-the-moment-is

If my kid is interested in the former I would not stop them, because it's an effective tool to learn about thinking, just like other toys... but the later I'm essentially treating as soft drugs, they ain't using that shit until they are an adult.


Is TV a drug too then?

Just like alcohol, I think there’s nothing unacceptably wrong with it in moderation.


Yes, absolutely.

“Moderation” is a cope used by addicts.


“Complete abstinence is easier than perfect moderation.”


Are we back in 1990?

Internet and computers are a critical part of everyday's life and will probably grow even more in the future. Childrens should definitely have screens and learn how to use it safely and smartly.

When my parents limited my video-game and television time during my teenagerhood (because it "makes you idiot/violent/whatever") it made my life worse, not better. Not being able to talk about the last video-game, movie or event, I had no idea what people were talking about most of the time.


I spent a lot of time thinking about this.

In the end, I would rather be able to influence what my kids are using the screens for than introduce them to screens at a point in their life where I will have no say about what they are doing.


My daughter (who just turned 4) seemed like she might like programming, so I started out having her "program" a stuffed walrus, by telling it whether to go forward, backward, left, or right to get to a piece of food. Her natural inclination was to point to where it should go, so I first taught her that the walrus doesn't understand pointing or the word "here", just the directions.

Then we started "programming each other" by telling each other where to go, and I introduced doing multiple steps at once (like "step forward 5 times").

My goal wasn't literally to teach her to program, but just to introduce that way of thinking, which is pretty different from how we normally think in day-to-day life.

She was excited about it, so I got her the Osmo programming kit for iPad. You program a little monster walking around, using physical, scratch-style code blocks. She's been excited about programming the monster every day, and is able to (sometimes) do some short programs of a couple blocks.

If she learns a bit more, my plan is to show her how to program a simple lego robot with scratch, like one that spins a flag when it sees something pink. I love that idea because with 2 lines of code you can make something really happen in the world, plus she'll be able to come up with new ideas for the robot on her own, and learn about the constraints, sensors, and eventually more basic programming logic.


Somewhat related: At one point I introduced my kids to what I called the number-machine-game. It goes like this:

I ask my kids to say a number, and then I do something to that number and tell them the answer.

Their job is to figure out the calculation I do.

Examples:

- I add a number: they say 3, I say 8. They say 11, I say 16

- I multiply a number.

- I multiply by something and add something else.

- etc

If you want to drive them nuts you can count the letters of the number, i.e. four = f o u r = 4, five = f i v e = also 4, ten = t e n = 3 etc :-D

(I might have gotten the idea from HN, but the above is how I taught it.)


I remember one day in primary school a teacher had us play a game where we had to propose things to take on vacation. People would call out a suggestion, and the teacher would say yes or no.

The aim of the game was to figure out the rule. She said no to 'novel' and 'money', but yes to 'book' and 'currency'.


Spoiler: Is it the number of letters? That is, only an even-length string is permitted?


I've used the same before, I believe also inspired by a similar HN comment. I was delighted to find that it's actually been developed into a complete game as well[1]

However to add my 2c to the conversation how I introduced programming to my cousins and niblings was through baking! A recipe is just a program for a delicious outcome which helps a bit with motivation while also learning a related skill.

[1] https://www.cinqmarsmedia.com/devilscalculator/


For my daughter (she's now 7), I followed this sequence:

- Exact instructions challenge (from YouTube)

- LightBot app on Android

- Scratch with Harvey Mudd College's course on edX

Snap! has some nice features but the community aspects of Scratch are so much better that she's happy building games there.

Same as you, our goal was not to "learn programming", but just to have fun making things move with your ideas. Just creating rather than passively consuming something.

Because this "coding for kids" mania seems to have gone overboard, I collected links to all the resources I used in the form of a "syllabus" here: https://learnawesome.org/items/1c96e03a-ffff-4579-b69a-0387b...


Is this the YouTube video you mention above? https://www.youtube.com/watch?v=cDA3_5982h8


Yes. This is basically teaching how to give instructions to a robot that does exactly what you tell it to - nothing more and nothing less! Recipes are nothing but simple algorithms including branches and loops, may be even procedures.


I bought this for my 4yo: https://www.youtube.com/watch?v=XlnP-8SczF0

Sorry the vid is in Polish but I think you can get the idea.

It is a talking robot that does "missions" where you have to program it to go forward, backward or turn, take objects from the map, etc.


You reminded me of a robot I had as a kid in the early eighties. It had some rubber keys on the top (similar texture to the rubber buttons on a Sinclair Spectrum, but smaller). You could program it with a sequence of moves (IIRC forward, turn right, turn left, pause).

The robot you linked looks great, with the addition of the missions. But I'm not sure whether it's available in the US, so I ordered this one instead: https://www.amazon.com/Fisher-Price-Code-n-Learn-Kinderbot/d...


If you want the non-digital game for this: RoboRally https://boardgamegeek.com/boardgame/18/roborally

It's actually pretty fun, even for grown-up coders ;)


Love the idea! I'll try that with my 4yo daughter this week, I think she'd love to tell me what to do :P


The Osmo is cool, it's playful and feedback is great.


I taught in a coderdojo for a while.

As a mentor; unless the kid wants to go, please don't come :)

So many uninterested kids from helicopter parents. Kids as young as 6 just absolutely clueless and learning nothing.

If you want your kid to program, just buy them an actual computer system with files and a terminal, not some ipad shit, and let them at it. If they code they code. If they don't, you can try teaching them when they're like 13-14 and actually have a bit of brain wattage to back up what you're throwing at them.


>> As a mentor; unless the kid wants to go, please don't come :)

This so much. There is no quicker way to turn them off of it permanently whereas they might just not be ready to come to it yet.

Alternatively, wait for the kid to be hungry for a snack then have her program an Arduino controlled can opener to open a can of beans. /s


Places where I didn't expect to see bean dad spicy takes


I taught one as well. Always felt horrible because I gave most of my time to the couple of kids who were naturally jazzed about it. It felt like I could have done more to inspire the other kids who didn't seem to care, but maybe I did more good helping the ones who did.


I didn't waste my time. Of all the kids that came one actually cared. We've kept it touch and I now consider him a friend. He just started comp sci in my country's most prodigious uni, which while it was obviously his own doing - I'm a little proud of :)

Then and now, I'm glad I focused on the ones that cared. The investment in them and subsequent payoff for them is extremely valuable. With the others, it wasn't even clear if you were doing more harm than good.

I was probably more cutthroat than most because I was the only mentor who showed up week after week, so I had to have strong boundaries.


Each of my children started coding through Minecraft and Scratch, so I think that is a good path. I tend to let them pursue (or not) their own interests so I just make resources available to them.

It's worth emphasizing to your child the distinction between 'technology exposure' tutorials, and creative work as children tend to care more about making stuff and can find some tutorials a bit tedious. Luckily there are some high quality tutorials out there now, the mid-range and lower quality tutorials will just frustrate them.

Related to that, I would advise you to not let them enroll in any 'technology' classes in school as that will kill their interest since the educators will likely be underwhelming.

Also, at a certain age, if you give them too much attention for their interests they will stop pursuing it, so enjoy the next few years :)


Electronics is my hobby and I am fortunate to have decently equipped electronics lab all with a dedicated desk.

So I was pretty worried when he came asking to get him signed up for a robotics class (3h every Saturday for couple of months).

I already have some ideas how I want to introduce him to robotics but I am not going to intervene here. Just made sure he knows he can always come back and tell me he is no longer interested in the classes and we will just cut it.

As to creative work, I figured out already it is better if I do most of figuring out how to solve some problems (and let him solve just enough to not get bored with it) and he is spending time figuring out what kind of features we want in the games, for example.

We then discuss what is and what is not feasible and how things can be working and I still try to make sure he understands how the program works.

I know he understands at least some of it because he can take educated guesses at how to modify the program to change it to do what he wants.

This seems to be really fun for him so I plan for it to stay that way for some time.


Can you provide links of some of the high quality tutorials you have found?


Arduino Starter Kit is very good. CodeHS is also good but expensive for families as they tend to sell to schools.

YouTube is also a good resource for some things. We haven't found any good programming books yet although they did enjoy the 'Lauren Ipsum' book.


The most success i've had with my 8 year old is building games in Roblox and the LUA scripting that comes along with that. We also have written some MicroPython to drive a small rover. With kids, or my kids at least, you have to be able to show some tangible results quickly or else they get bored. ...kind of like dealing with your boss.

another thing that my 8 year old is really into that surprised me is networks. Explaining how networks work and how he can start a minecraft server for him and his brother to play but his school friends can't because of the "firewall" has him on the edge of his seat hah.

edit: i want to add that i don't bother with explaining programming concepts like object-oriented design or algorithms just very simple cause/effect. Then to simple if condition effect. I get excited and end up overcommunicating and then boring my kids, it's like trying to start a carbureted engine without flooding it. You have to do give them just enough info to get started and hope it catches.


Networking was what really got me to do a deep dive into technology. Circa 2002, I really really wanted to LAN Party with my neighbor across the street remotely but neither of our 802.11b routers could reach. We spent so much time reading about how to do this and we ended up building a pair of Pringles can antennas on WiFi extenders, and long ethernet cables running through our yards into our bedroom windows, which ended up working great.

Fun memories. Networks are cool.


Interesting! Networking is what really caught my attention as a young teenager. My personal epiphany moment early on was chatting on an AOL chatroom with someone in Japan when I was 10 and realizing what computers could actually do


> LUA

Not that it really matters that much, but just for future reference: Lua is a proper noun, not an acronym.


"You have to do give them just enough info to get started and hope it catches."

That's an important mantra, I think. If you cast the net wide enough, you'll find something they like, and want to follow... but it might not be programming.


I'm not close to being a father, but I can provide the experience of having learned not that long ago

At first my dad put me a bit on CodeAcademy [0] which taught me tons of basics but didn't really get me hooked.

What really got me into coding was by thinking of a way I could use it to build something related to my interests or that would be useful for me.

That seems to be what you're doing with the games by linking it to something he's interested in so that's nice.

It can really be anything though, and you should try to show him the enormous area of things he can do with coding.

In my case I wanted to do my english homework faster, so I tried building a very simplistic program that could find literary devices (metaphors, similes, alliteration) etc... in the literature texts I had to study.

Also you should make sure you don't force it and that the passion and interest comes from him, which seems to be the case with the way he asked for books about coding.

[0]: https://www.codecademy.com/


Thanks for you point of view.

I pretty much figured out not forcing anything is rule #0 for this project. I would rather be showing how we can have even more fun using programming.

The scratch game we are working on has Minecraft graphics and sounds on it and some of the rules derived from Minecraft. Simple arcade game but suddenly much more interesting because it has Minecraft element to it.

And instead of trying to force him to solve the problems I give him about 2s before I suggest the answer to the problem. I would rather want to spend time showing he can think of anything he wants and we can make it work (well... most of time).


Not a parent, but I was a child, and want to give my perspective from my memories learning my father's profession; writing.

We always had computers typewriters around the house, and I was fascinated by the look, smell, and sound of my father writing. And I just began doing it myself, probably with a small amount of guidance from him around the mechanics.

I ended up getting pretty good at prose by the time I was 9 or 10 and wrote a novella when I 14 (which was thankfully never published or distributed!). I don't write for a living but the skills stayed with me and of course have been very useful in all kinds of avenues.

I think, though, that if I had been encouraged to do 90 minute learning sessions with my father, I wouldn't have been so interested. There was a joy in finding my own path into that world, and if/when I do have children of my own this is something I will keep in mind that there's a fine line between sparking interest, and trying to force an interest.


Unpopular opinion, but I am of the mind that my kid (now 8 yo) needs to get a full experience of learning with writing/drawing/reading on paper before I "shortcut" him to doing it on a computer. Same goes for self-entertainment.


I think this is important. A lot of programming classes or teaching focuses just on the tools, but not really on the goals of what you want to use those tools to do.

My daughter is really into Minecraft and has learned that there are mods out there. So, now there is something she actually wants to be able to DO. That's a big part of what drives programming motivation for kids.


Making a mod is a really good driver for learning development. That's how I got started. It's good that the goal is so unreachable at the start. There's an awful lot to learn and you need to boostrap yourself, somehow, into doing something remotely productive.

I never finished my mod, but I spent 2 years learning C++, Photoshop, 3DS Max, Worldcraft, and all manner of other tools on the way. It was great exposure and it never felt tedious because my goal wasn't learning how to program, it was learning how to make a homing missile, or a texture for my fort. :)

I wasn't really interested, at the time, in learning how to write a simple bank that could process transactions, or a task list.


I taught my 15 year old python programming over summer. We used the material provided by this course [1]. It worked out very well for us.

We took a little detour at one point and I taught her basic skills to navigate around Linux terminal. Files, directories, editors, basic operational stuff.

Then I took another little detour and showed her ropes on git and github.

Then we got back to the python course and now I encouraged her to push everything she practices on her github account which she has been doing since.

Now that the course is over, we have started working on a project that aims to manage personal income tax. I chose that project because it could start simple and can evolve to be as complex as you want it to be. However, ultimately it is all simple arithmetic. The project is going very well so far. We are discovering new things about taxation almost every single day.

We are at a stage where learning vim would really help her so we plan to take another detour next week and start with a vim tutorial until she gets comfortable.

[1] https://help.uis.cam.ac.uk/service/support/training/download...


On the one hand, taxes are boring.

On the other hand, pretty much everyone I know wishes they had learned more about how taxes work in high school beyond the very high-level concepts of progressive taxes....


That is what I figured when choosing tax as a project. She will learn programming but also doing tax which is going to be useful to her and perhaps others who will come in her contact over time. And who knows, if the tax project takes off, it could be a revenue generating side hustle for her.


Not a parent, but sharing my experiences as a kid.

GameMaker (https://www.yoyogames.com/get) was my gateway drug to programming. It's an environment for making games that covers everything from programming the game logic, to designing game "rooms", the sprites and sounds in one package.

I was introduced to the software by my father at roughly the age of 9 to 11 and we did the introductory tutorial together. After that, I continued messing around mostly on my own.

What in hindsight turned out to be quite brilliant, was that GameMaker supports both drag-and-drop programming and scripting. I was able to start off by using drag-and-drop, but quickly realized that scripting was the way to go for more complex logic. The combined environment made it a rather smooth transition, as I only had to add the scripting part to an otherwise familiar graphical environment.

It seems like GameMaker is still around, so that can definitely be something to check out. Making games is fun and I remember having great times in the community, too.


Had very good experience using Python as first programming language for 8-9 year-olds; professionally, I don't like it, though.

And even though I prefer it over Python as a language, I had disastrous results teaching Javascript to 12-14 year-olds for light browser games. My intent was to bring kids with signs of early stage addiction to mobiles "onto the other side", by looking at games professionally and with creativity (as much as I could, anyway). Turned out fiddling with async and rAF is really a bad fit for learning basics.


BBC micro:bit V2 - Will be able to get tangible results very quickly.

Start with the simple stuff: https://microbit.org/projects/make-it-code-it/

I find games in scratch are complex and require too much programming knowledge to really get something interesting up and running. The micro:bit on the other hand can do interesting lights, sounds, etc with just the drag and drop of a few lines.


I didn't know micro:bit works with Scratch, thanks a lot!!!

I had plans to make some kind of board with STM32 that could be programmed with Scratch but maybe I will put that project off and use micro:bit instead.


No prob. I'm going through the same process as you at the moment, have been looking at all the options for a while. Micro:bit seems to be the best fit for young learners.


Path for an eight year old (who started at 5):

1) Hour of Code and Blockly, as well as some Blockly Games, age 5-7

2) Khan Academy JavaScript and processing.js at age 7.

He's pretty awesome at JavaScript now. The programming courses on Khan Academy are great. I will mention your child needs to be ready for it. At that age, a few months one way or the other is huge, as is having the mechanics of typing and mousing.

Next step from there is the book "Code: The Hidden Language of Computer Hardware and Software (Developer Best Practices) " and Nandgame, as well as Micro:bit.

I recommend against Scratch. It's a rabbithole that goes in the wrong direction. You get stuck in a local minimum, where it's really hard to move onto real programming, and within Scratch, there are a lot of local minima (move to random position).


I have explained to my daughters programming is basically a tool-belt that helps one build something they want.. like how paint brushes are simply tools to help create a painting.

For example, I was showing my 7 year old daughter the other night how she could automate her Roblox character with a simple AppleScript in order to move it every so often so that it could gain points while avoiding timeout from being idle, all while she could go and do other things around home. She smiled pretty big.

In short, IME showing how programming helps achieve an outcome has worked best. A general interest may compliment.


My daughter has been "coding" since she was three and my son since he was two. They began with the code and go robot mouse, where you push arrows in the direction and order you want the mouse to go totally ignoring the course and just trying to get the mouse to the cheese on the floor. Next I bought Cubetto, which comes with a board with pieces that give instructions and you place on the board. Mostly one kid sits on the floor and the other will "program" Cubetto to come over to the them.

Now my daughter is five and plays with Scratch Jr. She makes short clips of characters moving around, recording and timing the characters voices, allowing presents and balloons to magically appear, she's not tying in code but instead uses "graphical programming blocks". She also likes codeSpark.

My kids do not distinguish programming from play. I intend to keep up programming = play which I will later transition to a more advanced version of, "I want to make a thing, writing a program will allow me make it." than what my daughter is currently doing. Make it fun, and don't do much in the way of suggestions/feedback, just let them know you'll answer any questions and let them make mistakes.


The entire website for Cubetto is out of stock. Guess we'll have to stick with the Osmo for now...thanks for sharing your experiences.


Got my 6 year old to write a python program. He was so excited the computer did the homework for him. This is a fun way to introduce programming.

Example session:

>>>number_of_passengers_travelling=672

>>>number_of_passengers_got_down=21

>>>total_remaining=number_of_passengers_travelling-number_of_passengers_got_down

>>>print(total)

His only question was, do I have to type so much and I said yes. There is no way I am letting my kid name variables v1 and v2 :)


Homework at the age of 6? Wow, I'm glad I did not have real homework until I was 8ish


When I was seven, I was into plumbing, electronics books, and maybe Barney. When we went to libraries, I would get books on the local jurisdictions sewage system, or how to rewire your house. I was happy that my parents let me take the occasional thing apart. But they never really guided any of it.

I remember at around 12 the Comcast repairman told me "the real money is in software". I thought - software, what's that? Then I probably went to work on our garden or something.

I didn't start coding until around 16, and that was because I had old computers that I wanted to use, and didn't really know about pirating windows, so begins using Linux, running PHP webservers ETC.

Point is - figure out what they enjoy and help them enjoy it.

I couldn't even get friends that want to learn to learn, even when they are practically homeless.

It's hard for some of us to fathom, but some people just don't have the drive to do this kind of thing. You also can't force it, all you can do is give context.


I got my kid doing some minecraft python coding, but I wrote out the programs and walked him through it, and then let him change some constants. Those are the most obvious things that you can change with no experience.

I also gave him a first mental model of how it works. You have a genie, he sees you want to make a label called "height" and put a integer, 5, in it. He decrements it by 1, places a tower of the height, walks over, etc... until you have a 5,4,3,2,1 triangle.

But I don't try to push it too much. I think it's good at age 7 or 8 to be exposed slightly, but unless your kid is a prodigy it ain't gonna click for a while. We just want to marinate them gently for a bit until it hits them.

MC is good because he plays it a lot and occasionally it comes up that you want to be able to do something quickly instead of placing hundreds of blocks. Or you want to copy something you built. The MC Python code allows you to write a script that does this.


When I have taught kids programming I feel I have been most successful by when I could give a glimpse into the high level workings.

Most of the time I don't have many hours so what I try is to inspire by creating something in a few lines and show what it is all about: input, output, calculations, loops and branching and how we can have fun with it.

I've used the tools at hand:

20 years ago I used VBA (Visual Basic for Applications) and made a Caesar Cipher, ran it in a debugger.

When I taught teenagers in school I mostly used autohotkey.

Later I've used Go or Java, even with JSF(!) when that was what I was using at the time.

Mostly I try to get as fast as possible to the point were something works, then set a breakpoint and single step through it.

One favourite of mine is the good old guessing game that hasn't changed that much since BASIC on C64:

  > Write a number from 1 to 100:
  64
  > My number is lower, Try again.
  > Write a number from 1 to 100:
  37
  > My number is higher, Try again.
  > Write a number from 1 to 100:
  ...
  etc etc
  ...
  You gueesed it!
This introduces output, input, loops and if-statements, and you can let the kids have fun with the debugger, looking at the secret number in memory to guess it correctly at first try etc. It can also be done easily in most mainstream languages and frameworks that you have a working environment for, from VBA through WinForms through Java or Python console apps to serverside or frontend web applications.

Also FWIW: Kids around here (Norway) often have some programming at school it seems - even before grade 7. It is mostly scratch variants I think, but I'm also happy to see that at least some teachers have shown them how to open the console in the browser (Inspect Element) and have fun by "hacking" the html and css.


Son got through Scratch book and then got bored. Has not been interested at all in programming after that.

Daughter did some scratch and some web programming and then got bored.

Lego Mindstorms - son built through the robots that were included and then got bored.

Hour of code (both) - did some basic exercises and then got bored.

Both love to build stuff in Minecraft and enjoy making quite elaborate machines there (elaborate in the context of Minecraft).

Both are doing fairly well in school. Programming just does not seem to be intrinsically interesting to them. And that's just fine.

Basic language skills and math is far more important for professionals when they get to workforce rather than low level tinkering in the general context. If they don't show inbuilt desire to program I don't see any reason why I should push them there. I started programming only after turning 20 and have a pretty good career at it. If you love programming it's never too late to start :)


My girl first got interested when she was 5, when she was already a pretty solid MC Survival player, so I got her into Scratch to mod her MC creative world and automate some agents. From there she was more interested in making stand-alone little animations/games in Scratch itself, and now (almost 2 years later) is mostly obsessed with making objects in Blender and has started doing physical electronics using various kits.

I basically let her follow her own path, I show her how I do something then if she’s keen to try it I stick her in front of the keyboard and she does it herself with me verbally guiding (but never reaching over to take control, something I personally think is important).

She loves hanging out in my workshop and watching me prototype electronics or work on my own game dev or tinker on other hardware/software projects, and she knows at any time she can have a go (and she does, regularly).


Ah, how I wish I was game dev instead of working mostly on Java backends for large financial institutions (and actually spending most of the time in meetings).

I am pretty interested in the modding Minecraft with Scratch part. I have found some abandoned projects. Can you point me to what you have used that worked for you?

Happy it worked for your girl and little scared she started at 5. I have two boys, one is 7 and the other is 4. The younger one is inseparable from the older so I wonder how it is going to be different for him.

I have been thinking about who gets to actually program. For now I am happy that mixed routine where we regularly switch works for him (he seems to be happy and engaged) and so I think I will continue this way for some time before I experiment with it.

I see that the best results we got were when he actually himself figured some stuff and made it by himself. His first machine -- ugly chest to destroy unnecessary items with a noisy clock that runs constantly whether there are items or not -- is still occupying middle of main room of our hobbit hole but I don't think I will touch it, because he was so happy when he got it to work.


For what it’s worth, I’m not actually a game dev it’s just something I’ve been playing with in the last few years as a side hobby. My primary career is infosec/red team, something she’s not playing with (yet) but she’s already picked up a few cheeky habits.

My general rule with all this stuff is just to expose them to as many things as possible and if they show ANY hint of interest in something then give them support and unlimited resources towards exploring that topic. Even if it means I’m staying up all night learning some new sport/software/etc so I can give them a solid go at it.

This is what my dad did with me and I’ve grown to appreciate how instrumental that was in me finding my passions early and building both a career I love + passionate hobbies from it.


I have 2 kids 14 and 12. My 14 year old has started solving medium level leetcode problems (which I am happy about).

Talk to them often about code, technology etc.One thing that helped IMHO spending a lot of time in solving math problems (AOPS) , which made think through hard problems and had to grind through solutions which took time. My kids love Big Bang Theory and anything that is geeky. I talk to them about the latest things that are happening in tech like the recent hack and the malware.

I recently read this book https://www.amazon.com/But-How-Know-Principles-Computers-ebo... and sat and drew with my kids and,or , xor and nand gates.Building Mindcraft MOD can be another fun project.

Be patient and it helps a lot IMO.

Good luck :)


I have got my kids hooked on vim https://vim-adventures.com/


I used the gratis demo of that site to introduce a 7 year old to vi, and hoped I just might have been an accomplice to a world record when he successfully completed vimtutor afterwards. He now uses the skills to do his schoolwork in HedgeDoc (last week I taught him to make macros, which he uses for markdown headings and checklists).


https://appsbykids.org/ is a hastily thrown together site showing some of my work with kids.

I've been running volunteer computer clubs at schools my daughters attend, pre-covid anyway. I've also run a summer immersion program for basic software design principles using the Scratch language for Girls Who Code. We've played with Adafruit Circuit Playground dev boards, written a "choose your own adventure" engine with Python, and added pixel graphics to some simple Javascript games, where the kids drew animation frames in a barely functional editor I wrote.

The first thing I'd call out is that 7 is really young. 5th grade is the point where kids can start to "get it" beyond basic maze problem solving things (e.g., code.org's Minecraft puzzle - hop Alex around the creeper and into the house). Since you're a dev, and he's enthused about it already, he can probably flex those muscles a little early.

Beyond age, the complexity of what you're doing matters a lot. Kids want to see something get on the screen right away, and they want to make a code change that changes what it does. Building a program from scratch is a chore, and something as simple to us as nested if statements will throw them for a loop.

The most success I had was building a simple program without them, and letting them experiment with changing values. That may sound like cheating, but it gets the gears turning, and before too long they're able to follow along with making a broader logic change, and soon enough even following along with you adding a new feature.

I was in a classroom setting with a bunch of kids, and they tended to like being in small groups and comparing notes, or play each others games.

Sideways thinking is important. For example, the main draw of Circuit Playground is making the LEDs do things, but they also have an accelerometer. A good exercise was figuring out how to read the tilt position, and figure out which light was lowest, and light up just that one. Instant fidget spinner. Building on that, I threw them for a loop by using the same principle where the tilt was input to a computer program. Suddenly the thing they were programming before to flash lights was now a game controller.

Keep it fun, let him screw around too long on things he builds instead of learning software engineering at an "acceptable" rate. He can learn fast, but complexity will probably be a struggle, so growing slowly is just fine. Encourage him to explore concepts from different angles.

Hope that helps.


Yes, tinkering with existing program is really fun. I did this with his first ever project (which was a robot programmed in block language that is even simpler that Scratch) and made entire program for him, with him sitting by me and discussing how I am adding new steps to the program and what they are changing, each time running the program on the robot with another step implemented. Then he got his turn to have fun with the program.

We stopped with that robot after couple of sessions when he was able to program some functionality up to my specification. For example, there was no sensor that would say the arm was closed, so to preserve the worm drive I asked him to change all places in program where the arm is getting opened to instead close it first and then open for an exact amount of time so that it does not hit the limit, which he was able to do on the first try, which gave me confidence he more or less understands what the idea is.

Now, the games we do are getting a little bit complex (a lot of messages flying around), so what I do is basically write most of the code and shape the structure of the program and figure how do to some stuff so he doesn't get lost managing complexity. I make sure he understands what the things are doing and he modifies whatever he wants (and then we discuss what happened or how he can get what he wants).

I am now unsure whether I want to stick to some more complex projects or whether it is better to have more small but wide variety ones. For now what I plan to do is to throw a bunch of ideas and see which ones he is most excited about.


I recently released this C programming book that is good for kids called A Day in Code: https://www.amazon.com/dp/B08LG7DW4C

It's a picture book that tells a story with C programs that represent real-life situations. It teaches C programming with the code examples that make up the story. It has full-page illustrations like a normal picture book!

I'm writing a Python version now: https://www.kickstarter.com/projects/914595512/a-day-in-code...

I hope these are fun ways for kids to get started in programming. :)


I have a 7 year old and a 10 year old and have done lots and lots of volunteering teaching kids to code (via the Raspberry Pi Foundation's Code Club and CoderDojo schemes). My boys are very into building things with redstone in Minecraft and I've done quite a bit of programming with them.

What I would say is that 7 is still very young - the important thing at this age is that they are enjoying it, which it sounds like your son is and with you as a mentor, I don't think you can go too far wrong. If you weren't a programmer, I might be pointing you in various directions but don't think I need to.

I'm mostly thinking about resources that might be helpful. It's worth being aware that on the Raspberry Pi there is a Python API which might be a good way to introduce Python for a Minecraft fan. There are some articles about in old issues of Hello World magazine (PDFs available for free here: https://helloworld.raspberrypi.org/issues). You might find the magazine interesting generally. There's also a book Adventures in Minecraft by Martin O'Hanlan and David Whale. Typing ability is one of the big issues with python at that age though I find (that and the ability to make syntax errors which you don't get in Scratch!).

In terms of Scratch, there's the Code Club curriculum https://projects.raspberrypi.org/en/codeclub which isn't perfect, but is fairly well road-tested.

The BBC Microbit is also fun and not too expensive if you are looking for something a bit different and has a visual programming interface. I prefer that to lots of the robot kits etc. out there because it's so flexible and you can extend it into electronics if you want to. Having said that Lego Boost went done extremely well with our boys and is well thought through, but not cheap.

But the important thing at this age is that they enjoy it, so I think there's an art in terms of following what interests them and encouraging them with that.


When I was a kid I was totally self directed with a bunch of LEGO mindstorms motors and sensors. I would build little carnival games that had all kinds of conditional branches, plus rovers and walking robots with complicated gear trains. I think playing with gears set my mind up for building programs more than dragging the block based if statements on the screen.

I can also recommend the classic book "Mindstorms: Children, Computers, and Powerful Ideas" by Seymour Papert, it talks about the LOGO turtle and has some really powerful ideas about empathy in general, with a special case for thinking from the perspective of a machine.


My kids aren't quite old enough, but I recently enjoyed the following stories:

"Haaarg, world!" (writing a vampire-themed number-guessing game with a six-year-old): http://davidbau.com/archives/2005/07/29/haaarg_world.html

Madlibs with a 13-Year-Old: https://nedbatchelder.com/text/madlibs.html


My kid was playing Lightbot at 6yo. Most programming toys I've seen have similar mechanics. I put together a cardboard version myself to help him practice some concepts (e.g. procedures), with the difference that it uses actual directions (up, down, left, right) instead of the usual forward, turn left, turn right commands, which in my observation was more intuitive.

He didn't seem to take much more interest in programming after mastering that, but he did eventually take interest in chess. The reason is that we borrowed a bunch of chess books from the library and he would go read them whenever he was bored, and he would play with his grandpa to try to apply the tricks he was reading about. Point being that having self-study and tight feedback loops seem to help in acquiring proficiency in a skill.

Personally, after the most beginner level, I'd start to move away from using game development as a motivator for learning programming simply because after some threshold, the math requirements ramp up substantially (e.g. implementing jumping in a side-scroller requires middle school level math at a very bare minimum). In my own journey, I've found that web development (using only the most vanilla subset of technologies) was a relatively gentle way to get into programming. The syntax is relatively forgiving, the building blocks are high level enough to allow easy creation of interesting interactive things, the built-in tooling in browsers nowadays are amazing and the tight feedback loop is there.

YMMV


I am teaching my thirteen-year-old nephew programming. We use Python to nail the basics of variables, conditions, loops, branching, functions, classes, etc. And Unity and C# to make games and learn some physics, vector math and matrices.

The length of our sessions is two hours. The beginning of a session always starts with a recap of the previous. Asking some questions to make sure he has the correct understanding.

He always types in everything. I never touch the keyboard/mouse.


One of my kids learned Scratch at home. He tried some local classes, hoping they would teach more advanced material, but they were introductory and he spent his time tutoring the other kids (not a bad lesson in itself!)

We briefly tried GameMaker Studio 2, however we had no prior experience and finding out what functions were needed or called made it a high friction experience.

He has been playing Minecraft since a young age, and creates elaborate redstone mechanisms. I like how this mixes creativity, spatial planning, and boolean logic, and doesn't require learning a new UI or language.

Most recently we tried creating a Minecraft mod in Java using Forge. I cannot state strongly enough: do not do this. The Forge architecture is fundamentally broken, whereby it adds some functionality but otherwise forces you to code directly against decompiled Java classes.

Most tutorials only work with a specific version of Forge/Minecraft. There are no release notes or documentation, because there is no API. (To be fair, the Forge aspect is documented, though I only found it useful once I already knew what it was trying to explain.)

So what started out as an exciting father-son project became something I dreaded.


I learned to program in middle school and I loved it, you couldn't tear me away from the school Commodore Pet.

My kid we played with scratch for a bit and she had fun making some games but it fizzled out after a few weeks. No real love. I gave up. Maybe I'll try again in a few years.

There are coding classes and they're all very popular but to me it seems pushy parents signing up their children, none of them seem to enjoy it.


> We plan to do some more complicated robots and also make our own fun mods for Minecraft (as soon as I figure out how to hook up Scratch to recent version of it).

You can't quite hook up Scratch itself to Minecraft (not that I know of, at least), but if you want to use Minecraft as a backbone for this kind of education, you might be interested in Pneumaticcraft, which includes little programmable drones that are programmed using a simple mockup of scratch (https://www.curseforge.com/minecraft/mc-mods/pneumaticcraft-...) or ComputerCraft, which tries to emulate shell scripting and lua in particular (https://www.curseforge.com/minecraft/mc-mods/cc-tweaked). In the future, if you wanted to teach him Java, you could have him develop mods himself through the Spigot, Forge, or Fabric modding APIs.


There is a mod that allows running Scratch on Minecraft server but it was not ported beyond 1.8 or something. I plan to see how it works and maybe port it or do something like that for recent Minecraft version.

I like the idea of Pneumaticcraft. He already knows absolutely everything about Minecraft (can tell the version the map was generated in by looking at it). One Christmas wish was for Santa to help Mojang release 1.17 faster... So I am pretty confident he would like to be able to have some new game mechanics to play with.


I’m not a parent, but I have some good memories of my father teaching me how to program the game «Snake» in basic as a kid (10 years old maybe). We started talking about what we want to build, and he showed me how to draw things to the screen. We then iterated and improved the game more and more (within a couple of hours). I had no prior experience with coding and very much enjoyed seeing how things progressed and how you can make the computer react to keyboard presses. While I was not able to write the game myself (or properly understand how to write simple applications) it helped me to get an idea how applications are made and a basic way of thinking. Also, for me this was really motivating and inspiring. In retrospect, I like the project-based approach—building something from start to finish in a couple of hours. If something sticks there is still enough time to go into detail and learn the basics, but learning the basics is so much easier if the motivation is high, which for me it was seeing that one can build a game oneself in a couple of hours.


Two months ago I bought a starter kit with some electronics: breadboards, LEDs, cables, transistors, resistors, etc...

My 8/9yo daughter really got hooked, and since then I've bought all kinds of logic gates, switches, timers, flipflops etc...

I use the videos from Ben Eater as inspiration but I haven't told my daughter that you can build a programmable CPU using this stuff. I don't want to spoil the surprise.

After learning binary numbers, I asked her if she could build a circuit to add two digits. She designed her own version of a full adder, chained 4 of them together, and now has her own 4-bit calculator.

The cool thing is that she will explain it in detail to anybody who wants to listen. But she is also quickly discovering that modt people don't know binary...

What I like most about this is that she is now hacking independently, and having here own ideas. At some point I might teach her some formulas, but she hasn't shown interest there. And the occasional LED burning up isn't going to make me bankrupt (-;

Tl;dr: breadboard electronics is cool, worked with my 9yo daughter


If you'd like to reinforce some of the same mental muscles used during programming, you might consider certain tabletop games as a good way to do so during play. There is a game out there called Robo Rally which is excellent for the purpose, where you "program" your robot via a series of cards. It's not just for kids, being enjoyable by adults as well.


I remember when my addiction to computers started and I got there because of two things:

1. where I live they were very expensive at the time and so very rare

2. Primarily I wanted to play games on them (things like Heroes II on Intel 386)

At some point I had enough of games and as a side effect I had to reinstall my system so many times (thanks to win-cih and other viruses) that I started thinking about building my own OS. Childish dreams :) but it got me to C programming and that's how it started for me.

So now, decades later, I have my own children and I think how on Earth am I going to get them attracted to technology when it's sooo mainstream that it's not mysterious anymore. It does not feel like adventure to my children, it's their environment.

So instead of thinking much I started with things I remember from my childhood - simple instruction-less lego bricks, or more modern geomag, whatever else that comes without ikea-type instruction so my children can just build stuff. I'm yet to think the step-two.


I'm in exactly the same boat, and doing very similar to you. My son is 11 and daughter 8. Both do Code.org and/or Scratch fairly regularly. Son wants to get into modding Minecraft, but honestly I'm a little annoyed with how shady and complicated that process is. Or maybe I'm just too old to "get it". I don't discourage him from it, but haven't been able to teach him that as much.

Son also recently bought with his own money a Arduino starter kid off amazon. You can get an arduino, LCD, servo, LEDs, etc. for 30-40$. We've taken it a step at a time and go through various concepts, etc. For example, I talked to him about 'rubber duck debugging' (ie explain the program to a rubber duck or plus toy line by line), semicolons, code blocks, etc. This has been great for learning real C and tinkering with electronics.

I plan to start them on basic web stuff on glitch.me sometime. That should let them build simple websites etc. for free.


Have you seen the book "Adventures in Minecraft [1]? Modding Minecraft with Python. I'm working through it with my 10 year old at the moment. Pretty good so far. Nothing "shady" (not sure what you meant by that) and not complicated.

[1] https://www.wiley.com/en-us/Adventures+in+Minecraft%2C+2nd+E...


Thanks will check it out. By shady I meant the sites filled with ads that you go to to download mods, and the mod installers that I worry about what else they might be installing on my machine. Am I doing it wrong?


Oh yeah, that. This is a book so you don't have a lot of that shady stuff. But you do need to download and install their server code so you can run a Minecraft 1.12 server on localhost. Seems safe and no malware.


We've found MCreator to be a great way to get into modding Minecraft. It has block programming like Scratch. https://mcreator.net/


Microsoft have a block based language called Makecode, that is very similar to Scratch, and which you can use to mod Minecraft. You can also use it with Lego I think, and some other hardware like the micro:bit, if you'd like to do some robotics.

https://minecraft.makecode.com/


My son picked up Scratch programming over lockdown by taking an Outschool course, and then he joined John Hopkins CTY online courses and has been programming on his own since then purely for pleasure.

He has made videos and animations and I'm most shocked by his ability to debug his programs so well. I will give him tips every now and then, especially if he runs into problems, but I largely just let him do whatever he wants.

I never forced this on him, it's something he enjoys immensely. I myself didn't learn how to program until after graduating from college, so I know how little value learning programming at an early age is, except as a form of enjoyment.

He asked to learn Python but I refused, since I find it weird that he would be learning the same language that I myself am using to earn a living! But the upside is I can always outsource my work to him while I relax. Seriously though, I will teach him when he's ready but right now there's no use case for him to learn.


It is awesome that you are having fun with your son, and actively curating a path to fun with programming. It is very likely he will look back at the time you spent with him in this area with great fondness. If he wants to continue to program later or not, this quality time is the most important. Kids want to spend time with their dads.


This holiday season I rebooted https://game.stackybird.com (try on desktop). It's a project I started years ago when my son was born to teach him the programming mindset. He's now 7 and it seems to be the right age. It teaches kids programming basics in a fun and gradual way. Right now there are only 6 levels, but I plan to have hundreds. Levels unlock instructions and with new instructions you can solve new levels, or old levels in a better way.

I'm not good at design so I picked the bird from flappy bird and the colors from 2048. I will probably need to change that. Also I started the project in 2014 and bought the domain in 2018, but now there's a trademarked app with the same name in the app store. Will probably need to change the name too.

Too bad this thread pops up now, next week the app would be more impressive ;)


6.5 year old. Cultivating an interest in electronic components through toy disassembly and repair (actually thinking about doing a video channel analyzing low end electronics for fun), no actual circuit design as yet. After achieving literacy and exposure to minecraft, currently having success with co-op puzzle platformers which require multi-step solutions to puzzles (Putty Pals, Koala Kids, Ibb and Obb, Shift Happens, etc.), Crypt of the Necrodancer (turn-based dance pad rhythm game requiring comprehension of algorithms), a short JRPG (A Short Hike) and in terms of actual programming a Steam robot programming game called SMIB. Lots of board games, currently Puerto Rico ("Age: 13+"). Also recommend Sleeping Queens (card game requiring creative deployment of simple equations). Endgame: Shenzhen IO.


There are some great resources with arduino devices and arduino.cc - though it might be a little tricky for 7. I suppose it depends on the kid. Getting some light kits from adafruit and some prebuilt scripts can help, though. Wearable LED tags are a pretty clout-earning trinket for the 7-year-old set.

Thonny http://thonny.org is fun browser based tool for learning things as simple as turtle graphics (anyone else start with LOGO?) or even up to more fully developed programs.

My kid and some of her friends did some video game design using the "Bloxels" game, but the (free) app makes the actual box of color pixels mostly irrelevant. I think this is a great way to think of tile based gaming structure and layout in a GUI format without the burden of command line. It's the same sort of appeal as Minecraft target audiences.


My father tried to introduce me to programing when I was 12, BASIC, but it didn't go well, nor did it go well when I tried to learn every subsequent language. Being ADHD I needed instant gratification with minimal effort, to pull me deeper in so I wouldn't bounce to the next thing. Programing was chaotic, hard to keep straight, and frustrating because my ego wouldn't let me say "hey, you don't have all the answers, let's go figure out what we're missing."

So my advice: Help him to understand that when an answer to a problem is not visible, it doesn't mean he's dumb, etc. It means he doesn't have the right puzzle piece of information, and needs to find it first. (i.e. a formula, code block, etc.) Be ok with not knowing the answer, and be ok that he will need to learn in order to apply knowledge (like puzzle pieces) to the problem.


I think it's a problem for a lot of kids that it's hard for them not to be instantly good at something. Learning patience is part of growing up and gaining experience.


For my kids (8 and 6) we started with "hour of code" from code.org. They especially liked the one with maze solving: https://studio.code.org/hoc/1 of course we tried others later.Then we tried some ScrachJr - they really like creating short clips with all family members as characters. ScratchJr makes it easy to use face photographs on animated characters. They could easily spend 3 hours doing just that which proves that they must really like it (it's hard for my 6 year old son to concentrate on one thing only for that long). Now we are trying a programmable robot from Lego Boost (set 17101). They like to play with it for sure but we have it only since Christmas so that's not that long.


I used Python and taught my 10yo son by working with him to design a text adventure game. While we were doing it together, he was engaged and enjoying it. His ability to understand and learn was never a challenge.

The challenge was that actually programming was apparently not his interest. He was more interested in story and puzzle design, and as he got older those interests expanded while programming just completely fell away.

Most people could program if they wanted, assuming they had an adequate teacher. But if they do not have the desire and drive, then it's not going to happen.

Edit - now I also recall that before the Python game effort, I got him started on Scratch, gave him a goal to make a simple Mario clone, and left him to it. A day later, he had made good progress but quickly lost interest and no longer wanted to work on it or talk about it.


7: minecraft taught basic logic with red stone. 8: tinkered with available tools to hack eg. lego games. 9: godot programming via youtube video series. 10: ??? will see.

If a kid is bored, they'll think anything is fun. Key is to have a video game schedule; before that, "technology" is off limits. But the loophole is to allow access to certain apps (blender, godot, krita, puzzles, etc) before tech schedule if it doesn't conflict with daily responsibilities such as homework. None of these were forced but encouraged indirectly. Again, if a kid doesn't get hook on instant gratification with passive consumption of entertainment, the change is big your child will turn to exploration when bored...programming might be the natural direction given light encouragement.


I've started working with my third child who is 10 years old. The older two weren't interested, but my youngest is really interested. We first tried to use Scratch and some of the online learning sites, but they all drove me crazy because things would break or wouldn't work like the videos. We switched to Python using Pygame Zero which is going MUCH better. Definitely recommend Python: using whitespace for blocks is very understandable and easier than balancing {}. At 10 my child is able to exclusively drive the keyboard and make many of the changes he wants. We've been doing this for about 6 weeks spending 1-2 hours on Sat and Sun.

My older son is much more interested in mechanical engineering so I'm mentoring his robotics team for programming.


I recommend Scratch and editor.p5js.org

My kid is 7. He can't really code alone, but he can do nontrivial modifications to Scratch programs based on trial and error, he can create very simple but visually interesting p5js apps like this: https://editor.p5js.org/skinner/sketches/xjUwFm1pF , and he enjoys a lot being the product designer when we create more complex p5js apps like this: https://editor.p5js.org/skinner/sketches/bPh8JRHrV .


Didn’t work.

I could tell from an early age that my son wasn’t interested in coding. But still I showed him what I did and the basics of programming. In high school when he had a class that required Java programming, I helped with the assignment. But it was always drudgery.

Eventually I convinced him to look into engineering professions and he went for a year to a top engineering school in environmental engineering. But he never had an engineer’s mind.

He switched schools, got a degree in biology and now works with animals.

I knew he would most likely work with animals from the age of five. I just wanted him to see other options. He’s very, very happy in his profession and that’s rewarding to see.


It's interesting I have had little success in garnering enthusiasm for coding with my kids. I have taken the route of giving them exposure to it and occasional incentives to go a bit further, but never pushing it much beyond that. I wonder if technology these days is just so advanced that they do not see the link between the basics that programming starts out with and the apps they use day to day. For me, at 10 I could write a program myself in basic that was within range of the actual games and professional applications that were being made at the time. That is just so far from possible these days.


Just to help set expectations: 1.5 hours a day is a lot for a 7 year old. That's probably not much less than a full school day of actually sitting down and learning.

I have taught my oldest son programming via Scratch, Python, a Raspberry Pi robot and bits of Khan Academy and Code.org. He started about 7 I think, but I've always been really careful to ensure that the interest in it is coming from him and not from me. He asks me to teach him and I do.

I think with all things like this, you have to ask what the opportunity cost is. What is he not learning because he's spending the time doing this?


Check out FIRST Robotics. I mentored there and it was great. My own kid .. I have been using snapcircuits and littlebits to spark an interest (they are younger than 5 at the moment). Seems to get them interested.


My brother is 11 and he's more of a hands-on type of person (he's built some furniture, wooden stencils and functional crossbow; terrifying for our parents) and doesn't like to sit in-front of a computer for more time then school necessitates.

Because of this I figured I wouldn't force him to learn programming, rather nudge him towards it. I bought him a Tynker membership and he seems to enjoy that. It seems like a fun, gentle introduction into programming.

https://www.tynker.com/


If he’d like to make a Minecraft mod, a Roblox game or a comprehensive game in Scratch, check out Codakid.

Their video walkthroughs explain everything step-by-step. They keep it very basic and assume no prior knowledge.

Our 7 year old had a really basic Roblox obby (obstacle course) set up in no time. We played the videos on the iPad, the Roblox dev environment running on my Macbook Pro. That way he could easily go back through the video if he missed something.

The courses are worth the money.

https://codakid.com/


Kind of different but I started learning programming while in primary school. I mostly messed around trying to learn how to make games in Unity. I didn't actually learn a whole lot of programming this way but it probably improved my interest in the subject and then I eventually discovered code academy which actually taught me how to program.

In between unity and codeacademy I tried a bunch of books but none of them really got me to understand what was happening so I didn't learn much from them.


Give your kid a 3 year old Android phone. I’m 18, and my interest in programming started with rooting and custom ROMs. I learned a ton about shell scripting, file systems, and operating systems just from trying to get my lemon Android device to run a little faster. The best part was that since my motivation was fixing my phone, I didn’t need my dad to push me.

Sometimes putting someone in a situation where they have to solve a complicated problem is the best way to get them to learn.


maybe this is just an outlier experience, but I deny that teaching (like telling somebody how to do something) is a successful approach at all. a widely underestimated ressource is that the learner wants to learn it. so, the best you can do is to show your owh profit from programming. then wait for questions.

and I mean wait. I have seen intelligent parents push their kids and really getting them annoyed and thus unwilling to learn stuff.

very good for questions you can not answer yourself is https://zen.coderdojo.com/find here, kids can (but don't have to) work on their own projects, ask highly qualified experts and -- even more importantly -- watch other kids working on their projects. plus: I have seen 6 year old kids presenting their project to 150 people at the coderdojo without even realizing what skill they acquired.

it boils down to 3 aspects: Mastery, Autonomy and Purpose

from my "teaching experience" with adults, giving the responsability to the learner is the important part. I hold seminars starting with an empty document. then I ask people to ask questions, otherwise the seminar would be over within the next 10 minutes. people instantly wake up and start to take responsability.


I tried several things but what got the interest of my daughter(10) is code.org

She also uses it at school, and she regularly enjoys working with it on her own.

Because she seems to go more toward the graphical creative side, I made her work on the logo of a personal project I work on at the moment, and she did enjoy it a lot.

Sometimes I ask her to edit some c++ code I work on and see how the result is when running the code from Xcode; we have a lot of fun doing that!


Not personal experience, but I've been listening to Teaching Python podcast [0]

They talk about setting up the environment, making it exciting for the kids to come and play, creating expectations, letting kids figure out instead of always answering every question, etc.

[0] https://www.teachingpython.fm/


Make sure they're bored out of their mind all the time. No Fortnite, no YouTube, no tablet. (steers them clear of ADHD too) Either they go play outside with their friends or they hack what they can on some outdated/underpowered device you give them (Arduino, TI84, Arch linux boot screen, etc). Read them technical books before bed.


> "steers them clear of ADHD too"

Could you elaborate on that a bit more? I have ADHD and am very interested in anything about it but have never heard anything like that.


Not OP, but I kinda know what he's talking about, here's a shortened version of how it works:

- Stop drinking coffee - Get rid of Social media notifications and stuff - Actively aim to bore yourself when the day starts, don't look at the phone. - Then suddenly you'll notice that your brain is dying to do something interesting, so much that you'll start reading toothpaste's label while brushing your teeth. Start building up stories about how that label came to be (and all that is ok, as long as it isn't jumping around). - Then open your computer and the task you want to do, and find yourself be VERY INTERESTED in doing that.


I see.. but that's something else. These are strategies to not get distracted, actually a big part of ADHD is having these strategies, otherwise there would be no productivity whatsoever.

However, the OP is talking about distractions which cause ADHD to be present, something I have not heard about.


My kids and I played Warcraft 3 together quite a bit. It came with an editor that let you create custom maps, including the creeps. From about the age of 10 my oldest loved making worlds for the rest of the family to explore. It was enough of a hook that he eventually wanted more than the map editor could offer.


This is going back a long way but for myself, I never had any interest in programming until there was something I wanted to make (in my case, games on my calculator). That gave me the motivation to teach myself programming. Even now I always need a project with a goal in order to get excited about code.


This made my day. Thank you for sharing this.

I had a Tomy Tutor computer that I made my mom enter BASIC programs into, but she did not have any development experience.

I really like your to-do list to keep track of accomplishments and stay within scope.


So far I’ve given my two year old a duplo train that you can ‘program’ by putting specific tiles on the track, but the only one he’s shown much interest in is the one that stops the train.

It’s early days yet ;)


I got a raspberry pi to boot up into Commodore 64 BASIC. My son got into it pretty quickly. We then moved to python and scratch. Scratch has been the most addictive so far.


I would be cautious about trying to make a child enjoy something you found interesting in your childhood. The world has changed so much, and what interests children today may be significantly different. Get them on the cool high level concepts of today (mobile apps, web apps, machine learning) and over time, they might gain an appreciation of the stuff technology has abstracted away. Some things are just not as important anymore.

I'm not a parent (I just graduated) and have not tested my thoughts above. It's also not a direct response at OP, more of something I will definitely keep at the back of my mind. Empathy.


Relevant blog post for a slightly older kid: https://stopa.io/post/246


Haven't seen it mentioned here but maybe graduate him to Factorio. Has a lot of "complex systems" thinking and also has the combinators to play with.


I learned programming when I was 8 years old from books and experimenting

Mostly helpful was that I had a 386, QBASIC and GORILLA.BAS, but not much else. No games and no internet


I also learned from books (and no actual computer for many years).

But I don't think that's a good goal for today's world.

There is absolutely no way books are going to compete with shining rectangles so one must find a way to integrate new technology to get kids hooked on something more productive.


This whole thread makes me think that we should give our kids open source games, built and run locally.


I dont have kids. But in case in wasnt mentioned already check linda luikas and her ruby children books


They're more interested in math than programming. I'm rolling with it.


Just make sure that is not all that you do together. Balance.


They mastered it and then lost interest.


Hey man, incredible piece.

Your deeply thought out discipline and equally well balanced enthusiasm is a model that instantly resonates with me. Thanks for sharing.

I'll share my thoughts, at your invitation, with a disclaimer: My fathering strategy is based largely on my lived experience - because it's what worked for me - and I'm hoping to repeat it with my daughters.

For context: I have 25 years of programming experience. Started when I was 11. My folks didn't even know how to turn a computer on, let alone enforce an educational playtime environment. But in my disk-hunting solace, I discovered that DOS 6.22 came pre-installed with this game called Gorillas, and I soon reverse engineered GORILLA.BAS in the pursuit of red bananas. Next thing I knew, I was implementing NeHe's OpenGL tuts, and by age 21, I was building database integration layers for a bunch of local companies - which over time evolved into the company I now run, which has provided my wife and I with a stable source of freedom-providing income for many years.

How is any of this relevant!?

We all want to be successful, and we all have personal definitions of success. I'm happy to be enjoying mine. And yeah, I'm a dad, so I want my girls to have that same level of success. Which in turn guides my fathering strategy.

When I first began reflecting on how to best raise them, I thought about my lived experience as a kid. I was lucky to discover my passion (Zero Cool had something to do with it), but what is important is that I discovered a passion. And then what is equally important is that I had tons of time to pursue my passion at my own pace. My folks were always right there - so I felt safe - but they never interrupted me. Then sometime in my teens I had a vision for a software company and the rest is history. Being exposed to successful and inspirational uncles from a young age helped form my world view extensively.

So back to your boy, and how I raise my girls (3 and 6): On a daily basis I expose them to as many different experiences as possible - be they arts, crafts, puzzles, and outdoor fitness - and crucially, I give them space - complete freedom - to pursue knowledge of the world around them at their own pace, based on wherever their interest leads them.

In other words my sole job is to create this safe, free, curiosity-breeding environment, and to guide them only when they have questions - ultimately allowing them the freedom to lead and teach themselves.

Oh and none of this disciplined routine stuff. This is all day. Every day. My wife and I take turns (mostly to give each other space to pursue our respective careers - she's a healthcare worker - 2020 was rough). We believe that our taking turns has the benefit that our girls get two completely different styles of parenting, which we think will help teach them to adapt. Of course we parent them together too - bath time is the most fun, and my rendition of Let it Snow is the stuff of legends.

So far we have learnt that our 3 year old is very peaceful. She's quite serious too - which I absolutely love (I've always been accused of looking too serious). She takes in her local environment with an exploration of every one of her senses, intently. Lately I've been exposing her to an abacus, which is proving to be a recurring interest. As for my 6 year old, she isn't as smart as her sister, but hearing her belt the lyrics to Frozen when I return home from my early morning row puts a joy in my step for the rest of the day that I suspect only other dads will understand. Does this mean performing is her passion? I reckon it's still too early to tell - but perhaps it is, so I take delight in listening to her sing in the car, and she takes delight in singing out the window as we drive past our eternally patient neighbours.

So may I ask you - how did you figure out that your boy's passion lies in programming? Or perhaps it would be more fair to ask, so that I may better understand your point of view - what is your goal with your parenting strategy?

If programming is indeed your boy's authentic passion, great! If not, well, you're obviously brilliant, so I have no doubt that you'll figure out his passion(s) one day. But I do think his having the freedom to play independently is critical.

With my girls, I often have to fight the urges I have to steer their learning in an effort to optimise their pursuit of each potential passion. But over time, I've become somewhat of a zen master at it. I now relish in the opportunity I have to witness them as they find themselves.

Heck, I hope it works!

Good luck with your boy. He does sound brilliant. I deeply respect the responsibility you mindfully bear.


Okay, I was about to go to bed, but read this on my phone and thought I really should reply. My son is 13. We started Scratch when he was 5.

It was very slow at first, and the key was helping him do what he wanted to quickly without having to mess around too much. He just needed a short feedback loop. His attention span was pretty small, but he was really into it. Scratch Junior on the iPad was a good way to start before moving to the computer with the mouse and keyboard. If he wanted to do something and I didn't know how right away, I'd figure it out later and then next time we sat down I could show him the easy way to do it.

After a while he started learning more and more and eventually played with every block to see how it worked. I also showed him how to look at other projects in the community. When he got farther along, this really helped him. He could see how others built platformer engines and other things, and then adapt them to his own projects.

I had the same idea as you with making a plan, writing it down on paper, and then going to the computer. This really didn't work. He just needed time to play and explore with the tools and get better and better with them until they became natural. Now, for more complicated things, he will write down notes on paper, but he still just goes at it on the computer for a lot of problems.

Finding the next step after Scratch was a challenge. We did some JavaScript together. He would understand it if we walked through it side by side. He could modify some of the code, but it's really asking a lot to get up and running with HTML, CSS, and JS along with a console, and editor, and browser to debug. It's too many moving parts.

So I worked on finding an all-in-one IDE tool for him. We tried Unity which was too complicated. PICO-8 which was close to being a fit, but a tough transition from block programming to typing out code. We tried Fuze4 on the Switch with a keyboard, but never went past the basics. Ultimately, we found GameMaker Studio from YoYo Games to be a great next step. It did take some effort, but they have block programming and some similar concepts to Scratch. It is more advanced and somewhere between Scratch and Unity, but it has stuck well. He is experimenting and building more and more complicated games. He is constantly asking for game ideas and wanting to share how he programmed one thing or another. I'll give him ideas by mixing together concepts from different games. Sometimes he'll just have fun re-implementing a game he saw a YouTuber play. Right now, he's building his own Snakebird. Listening to how he solved things really keeps him excited about it.

A couple months ago he really impressed me. He wanted to make Minecraft mods so he searched for some tools, ended up finding MCreator (https://mcreator.net/), downloaded it, and got it running all on his own. I've looked into it a little since, and this is a really great next step if your kid wants to build Minecraft mods. It's like Scratch for Minecraft mods. Block programming etc. It's open source and looking for contributors. Check it out.

He'll also get into anything that has a level editor. He loved the editor for the iPad game Badland. He is really into Mario Maker 2 now. Now that I think about it, the Badland editor probably helped quite a bit in the transition from Scratch to GameMaker.

Another tip is make sure to set some time aside for creating. We used to do screen time and off-screen time, but my kids started to just watch their favorite YouTubers or play the same games (Minecraft and Terraria). So now we have screen time, creative time, and off-screen time. During creative time they can be on the computer or iPad, but only using a subset of programs that I've deemed "creative". For my 13yo, that's Gamemaker or MCreator. For my 7yo, that's using redstone in Minecraft or other educational type content. He has some music making apps he enjoys.

My 7yo and 13yo are a quite a bit different with this. My older son got into all of it very early and really enjoyed it. The 7yo doesn't have the same interest - and that's okay. I'm not going to force it, but I will nudge every now and then to make sure we've at least tried different things.


TL;DR for my family:

- Scratch (https://scratch.mit.edu)

- Swift Playgrounds for iPad

- Mario Maker (Nintendo Switch version)

I haven't given my boys any pressure to code yet (they are only 8, 6, and 3) but the oldest one has a natural interest, it seems, and that seems to be making the middle one interested too.

The oldest got his start with a local after-school class where they make robots out of lego-like blocks with motors and program simple behaviors like driving around, drawing pictures. Then his brother also wanted to. The older one has now graduated to writing 2D platformer games with Scratch at that class — one day I noticed they were just logging into the regular free Scratch, and he knew his login and password, so he now logs in from home after school to work on it sometimes.

That class is still like "drag blocks around to make loops and conditionals" but he later found the Swift Playgrounds app on iPad and worked through those exercises. That is a lot more textual, and you learn basic constructs like variables, for loops, if/else, and functions.

And he learned somehow very quick that there is a high success rate of postponing bedtime by saying, "OK, but wait, just let me debug this bug in my program a bit more." ;-)

His 6-year-old brother seems to be following in his footsteps, not interested in Swift Playgrounds yet (if ever) but keenly interested in replicating and then improving on his older brother's Mario Maker levels, and he is interested in the games his older brother is making at the class (where he himself is still doing the robot making course) and he intends to do that same course next year.

The 3-year-old's programming is still limited to standing in front of the TV and shouting "HEY SIRI TV OFFFFFF!!!!!"

I'm a life-long software engineer and intend to keep doing that, so it is gratifying to see them doing this. As some other people have said in this thread, as a parent you can't (or shouldn't) try to "make them become software engineers" but at the same time, demanding basic competence in programming (e.g. being able to write a program to do some kind of calculations on a CVS credit card statement, and debug that in a graphical debugger) seems to me akin to, say, making sure your kids learn how to swim.

My kids understand (well, the older two at least, the little one maybe later) that they will be expected to be able to swim competently, read rudimentary sheet music and be able to reproduce it on a piano keyboard, ride a bicycle, safely operate an automobile, and write software programs at a competent level for their age.

They don't need to be spectacular at any of those, or pursue a career relating to them; they don't even need to be interested. But I think those are basic human competencies, and it is fine to require your kids to achieve them.


I live with a family who have two daughters, age 7 and 9. I was able to rescue some laptops from office trash, running Windows XP. We had a lot of time during lockdowns and in evenings to play - whether that was on computers or with magnet toys, dolls, etc.

I first learned programming when I was 7, drawing a cube in Logo on a Mac Plus. I taught myself programming when I was 11, writing AppleScript to rip music from an iPod and download the Bible and Shakespeare books, and turn them into 1000-character Notes so I could share my book with classmates who forgot theirs. Yes, I used eBooks in school in 2003.

These notes are just a messy summary, which I'd like to turn into a real curriculum. Some of them were surprisingly fun for all of us (Escargot MSN messenger, binary morse code to send a smiley face using flashing lights, and drawing the result on squared paper). Now they watch a lot of YouTube, but the need to search for things on Google is motivating the 7 year old that reading/writing/typing is actually important.

Done: Google Chrome. Bookmarks. Save image. Age of Empires. Worms. Mahjong, Solitaire, eSheep, Asteroid, Alien Force, Bejeweled, stressreducers. Satellites, rocket ships, Lego. Rummikub. Connect 4. Slime, unicorn poo cleaning game. Dancing robot. YouTube Tayo, Miniforce, PJ masks, watchcar, Kaycee and Rachel. Google Images. Escargot MSN messenger server to teach typing. Anna discovered backgrounds, emoticons, nudges, fonts by herself. Your/you're. World map on paper. Maths homework +-*/, >,<,=. Roman numerals. Binary. Additive and subtractive colour mixing. Google doodle for Mother's Day. North Korea: Crossing, friends. Old photos of me, rocket designs, ex-girlfriends. NASA. Kid Pix. Birthdays, contact phone numbers in paper book. Narwhals song. Nyan cat. The Japanese Tradition sushi. Princess Bride. How To Train Your Dragon. Copyright (Charlieissocoollike magic mars bars). TPB, rar. Writing letters, making cards. Drawing stegosaurus. English jokes. External mouse. USB drive. External screen. Headphones. Power bank, USB phone charging. How networks send messages to servers (big computer, bigger than a rocket ship). Wires in walls, under roads, WiFi to space to talk to satellites. My work is building servers. Minecraft. Printing, scanning. Line rider. Pacman, snake, breakout, pinball Webtoons Custom icon design. MS Office, PS Reading on laptop screen: Comics, Bible. Chatterbox

Difference between battery and power supply. Jokes emails, short jokes Reddit. FML? TED. Weebl. Minesweeper. Pic slider with photo of me. Bluestacks. Teach Kid Pix again with printer, Paint, PhotoShop to make line drawings for colouring. Teach Logo. Play with it. Google maps for navigation, Google Earth for satellite pictures. Wikipedia about Harry Potter. Web server. Run Pingtype. Teach basic HTML. Then Wordpress.org. Perhaps PHPBB? Field trip to server farm, observatory. Rocket Lab? Build flashing red and blue lights with LEDs and put them on toys. Computer hardware repair? Fit Win7 ultimate IDE disk to desktop PC. YouTube ripping. Music in iTunes. Movies in Kodi? Or VLC? Music creation? Copying photos from phone. Organising photos on computer. KMart, eBay, Craigslist, Amazon online shops. Writing programs beyond Logo. Some JavaScript game; Python web scraping. Charities: WWF, Greenpeace, Amnesty International, UNHCR, UNICEF. Google Drive, Dropbox only after having an email account. Outlook calendar, contacts? For all Anna's animals: Reirei, Titi, Snowy, Bunbun, Koaly, baby koaly, Annabelle, Kang Karen, Liky, Kitty, Uni. Writing documents in Word and printing them. Making graphs in Excel. PowerPoint presentations: lyrics, slides, photos. Typing Chinese, Korean. Lightbulb, power sockets, adaptors. Veggietales, Sesame Street

Advanced: not just "good with computers" but actually a dev. Windows: reinstalling, drivers, certificates. Linux: ssh, nano, cat, echo, mv, cp, chmod, tar, sudo. Mac: Time Machine, AppleScript Networking: dd-wrt, ipconfig, DNS, hosts file. TCP sockets. Hardware: common voltages: 1.5, 5, 12, 220. Electroboom. Soldering. Finding V+ and GND. Tracing faults. Virtual machines. Jailbreaking, rooting. XKCD, Hacker News. IRC. YouTube uploads, live streaming. OBS. Audio feedback. Imagemagick, ffmpeg. Tableau, PowerBI

These kinds of things can be used for interviews, not only education.

Bitmap graphics A1, D1, ... smiley face Code.org is logo Morse code, binary

Numberblocks YouTube Babybus super panda youtube Toca Life for Android. Among Us on Android. WeChat. Mathletics.


I got into programming at around middle-school age, with no particular guidance from my parents beyond general encouragement.

I have three kids and none of them are interested in programming.

It's fine to support and encourage something your kids are interested in, and to give them opportunities to try things and discover those interests. But be careful you're not pushing them into something just because you like it. Your kids are independent human beings and may be interested in very different things than you are, or than their siblings are.


Use Khan Academy and told him to do self-teaching, for self-teaching is a must for any developers.lol




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

Search: