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.
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.
> 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 :)
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).
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."
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.
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.
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...
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 the calculator eliminated that dissonance between expectation and possibility.
Will, if you’re reading this, I owe you my career!
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.
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?
So it's not totally odd for a 7 year old (or I was odd, which is quite possible).
>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.
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.
Ok, I was also competing with my brother who was 10, but still: didn’t feel unusual at all.
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.
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.
Same here!
Getting started in programming seems so much more daunting these days.
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.
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.
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.
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.
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.
I don’t think this is something you can (or should, it’s basically the definition of parenting) avoid as a parent.
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.
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.
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.
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.
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.
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.
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.
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.)
The aim of the game was to figure out the rule. She said no to 'novel' and 'money', but yes to 'book' and 'currency'.
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/
- 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...
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.
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...
It's actually pretty fun, even for grown-up coders ;)
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.
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
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.
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 :)
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.
Deleted Comment
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.
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.
Fun memories. Networks are cool.
Not that it really matters that much, but just for future reference: Lua is a proper noun, not an acronym.
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.
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/
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).
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.