Do you have kids? Maybe you have nieces or nephews? Or do you work in a school environment?
Maybe it's just friends who know you're a programmer and ask about how they should go
about introducing programming concepts to their kids. Anna-Lena Popkes is back on the show to
share her research on when and how to teach kids programming. We spend the second half of this
episode talking about concrete apps and toys you might consider for each age group. Plus,
some of these are fun for adults too. This is Talk Python to Me, episode 478, recorded August 8th,
2024. Welcome to Talk Python to Me, a weekly podcast on Python. This is your host, Michael Kennedy.
Follow me on Mastodon where I'm @mkennedy and follow the podcast using @talkpython,
both accounts over at fosstodon.org. And keep up with the show and listen to over nine years of
episodes at talkpython.fm. If you want to be part of our live episodes, you can find the live streams
over on YouTube. Subscribe to our YouTube channel over at talkpython.fm/youtube and get notified
about upcoming shows. This episode is brought to you by WorkOS. If you're building a B2B SaaS app,
at some point your customers will start asking for enterprise features like SAML authentication,
SKIM provisioning, audit logs, and fine-grained authorization. WorkOS helps ship enterprise
features on day one without slowing down your core product development. Find out more at
Talk Python.fm slash WorkOS. And it's brought to you by us over at Talk Python Training. Did you know
that we have over 270 hours of Python courses? Yeah, that's right. Check them out at talkpython.fm
slash courses. Anna Lena, welcome back to Talk Python. It's awesome to have you here.
Yeah, thanks for having me again.
Yeah, it's always fun to have you on. You've got interesting and playful topics. I think the very
first time that you were on the show, I can't remember how many years ago, but it's been a little
while, was to talk about learning Python through Harry Potter. Is that right? In the magical universe.
Yeah, I still love that project a lot.
Yeah, people can find that on GitHub and they obviously can find that episode on talkpython.fm.
But we're back for, I would say, another playful episode in a sense, right? Continuing the theme. I'm going to talk about when should you teach kids to program? And maybe even more importantly, what are some age appropriate resources that spans a good chunk of what a kid's life is? You know, like a kid, not a kid at 18. I don't know. But lower than that, a lot of resources.
Exactly.
Yeah, so that's going to be a lot of fun. It has been a while since you've been on the show, though. So just a quick introduction about who you are and what you do for everyone listening.
Yeah, actually, not much has changed since the last episode. I think that was on Python packaging. I'm still a senior machine learning engineer at a German company called InnoVex, where I jump from project to project. I'm currently working at the speech recognition team at Bubble still. Was that last time as well? I'm not sure.
I think so. I believe so.
Yes. Yeah, I'm still there in the project. I love it. It's a very interesting topic. And yeah, I love Python. We have talked about different topics over the years. And this time it's on children. And talk I prepared for PyData and the PyCon here in Germany. And it was lots of fun to learn about it.
Yeah, it looks like you did a lot of research.
I did.
To go into this. And I think it's probably worth pointing out that we both are parents. And so we have some interest in this topics, you know, close to home as well. My kids are getting a little bit older for any of this kind of guidance. But still, you know, a lot of things I thought about as they were growing up. And some of these things we're going to talk about, I've actually used, you know, before I saw them on your list as well, which is cool. But yeah, it's a personal topic, I suppose.
Yeah, absolutely. For me, it's also personal, because I did not have any coding opportunities growing up myself. I really want this to be different for children growing up now and my own kids. That's also a reason why I wanted to do the research. So that would be just different.
Let me know what you think. I feel like there are social stigmas, like this person should be a coder, and that person shouldn't be a coder, they should go do something else. And that may or may not be around gender, but often it is, unfortunately. But when you're six years old, you don't care. You like games, you want to play a game, you want to explore things are interesting, right?
So I feel like this kind of stuff also has a big opportunity to short circuit these unnecessary influences, I guess, depending on different cultures.
And also just having it in your environment, if there's like a person in your family or your friend circle, or even at school, and you have some opportunity to learn about it, it helps a lot.
For me, it just wasn't a topic ever. And I still remember my parents, when I told them that I was switched to computer science in my graduate degree, they were like, are you sure you want to do that?
Isn't that like very nerdy, techie stuff? And I'm so happy I did the switch, even though it was quite hard in the beginning, but it's an amazing topic. And there's so much cool stuff to do. It's just not only the nerdy stuff.
It's always got something new. That's both the benefit and the curse of it. What you've learned is powerful and helpful, but there's more to learn.
Yeah, always. But that makes like keeps it interesting, right? You never get bored.
Exactly. Especially when JavaScript.
Okay, so I feel like as your parents had that thought, you know, probably one thing they may have thought, I know, obviously, I don't know them.
But a lot of people would think is that's a very antisocial sort of thing, right? Like, oh, you're going into programming, that means you're gonna sit behind a computer screen.
Completely alone and not talk to people. And I think that's one of the misconceptions of programming.
Yeah, absolutely. Even now, when I'm working remotely, most of the time, I have so many meetings and collaborations with other developers. And I don't ever feel not part of my team, even if I don't see them, because we interact so much.
Sometimes they sit on a completely different continent, and it still feels very close.
And we do love and we don't only pair code, but we like, yeah, you get to know them well.
And it's lots of fun, interesting people that are not the stereotype of coders at all.
Yeah, absolutely.
I bring that up because I think some people listening might be attracted to the show who don't necessarily work as programmers themselves, you know?
I can very, like, I can recommend it a lot. I think it's a lot of fun.
Absolutely.
All right. Well, we talked about some of the reasons that we're interested in this, obviously.
But why? I mean, as people who like programming, we may want to communicate or share that thing we like with other kids, with our kids and so on.
But I think programming also can stand in for a lot of more traditional things, such as, like, geometry and so on.
Yeah, I think what I like most about it is that you can really make things.
You can see them come alive and it can be a game.
It can be something more math related.
It can be music, websites.
You can just create anything that you're interested in and even have so much fun seeing it come to life.
So it's not just learning a skill, maybe for a job or your life at home or your hobbies, but it's more of like being able to create anything that you're interested in.
And then, of course, you have the obvious advantages like the career opportunities and lots of skills that are taught by learning how to code that you do not think about in the beginning, I guess.
Yeah, absolutely.
The realism or I've created something I can see, even though it's still digital and virtual and you can't actually touch it usually unless it's like robotic or something.
But that's so much more realistic and interactive than things like, oh, you're going to learn these axioms and then we're going to teach you how to, you know, prove stuff about angles and triangles with these axioms.
It's going to teach you logical thinking.
So, you know, sit down for the year and we're going to talk about small angles, big angles, diagonal, cross connected, all that kind of stuff.
Right.
Which is a little bit useful, but being able to work with computers is way more.
And I think it teaches these problem solving and computational thinking skills at least as well.
Yeah, absolutely.
Especially what you said, like problem solving, logical thinking that kids, like not only adults, but kids especially, they understand that you have might have a complex problem you want to solve, but you can break it down into simpler steps.
Like what an algorithm is actually doing, giving you a step by step path to reaching a goal.
You can teach that not only by coding, also, of course, by just playing and seeing you want to build this huge Lego piece, but you start building it with little pieces and put it all together.
And that's also what you have in coding.
You want to reach a goal.
You want to program a game or maybe create an animation and you understand how to break it down.
It helps us or also kids to make more structured decisions.
I think that's a very valuable skill to learn, not only for coding, but for everyday life, I guess.
You want to break problems down and solve them.
It helps.
That's like adulthood right there.
What I also find really helpful is one of the skills I looked at specifically is perseverance.
Also for kids, they get frustrated so easily.
And give up and say like, this is not working.
I don't like this.
Like, I hate this.
And start throwing their toys around.
At least we are at this stage.
Your kids are probably not doing that anymore.
But yeah, I think with coding, when you encourage them to keep going,
even or especially when they fail, that they understand that failure isn't something bad,
but rather it keeps you improving.
It keeps you going and that you can learn to see challenges or problems at something positive
and something you can grow with.
I think that's really, really great about coding because you will have that a lot when you learn
how to code.
Yeah, I absolutely agree with you.
In the problem, this perseverance skill is incredibly important.
I agree.
It manifests itself a little bit differently as they get older.
Instead of going, I dislike this, you know, like these are those toys crap.
I can't make it do its thing or whatever.
It's more, I can't do this.
I'm not good at this.
And a really important skill, I think, is not, I can't do this.
Like, I need to work at being good at this.
And that perseverance that you learn.
Honestly, I think one of the very most important skills that people can have as a programmer
or in software development in general is perseverance.
Like, it doesn't work.
I read the docs.
It still doesn't work.
I read Stack Overflow.
People were mean.
Still didn't help me.
But eventually, I worked my way and now it works.
And it's such a cool feeling to work through those things.
But until you learn the perseverance, you just think, well, I wasn't good at math.
I must not be good at programming.
I'm out.
Yeah.
I think that keeps a lot from a lot of children to learn or to like learning things that are
hard.
Lots of kids struggle with math and yes, like STEM classes.
But I think it's often because they feel like I don't understand this might also not be explained
in the best way, but they just shut down and say, okay, I'm just not going to try.
And if you understand and maybe also, I know that there's this huge psychological research
on growth mindset that you understand that you shouldn't praise just an outcome, but rather
the effort that kids try to do something.
They try to improve and put in the work that that's just so much more important than reaching
the goal in the end.
Yeah.
We can really help our kids to become more robust and more joyful about learning by
teaching these principles, for example, through learning how to code.
This portion of Talk By The Namedy is brought to you by WorkOS.
If you're building a B2B SaaS app, at some point, your customers will start asking for
enterprise features like SAML authentication, skim provisioning, autologs, and fine-grained
authorization.
That's where WorkOS comes in with easy to use APIs that'll help you ship enterprise features
on day one without slowing down your core product development.
Today, some of the fastest growing startups in the world are powered by WorkOS, including
ones you probably know, like Perplexity, Vercel, and Webflow.
WorkOS also provides a generous free tier of up to 1 million monthly active users for AuthKit,
making it the perfect authentication layer for growing companies.
It comes standard with useful features like RBAC, MFA, and bot protection.
If you're currently looking to build SSO for your first enterprise customer, you should consider
using WorkOS.
Integrate in minutes and start shipping enterprise plans today.
Just visit talkpython.fm/workOS.
The link is in your podcast player show notes.
Thank you to WorkOS for supporting the show.
Now, you did give this as this topic as a talk at PyData.
Was that PyData Berlin?
Where was it?
And I gave it once at PyData London and at PyCon Berlin and at Europy.
Okay.
Yeah.
So the reason I was going to bring that up is you had some really cool pictures.
Yeah, I know.
You'd come up with and like a little persistent kid working away there and stuff like that,
right?
Oh, I loved them.
I loved creating them.
I used Deli 3 to create them.
And I spent so much time just playing around with a model and providing it prompts to see
which images I liked best.
Of course, there were the obvious problems with some of them that the kids had six fingers
and so on.
But still, it was amazing to create these images.
And I loved the Perseverance one.
And we can link the article to my blog later where you can see the image.
It's just everyone laughs when they see the picture.
Yeah, the pictures are great.
The pictures are great.
All right.
Let's talk for a minute about brain development and maybe the different stages that kids go
through because there's kind of four or five stages, which then you might map over to the
different types of resources that we're going to talk about.
Yeah, I think that's a really important topic to consider.
If you want to understand when your child is able to do certain things, then you need to
be able to understand how their brain develops because our brain matures over time.
It's not fully mature at birth, but quite the opposite.
And some regions of the brain take more time to develop and some like vision and hearing are
quite well developed already at birth.
So at certain ages, it does make sense to start coding, for example, from zero to four.
And there is not much there for them to really have the cognitive abilities to understand
computational principles or really sit down and concentrate and focus.
Yeah, for example, at birth, you have quite a lot of neurons already, but just 25% of the
adult size brain.
And when you reach the age of four, you already have 80%.
So it has grown a lot through the first four years.
And you do have a lot of influence as a parent or caregiver, friend, whatever.
Mostly the primitive areas of the brain develop first, like hearing, vision, emotional regulation
starts developing, but really cognitive and executive functions like planning and so on come later.
So I guess zero to four years would be or birth would be the first stage.
And then zero to four years where you have lots of things happening and you can influence that
by positive influences from like responsive caregiving, that you have diverse learning experiences and
playing with a child. And then at four years, it gets starts getting interesting. And that's also
where you can start doing things with your kid. Like, do you want to rather talk about the
development first and then about...
Maybe we should talk about the resources that go with each stage. What do you think?
Yeah.
Yeah, let's do that. So yeah, I do too.
Since we already reached age four now. Oh yeah, nice. Yeah. So at age four, you can teach basic
algorithmic thinking. You can ask questions like, what would you do to guide a lost puppy home? Just
making them start to think about how to break down problems into smaller steps. But also they have
the motor skills at that age and the perceptual abilities to interact with simple toys that teach
the basics of coding. And you open the BeeBot, which is a tiny floor robot, or I guess it's not so
tiny. It's a Bee and it has four directions to go. Front, back, right, left. I think it can remember
up to 130 commands and you can press go and program the way it's supposed to crawl or walk, however you
want to phrase it.
Yeah. So one thing you might do with this thing is... So this is a little robot that has wheels.
It looks like a Bee. What you do is you push the buttons like forward, forward, right, forward,
left, forward, forward. And you might put out something on the ground, like a little
like, can you make your Bee go around this thing and then through this little gate or whatever,
right? Those kinds of challenges.
I think even when you purchase them, you can purchase rucks that have certain paths on them
and so on. I guess it's a very...
Right.
You can spend a lot of money on these kinds of toys. But maybe as a side note, if you start looking,
you will find tons of robots in different price ranges. So I guess we will only mention examples.
But if you start looking, you will definitely find lots of different options.
Yeah. Yeah, absolutely. Would you say that this RoboTurtles game falls into the same category?
Or is that a little bit older?
Oh, I'm not sure from the top of my head if it's older. What I like about it is that it's a board
game. So that's... I'm always asked about screen-free offers. So something that you can play
without sitting in front of the laptop because screen time is just a general huge discussion
point. I would have to look up.
So if I... Yeah, looking at the box here, it says ages four and up. So probably.
Oh, nice. That's really cool. Yeah.
Yeah. So this one is... I think it's almost exactly the same problem. There's a little bit
more to it because there's a couple of challenges in the board game. So I think we actually have this
board game from when my daughter was young. And you have a little turtle, which is a card and a board,
and you can put stuff on the board like little rocks. It's... It can't go through. Maybe there's
like an ice wall and it has ability to like melt the ice, but it has to do that before it can move
forward. You know, so you get a bunch of cards and you put them in a stack and then you like
play them out to see if your turtle wins the game or something like that. So this is another
pretty good option at that age, especially if you want something not electronic.
What I also like about it is that it becomes a family activity that you learn. That's just in
general, a very good thing if you want to teach your kids how to code, that you make learning a fun
activity and playing games, being with them, showing interest and yeah, having fun doing it
like as part of gaming or what you do at home, playing board games. That's just a very easy way
then to get started and to get them interesting. I should point out like the actual Robot Turtles
website has a bad SSL certificate right now. So I'm sure you can find it on like Amazon and other places,
but it's... Yeah, I'm sure. Okay. So what else? Another one you talked about is Cubelets,
but this field, I guess, might be a little bit older. Cubelets, it's... Well, you can start
early with them, but you can also use them at a later stage because you can program them using
visual coding languages or one of them may code, but you can start quite early. These like Cubelets
are small physical blocks. As you can see there that you just plug together and some of them move,
some have cameras or sensors, and you can build lots of cool, unique robots with them. And if you start
looking at demos on YouTube, it's really amazing how cool they can look, the end robot. I think one
disadvantage of this is that it's quite expensive. So one of these blocks is about 50 euros or maybe
$45, $50. So if you want to build big robots and have lots of options, then you need to invest quite a
bit of money.
Yeah. I like that the website says free shipping on orders over 50. It's like,
okay, pretty much anything. It sounds like.
Yeah, I guess. But I still, I still, I love it because it makes you like be creative,
especially having this aspect that you can program them later on using MakeCode. That's one of the
visual programming language. I think that's the run for Microsoft. You can keep using them over a long
period of time.
Yeah. For maybe a mental model for people who haven't seen these in action, because even look
in the website, you don't know, like, what do I do with these things again? Why are they here? I feel
like they should have maybe a little animation or something, but there's these cubes as the name
would imply, but they're almost like Lego blocks that each block is programmable. And then you combine
them into a thing that does stuff, right?
I think you explained it well.
Yeah. Thanks. So I think that that's pretty interesting, but this is probably in the next stage,
right? The next stage would be maybe six to nine. What do you think?
Yeah, exactly. I think the next stage regarding development would be around six to nine. Of course,
you also always have to mention it's, this is now for normally developing children. It's just an
average. Every child is different. So if you observe your child, you know, which skills develop at what
point and what might be easier for them, what is harder. So this is not like hard ranges, but yeah,
if you start with about six years of age, you can start using visual programming tools because kids
become more used to using technology. They have a better hand eye coordination. And also one very
important part of the brain, the prefrontal cortex, it's like the CEO of our brain, has a big growth spurt
between five and eight. And this improves working memory, planning, attention, and all kinds of mechanisms
that you need to start really sitting down and code. And you already opened Scratch Junior.
Yeah. And Scratch Junior is, I think Scratch is quite popular, one of the most popular visual coding
languages. And Scratch Junior is just a simplified version of it for very young children starting at
five to seven. So it has no text, but rather actions like movement. And visual programming in general,
you have puzzle pieces to represent concepts like loops usually, or I don't know, variables,
logical expressions, and you can plug them together. So you don't have to worry about syntax or using the
command line. You just create these programs by putting together puzzle pieces. So that's,
and that happens on a visual interface. So that's what visual programming is about.
And Scratch Junior is just a very simple version. I think it's just a free app you can play on tablet
and create little programs where the characters move around and do things.
Kind of like the bee, but you more look a little closer to real programming, but then you see the output,
right?
Yeah. And you start really using, I guess, these plug-in principles that you have the blocks that you put
together. So when you go on to, for example, Scratch or another of the visual programming languages,
you're already, you have knowledge about how it works in general, I guess.
As I look at this website, I was thinking, you know, when I think about coding, I think about
computers, Mac, Windows, whatever, with apps. But obviously, young kids are way more in tune with
touch devices like iPads and Android tablets and stuff, right?
It's amazing how quickly they adapt and learn it. I think it's quite, sometimes I'm blown away by how
young children can already understand how to swipe and select stuff on a touch screen.
I think actually it probably lowers the age by quite a bit that kids are able to do this kind of stuff
because these touch interfaces exist in decent ways.
Yeah, absolutely. Just learning how to type is actually one of the main reasons why you can
only start with textual programming later because typing is hard. You need to learn how to do it.
Just touching and dragging and dropping is much easier.
When my older kids were very young, we wanted to have them work with things like this and just
learn how to use computers. And they, this predated the iPhone, like it didn't exist.
There was no meaningful touch screens that really you would want to use. And so we got like, kind of like you get a
typing program to learn to touch type. We got a mousing program and there was like a little airplane and they
had to like chase the airplane around with the mouse to learn how the eye hand coordination of mouse and then like
screen, right? When you're three or four years old, like that's not natural, right? But touching, they already be all over that.
I think sometimes it's even too intuitive for them that it starts having like having a very huge influence
on them way too early, but I guess that's a different discussion.
Yeah, that's a different problem. That sends you back to a robot turtle board game.
Yeah, exactly.
This portion of Talk Python to Me is brought to you by us. I mentioned at the top of the show that we have a
wide range of courses focusing on core topics such as getting started with Python and advanced ones like
APIs, async programming, and deep diving into Python's memory management and more. But did you know that
we have a set of world-class apps that you can use in addition to our web platform for taking our courses?
If you're using a tablet or even a phone, apps are clearly the best option, but there are other
reasons to check them out as well at talkpython.fm/apps. Our mobile apps offer offline playback,
which allows you to download portions or even complete courses. We hear from users who learn on the
way to work on the subway, where connectivity is tricky, as well as to those who have secure
environments that don't allow them to connect personal devices or which have limited connectivity.
And even though I've done a ton of work to make our video delivery excellent, no matter your location
in the world, there are still places with very slow internet. Downloading a course and then watching
it without pauses is a really great use case as well. The app is 100% free and it includes eight free
courses that are a single tap away. So give it a try at talkpython.fm/apps. Now back to the show.
A little bit later, we could do, once you start doing this, some kind of programming language,
then that opens up a bunch of resources, right? So obviously Scratch is sort of the way more full
featured version of Scratch and Junior. That's pretty neat.
Yeah, I think Scratch is amazing because I think for kids, it's great. I know lots of adults that still
use it for some projects where you really want to make it come alive because Scratch is focused on
having really cool, interactive, fun projects. They have sounds, music, you can add graphics, and it just
offers a lot of functionality to create your project, share them with friends. And there is a ton of
resources on learning Scratch. And as you can see here, like make music, create a story, create a
character. I guess your possibilities are endless. Yeah, it looks really, actually, I didn't realize all
the stuff they got going on here. They have a bunch of tutorials, free coding community. Super cool.
Then I guess just while we're talking on these visual programming languages, we could talk about
Blockly, right? Yeah. When I, like I knew Blockly existed, it was also free, like Scratch is also
free. I guess that's important to mention. And Blockly is actually at the basis of most of the
other visual languages. For example, it is actually like block-based languages like Scratch and MakeCode
are based on Blockly. Blockly is developed by Google. And with Blockly, it's, I think it's for a bit older
kids because it's more low level. If you can say that, it offers you more flexibility.
You see the code next to the blocks. You see it in an editor, how it actually looks like,
and you could copy-paste the code into like a normal editor and run it. It's more low level,
but also somewhat more sophisticated, the editor that you have it more, it looks more like coding
to me than Scratch.
Maybe the way to think about it, you see this more low level. I would say each block almost
corresponds to a single symbol of code, almost, right? Like you have a set variable too, then you
put another block on, which is the value. And then, you know, you've got your visual editor,
but then side by side, you have your JavaScript, or I imagine you could probably see Python or other
languages if you, there's a dropdown for choosing the output language.
Yeah. You can use JavaScript, Python, PHP, Lua, or Dart.
Yeah. So that's kind of getting a little farther up there. And maybe we could talk
a bit about the hardware side, because that's one way that it actually can be something you can touch
and feel. And as you interact with these ideas, right?
I know that that's nothing I ever used, but my brother started using it. Like I know that he
bought a Raspberry Pi. You open now the microbit, which is like a smaller programmable device.
And the Raspberry Pi would be like full-fledged computer in a tiny device. But yeah, you can
learn a lot about hardware and also coding by having such devices. And the microbit has displays,
buttons, sensors, and you can program it using MakeCode, one of the other visual programming
languages. And I think it's quite cheap compared to other devices. Like a Raspberry Pi is, I think it's
not expensive for having all these abilities or these capabilities, but the microbit is, I guess,
more affordable for lots of people. Oh yeah, nice. There you can see how it works.
And you know what's really interesting is if you go to makecode.microbit.org, even if you don't have
one of these devices, it comes with a little emulator and then it has a virtual microbit that you can write
code against. And it gives you an option as well to choose Python or Blockly or some other way of
working with it, which is pretty cool. Exactly. That's also why it's recommended for children,
like officially it's recommended for children at the age of eight or older. And Blockly, I think,
is even recommended for kids starting at 10, whereas Scratch is for even younger children, right? They say
you can get started at eight. And they say what I think, which is funny, they say it's up to 16,
which doesn't make sense to me. Why would there be an upper limit? But yeah, anyway, you can still
use it. You have to do C++ now. Yes, exactly. What is great about visual programming is that you can
always come back to it. It's not that you progress from these robots to visual programming to textual
programming, but you can use visual programming for doing, I don't know, digital stories and you can
still do textual programming at work. It's just having all these options now is really nice. Yeah,
absolutely. Let's see. We also have Zumi. Zumi is pretty cool. Let's come back to Zumi. I do want
to talk about something that's like a little bit more real similar to the micro bit first is many of
the things over at Adafruit. Are you a fan of Adafruit? I don't know Adafruit. Tell me about it. So this is a
company that creates a whole bunch of small devices like the BBC micro bit that run CircuitPython. There's
just tons and tons of things you can buy. You can buy little sensors and you can buy little
displays or whatever it is that you're looking for. And there's just many, many little ways to make
these projects a little bit more than a micro bit. So for example, you could get one of these ESP32
devices, but it has like a little tiny display on it that you can output your text to. And it costs
$19, which is pretty ridiculous. And they often come with tutorials on how to do it. So if you're
into this kind of stuff, this is like a perfect place to go look.
Also, there's just so much opportunity to learn, even for like being the parent, I would learn so
much from doing this. It would be so valuable to me to learn more about the hardware side of things,
especially because I would never sit down and buy myself a Raspberry Pi. I don't know why,
but I wouldn't do it. Just don't find the time. But if I can do it...
You already have a computer and all that.
Yeah. And if I can do it together with my children, I think that's just amazing. It's really cool.
This is just a general thing about learning with kids. If you learn together with them,
they can also be the expert sometimes, which is amazing for kids. If they can explain something
to you that they understand better, it gives them so much joy and helps them develop this passion and
love for learning. I think that's a great thing about learning how to code that doesn't matter if
you are the best coder, but you can just use it as a way to improve yourself.
Yeah. And once they get that mastery, they're like, oh, now I've gone beyond them. It's probably a
really good feeling.
If my kids want to learn how to code early, like much earlier than myself, they will become so much
better than me so quickly.
Yeah, for sure. I have one of these little devices here. You put it in your hand. It's
certainly smaller than the palm of my hand. And this thing manages the DNS and ad blocking on my
network. It was like 20 bucks or something. Yeah. There's sort of less playful, more interesting.
Also just, you know, utilitarian things you can do with these little things.
Yeah, absolutely.
All right. Back to Zoomy, which is in the same age category, I would say. This is like around 10 years
or so. Yeah.
But it's more robot-like, right?
Yeah, exactly. Like it's a self-driving car kit. Like it's a small car and it has so many
capabilities. You can program it using Python and Blockly. You can even teach it about driving
certain ways by providing your own data sets. So there is a lot of machine learning. Even you can
teach it. It offers so many capabilities or ways to create projects. At my company, we have done quite
a few workshops with kids with Zoomy and they love doing it. And adults love doing it too.
Nice. It's like a self-driving car kit. So if you wanted to try to, instead of maybe teaching it,
you go forward three steps, you turn right, you go forward two steps, you turn left, you teach it.
If you see a turn left sign, you turn left or something like that, right?
Exactly. Yeah. It can really understand or analyze its environment.
Yeah. That's pretty awesome. Okay. And you do events with these?
Yes. That's also maybe advice for people that want to get started. It's always useful to check
out local events that happen at companies that are close to where you live or universities. They do
offer a lot of free, often offer free workshops for kids where you can sign them up to learn about
robotics or coding. And it's can be like an easy way to get them started if you find it hard to do it
yourself. Yeah. I think a lot, at least in the U S there's quite a few programs for like summer teen
programs that do like either 3d printing or, you know, coding with, you know, Lego robots or whatever.
So there's a lot of summer camps and that type of things.
Yeah. I guess that's very big in the U S and Germany. I think not so much, maybe it's growing,
but yeah, you can definitely spend a lot of time doing it. And I know that like we at our company,
we sometimes offer day workshops where you can just start getting to know about a topic or just play
around with things, becoming kids interested in the topic in the first place.
Yeah. That's really neat. Last in the category of hardware here, you already mentioned it though,
is a Raspberry Pi, which I guess is a little closer to just a real computer, right?
Yeah. It's a really powerful device. So it's basically a very small and cheap computer that
runs Linux, but you can use it to learn coding, but you can also build hardware projects with it,
do home automation, learn about the internet of things, but it's recommended for kids starting at 11
years. So quite a bit older because you need programming. This maybe also shifts over to the
next age range, namely when your kids have typing skills and also a more well-developed cognitive
abilities and the prefrontal cortex, which I talked about the CEO of the brain, the development starts
to mature and stabilize. So planning, organizing, thinking abstractly, all these skills become more
fully developed. And you of course need the typing skills to get started with textual coding.
So at the age nine plus, most of the time you can get started with these things, for example,
with like programming Raspberry Pi or just more traditional textual programming languages.
The typing skills is pretty, pretty interesting. I think one that I, you talked about before,
but I think is also super interesting as a gateway to this. This is the best one that I know. Maybe
people know of others as well is code combat.
You did a podcast episode on that years ago, right?
This is one of the ones, like my daughter and I both subscribed to this for a while when she was
younger. We'd go through and we did, I don't know, like, can't remember. I think she did 30 or 40
code challenges through there or something like that, which was pretty awesome. And I also had the
guys on the show. Yeah. It's been a little while.
Yeah, it has been, but it's still, I think it's an amazing resource. So you, a code combat is about
learning how to code through gaming. So you play a game from beginning to end. And while you play the
game, you learn to code in Python or JavaScript. I think there are several languages, but you really
do textual programming. And if your kid likes gaming, or this is something that makes it easier for them to
get started with coding, it's an amazing resource, even though you have to pay for it because you're
really guided through the course. You can have lessons. You can even have, I think, teacher
lessons once or twice a week, dependent on your subscription plan.
Yeah. I think there might be a free tier if you tell it you're a student, but you can only do certain
challenges. Like for example, see this, there's like a locks here and it says, I think, yeah, I have to
subscribe to this if I want to do all, if I want to solve all the puzzles, but there's some of them you
can do for free, I believe. I don't feel like we had to pay at the beginning, but they could have
changed the model. I also played around with it. At least in the beginning, you can try it out for free.
What I really like about this, you know, so if you click on, if you go to this, you click on the things,
it says for this challenge, you're going to learn arguments and syntax. Or if you come over here and you
click on this one, it'll say you'll learn while loops or whatever, but then it gives you just a nice
simple challenge. So it, but what's cool, I'll know in order to play that one, I got to, can I play this one?
Yeah, here you go. So you have this character and what's, oh my gosh, it made that very large.
What's really cool though, is when you, it gives you a little hint, but the editor, here's what I
think is special about Code Combat. The editor is auto-complete like you have never seen.
You know what I mean? So it says, all right, what you need to do is build a fence and you have a hero
and the hero has the ability to say build at X, Y position, or it could move. And if I just type the
letter D, it'll auto-complete like hero dot move down. Or if I say hero build X, Y, it automatically
puts in all the, it's, so if you can type just a couple of characters, it'll keep the syntax, you know,
like the spacing for indentation and block definitions. And all of that kind of stuff is
ridiculous for how you don't even have to really have the right syntax. You just have to put a little
bit of some kind of word in there at all. And it'll, it'll start to write all of it for you, which I
think that's the magic here.
It's nice that you have this insider knowledge by having tried it out yourself for quite a while.
Yeah. It worked way better than other stuff when my daughter was young and I was trying to teach her
like beyond the visual programming things, but it's, it's so forgiving compared to, well, here's your
favorite editor and you start typing. Oh, why won't it run? There's three spaces, not four. Oh, I see.
You know, all that kind of detail you got to normally deal with.
It can be so frustrating in the beginning. If you need to learn about everything at the same time,
like syntax, spacing, brackets, it's just a lot to learn in the beginning. If you just want to
understand the basic concept and like for a start.
Yeah, absolutely. Another thing you put out there was code club.
Yeah. That's, I think a really cool resource by the Raspberry Pi foundation. So it's a platform and
it guides your kids from lesson to lesson. So you start with learning scratch, but then it progresses
onto Python and yeah, you can start, I think at the age of eight, yeah, you can start at the age of eight,
which is also the recommended age for scratch. And this is just an example for a full platform that
you can use to guide yourself or your children through progressing from one thing to the other.
And I think it's also free. So if you start looking, there are lots of online coding classes that you can
use that teach you different things and have a whole program and sets of ideas behind how to approach
different topics.
Yeah. This looks very fun. And the example, at least they have on the screen is using Blockly, right?
Or scratch one of them.
I think it's scratch. Yeah. I think level one is scratch and then level two would be Python and more comes after that.
Yeah. Oh, that's really cool. Another one in this realm is Hedy. I had not heard of Hedy.
Yeah. Me neither. Just when I started researching the topic, why I chose it as an example is that I just like the concept of
gradual programming. So gradual programming means that what I just mentioned, basically, that if you learn language,
speaking or like a programming language, you have to learn a lot at the same time. It can be overwhelming.
You have concepts like loops, if else, and syntax like quotation marks, round brackets.
And in Hedy, it's free, like it's a web-based interface. And concepts are introduced with as little syntax and then refined.
So in the beginning, you can just type print and the text. And you don't have to worry about quotation marks or brackets.
It's just introduced at a later stage. So it mimics the way in which we would learn a language.
And in the end, you like it's based on Python. So you learn a subset of Python, not the entire programming language,
but it's syntactically valid and you have all the right syntax. But for some kids, it might be easier to get started with
having not everything like being part of what you have to quote yourself.
Right. Like learning, oh, whoops, you forgot to close the parentheses.
So it's not going to run or you forgot to close the quote. So it won't work. Something like that.
Yeah, exactly.
Yeah. Kids run into that all the time because they're like, well, I see the words on the screen that I wanted to do,
but no, no, you got to put it in quotes. And why?
Oh, and maybe regarding the age, this is recommended for age 10 plus years. So yeah, when you want to get started with
actual textual programming. So it fits into the third age range that we discussed.
That's pretty much the last limited age range, I guess you would say before you just go and do regular programming, right?
Exactly. From there, you can just progress on to more traditional programming languages.
There are lots of resources like from the Bersbury Pi Foundation. They have Python courses and there are some on Udemy.
If you start looking, there are tons of resources to get started.
There are lots of online and on-site classes that teach kids starting at various ages.
Yeah, I know about a few German offers where you can really find what you're interested in,
which is really important, like make coding fun and learning fun for kids.
So find out what they are interested in, what their passion is, and then find something that fits their interest.
I'm sure there's a ton of stuff on YouTube as well to help people, but at least I'm out of touch.
I bet there's a lot on TikTok actually.
Oh yeah, I'm out of touch with that as well.
Just, you know, you learn one concept every 30 seconds. You just swipe away until you're a programmer.
I should actually look at that probably when talking about coding with kids. I guess that's something that can play a big part.
For sure. Instagram reels or whatever. I think that kind of touches on most of the resources that we have out there.
There's one more I do want to talk about though. And I think this is probably as good around, it's beyond the code combat stage where kids can actually use an editor to create proper valid syntax.
But it's not much beyond that. And that's Anvil at Anvil.Works. Are you familiar with Anvil?
No.
So I've had Meredith create this online on the show. But what's really interesting is it's a way to visually build webpages that are actual real webpages that people can actually, you know, you publish it, your family or your friends could use it.
So if you wanted to build, you know, something like a Harry Potter type thing and you could have your friends vote on which one, which character is their favorite and why or whatever, you know, like you could build this into a web page and publish it.
And with so many of these projects, it's like, okay, I built this cool thing. How do I share it? Or how do I make it look like the thing that I use?
And so you can do this drag and drop, build it out thing. But then you write the front end, the front end interactive code in Python and true Python JavaScript.
And then it has kind of like a simplified database in the backend. So it was like a little bit of like persistence and storage, but it's, it's really cool.
After we did code combat with my daughter, we went and we did this and she built a bunch of things that were like really, she really thought were pretty neat.
She could share with people and have people input little text messages or whatever.
I love that. Yeah. I would learn again. I know very, I have very little knowledge about web programming.
This would be a good tool for me to get started as well.
Yeah. Well, also the problem is even if you're a very good web programmer, it's like, okay, kid, you go from code combat to now you're doing CSS, HTML, database, you know,
like the explosion of complexity to put, and then you do all that. And then how do you even put it on the web?
It's just so out of control that step from one to the next. And so if people want to do anything with like web pages and Python, this is a really cool option.
I think right here.
Really cool. Yeah. And like speaking from your experience, how did you get your kids excited about coding? Did they just like it or do they hate it?
My older daughters, they grew up with less technology because they're older. So at first they weren't super into it, but then they got into college and they had to start learning things for their degree.
And so now one of my daughters is doing a lot with R, which is fine because she's in psychology and that's what all of her colleagues are using.
Which is fine. It's not ideal, but it's fine.
It's not ideal. It's fine. No, I'm not that. No, I'm very proud of her.
I think there's different things that can motivate you. You know, you can just be curious. Like my youngest daughter is like, let's play games. Let's play code combat.
Then she's like, I want to build something for my friend, you know, and so we did this thing with Anwell and she was very motivated, like seek out the technology and play with it.
Whereas my older daughters, I think they, they weren't that interested and they had other things to do, but once they got somewhere with a job or with their education where they needed it, then all of a sudden it was more interesting.
So, you know, it varies by kid, I think.
Yeah, absolutely. And I guess that's fine as well. Not everyone needs to like coding, but just having the opportunity to learn about it and experience yourself if it's something that you're actually like.
I was just so blown away when I experienced how fun it is to learn how to code.
I always thought it was boring and having all these stereotypes in my head because I never actually knew anyone that was coding.
It's nice that they had the opportunity to learn about it at home.
Yeah, it absolutely is. So I think we have a little more follow-up here on the TikTok learning style.
Ty Vass Heather says, you can learn every single short, but you won't remember anything as you flip through them.
Flip, flip, flip, which is probably true.
And then also, Krishan asks, you know, do you think Scratch is good to start with for kids?
Like if you had a kid who was 10, 11, 12, 13, what would you start them with?
Yeah, I would get started with visual programming. I think it makes it easier.
I know that for some kids, it can be hard then to progress onto textual programming.
But I guess this is just a general thing. You need to see what works.
It's not that you, it might be that you start with one thing and you see, actually, it doesn't work for us.
And then you have to switch tracks. And that will happen a lot. And that's just fine.
You need to find your own path through it.
And don't be afraid to actually make changes if you are not enjoying what your kid is not enjoying their work.
I think visual programming is a great and fun way to get started with coding concepts and not have it feel like you're actually coding.
Absolutely. So, Christian's child is 13. I will consider code combat, actually.
I think, you know, 13, you're well enough to do textual stuff if it's not too much drudgery, right?
Like matching braces and quotes and all that.
So maybe if this kind of thing inspires, maybe that as well.
Yeah, absolutely. I think 13 is great for getting started with textual programming as well.
And what is so nice about having large language models now is that lots of these offers are being translated to various languages.
And it is becoming much more easy to get started in your native language, which might not be English.
And then you do not have to learn a language while you learn how to code.
Yeah, that's also, I think, a huge advantage of the current time.
That's something that's always been interesting to me is so many of the programming languages are in English,
but many of the programmers, their first language is not English.
Yeah.
And, you know, maybe like your English is perfect, I'm sure.
You know, forward, while it's no big deal.
But when you're 10 years old, here, you need to learn a program.
Well, by the way, it's in a foreign language.
That's pretty wild, right?
That's got to be challenging.
What was your, like, how do you feel about this?
I mean, you're more in it than I am.
Yeah, I would always start.
Like, if you have the chance, then start in the native language of the child.
And you will definitely find good ways to get started and good offers.
For example, Scratch, I think, is available in lots of languages.
70 languages, actually.
Choose something that keeps the cognitive effort that you need to get started with simpler.
Because otherwise, you really have to learn two things at the same time.
Learning a language and learning all these concepts.
And it can then be overwhelming.
It's not something that I had to deal with.
But looking back, I'm like, wow, I was pretty lucky that I didn't have to
learn what all the keywords meant in addition to just what I was trying to do.
That's also actually why I decided to study in English.
Because I knew all the papers I'm reading are in English.
All the code I'm writing is in English.
It doesn't make sense to study it in German.
It's just weird.
The internet has done some interesting things to just sort of spread everything around globally.
So, all right.
Anna Lena, this has been awesome.
A bunch of concrete things for people to take and work with their kids.
Maybe if they're grandparents, their grandchildren,
or if they're teachers or friends, kids or whatever, right?
Whatever, yeah.
Yeah.
How about some final advice to close out the topic?
Yeah.
I think for me, two things are the most important ones.
Namely, first, don't force your child to learn how to code.
But see if you can find a way that makes it fun for them.
I think making or learning that learning is actually a cool thing.
It's like it offers you or it opens you so many doors in your life that you learn that putting in the effort.
And even if something is complicated, it's worth it.
It's just one of the most valuable skills you can provide your child with.
So, yeah.
Learning how to learn and how to love learning, I guess.
And there's lots of ways in which you can do it.
Choose the right topics.
Be patient.
Sit down with your kids and learn together.
Don't force them to sit down for long times and like rather distribute learning sessions over time.
Don't be afraid to switch tracks.
Lots of the things that apply to adults also apply to children regarding learning.
Very good advice.
I would just maybe reemphasize that people should reward persistence.
Reward it very, very highly.
Like, I can't believe you spent half an hour and you just got, barely got it to print hello.
But that's actually a massive accomplishment.
And like, I'm so proud of how hard you focused and worked on it, right?
That's a big deal.
Yeah.
That's like, it makes a huge difference to two kids.
Probably adults as well.
Yeah.
Everyone.
But you lay the foundation for learning, right?
So if you...
Yeah.
I mean, that expands on to being good at literature or being good at philosophy or like whatever
it is that's hard to learn.
And just believing that you can learn anything.
Yes, exactly.
And the other is to try to capture inspiration.
If they're like really, really excited and they really want to learn a thing at that moment,
then you could introduce some of these tools.
But if they're like, I want to go outside and play with my French, you're like, no,
come in here, we're doing coding.
Like, maybe that's not the moment, yeah?
Exactly.
Yeah.
All right.
Thank you for taking the time to put this all together and coming on the show and nice
to have you back.
So...
Thank you.
Yeah.
Thanks.
Bye.
More at talkpython.fm/workos.
Want to level up your Python?
We have one of the largest catalogs of Python video courses over at Talk Python.
Our content ranges from true beginners to deeply advanced topics like memory and async.
And best of all, there's not a subscription in sight.
Check it out for yourself at training.talkpython.fm.
Be sure to subscribe to the show.
Open your favorite podcast app and search for Python.
We should be right at the top.
You can also find the iTunes feed at /itunes, the Google Play feed at /play,
and the direct RSS feed at /rss on talkpython.fm.
We're live streaming most of our recordings these days.
If you want to be part of the show and have your comments featured on the air,
be sure to subscribe to our YouTube channel at talkpython.fm/youtube.
This is your host, Michael Kennedy.
Thanks so much for listening.
I really appreciate it.
Now get out there and write some Python code.
I'll see you next time.