It was a cold winter day. The temperature in my place was around -5 degrees Celsius (outside, of course).
I was sitting at my computer, trying to solve a deployment problem with my application, when my son came into my home office. He sat off to the side and watched quietly for a while.
“What’s up, son?” I asked, turning my attention to him.
“Dad, what exactly are you doing here?”
I began explaining to him that I was programming. We talked for a bit, and in the end, he said, “Dad, I want to be a programmer like you!”
At that moment, I felt a spark of satisfaction and pride run through my entire body. I’m sure there was a **twinkle in my eye.**
## TL;DR
- Teaching kids to code isn’t as easy as sharing your programmer passion
- Start with visual block-based coding (like Scratch) instead of text-based languages
- Use learning platforms like code.org rather than creating your own projects
- Create consistent session structures and rituals for better learning
- Visualize abstract concepts and break complex processes into smaller steps
- Be patient — learning happens about 150 times slower than you might expect
- Prioritize fun and enjoyment over rapid progress
## First computer and playing games
It’s amazing how children try to imitate their parents, isn’t it?
I said to him, “It’s time, my son. It’s time for you to have your first **computer**.”
Up until then, I’d tried to keep him away from the cyber world, from phones and computers. But if he wanted to be like Dad, well, there was no point in delaying anymore.
And so my son got a **Raspberry Pi 400**, which was supposed to be the beginning of his programming journey.
But of course, we started with playing games. (I bought PiMiga — an **Amiga** emulator for Raspberry Pi — and we played quite a lot, but that’s a topic for another story, I think.)
## First program
After some time, we started programming. On a Raspberry Pi, you can easily begin writing **Python** code. Our first program was about counting how much time we spent playing on the computer.
My son really likes **Super Mario** and math, so we created simple programs on these subjects. I tried to make it interesting for him.
What’s funny is that this was also my first time coding in Python. For some reason, I had been avoiding this language before, but since then, I’ve actually grown very close to Python.
## Things become boring
After the initial excitement, problems appeared.
“Can we play this? Can we play that? But why do I have to turn it off now?” These were questions from a child who had already forgotten that he was supposed to become a programmer.
Ah, these games — had they ruined everything? I tried to **educate** my son about how long he could use a computer and how to use the internet safely. Despite this, he was losing interest.
Unfortunately, there was a competition: **programming vs. gaming**, and programming had no chance in this fight.
And that’s how I came to the conclusion:
## Teaching kids programming is demanding
I realized how naive I’d been to try teaching my child programming without any preparation.
We were struggling with:
1. **Abstract thinking** — It’s hard for children to connect abstract concepts like loops, variables, and functions with real life.
2. **Motivation** — My son wanted to see results immediately, but coding often requires patience before seeing outcomes.
3. **Excessive Screen Time** — Five minutes of actual programming required more than half an hour in front of the screen because I needed to explain concepts first, provide encouragement, demonstrate examples, and of course, allow time for games.
4. **Teacher competency** — I wish I were a good programming teacher, but I’m not. Programming and teaching programming are two different skills. Additionally, teaching adults how to code is quite different from teaching kids. There’s simply no way to be an effective teacher for children without proper preparation.
Press enter or click to view image in full size

Teaching kids programming is demanding
## The second chance
I can sum up this first period of teaching as a difficult start. But it’s not that bad — I showed something to my child, drew conclusions, and we can continue.
This is what I learned:
### 1. Block-based coding is better for starting than text-coding
Instead of starting with Python, I could have used Scratch and similar interactive tools that teach programming in a more visual way.
Block-based environments allow children to see programming concepts represented as tangible elements they can manipulate, making abstract ideas more concrete and approachable.
### 2. Use established learning platforms instead of creating your own projects
I initially thought I would easily come up with interesting projects and coding ideas. However, it wasn’t that simple. Now I use platforms like [code.org](https://code.org/) and [koduj.gov.pl](https://www.gov.pl/web/koduj) (a Polish resource) to guide our learning, and it’s much more effective for both of us.
### 3. Build rituals and repeatable session structures
I’ve noticed better results when my son knows exactly what to expect from each lesson. Having a consistent structure for what we’ll do during the session and afterward creates a sense of familiarity and security.
Additionally, I now spend more time reviewing what we learned previously, discussing what we’re working on currently, and previewing what comes next. These regular summaries and repetitions have proven remarkably effective.
### 4. Visualise concepts and simplify complex processes
I try to relate abstract programming concepts to familiar, concrete objects or experiences. Analogies help connect new information to my son’s existing knowledge base, making difficult concepts more accessible.
When something is challenging to explain, I break it down into smaller pieces and tackle them one by one. This step-by-step approach prevents overwhelm and builds understanding progressively.
### 5. Don’t force anything
Learning works best when it’s fun and enjoyable. The hardest thing for me to accept was that the pace of learning is about 150 times slower than what I would prefer as a teacher. However, I’ve learned that adapting to my son’s pace and finding joy in the process leads to more sustainable progress.
Press enter or click to view image in full size

Lessons Learned
## Good luck!
Teaching programming to kids requires luck, considerable strength, and abundant patience. I wish you success on this rewarding journey!
And may your child become an even better programmer than you! ;-)
If you are interested in learning how to teach kids programming, please check out my learning roadmap: [https://frodigo.com/Garage/Programming+for+Kids](https://frodigo.com/Garage/Programming+for+Kids)
---
*Published 07/04/2025* #blog #ProgrammingFundamentals #Python #BestPractices #ConceptExplanation #CaseStudy #Beginner