Teaching Young Minds How to Code: A Journey of Personal Rebranding and Sharing Knowledge

Magdalena Sibila
Jit Team
Published in
6 min readMar 2, 2023

Few months ago my daughter asked me: “Mum, can you teach us how to code?”. That is the reason why every Friday afternoon I stand in classroom and try to teach four twelve year olds how to program. Ala is my daughter — she wants to be a programmer. Wiktor — he likes computers and wants to know them better. Natan — invited by Wiktor to our classes. Olek — a great mathematician interested in science.

In 2016, I decided to change my professional life. Before, I was an editor in an education publishing house. Now, I am a test automation engineer with five years of experience and I am working for one of the biggest European Bank. The process of my personal rebranding posed a significant challenge to me and had a profound impact on our family life. Throughout the journey, my children witnessed my growth as I acquired new skills, found employment, and flourished. They were even among the first to test and use the projects I developed as a student.

When my daughter’s computer science teacher left the school, she recalled that I had graduated with a degree in pedagogy and asked me a question: “Mom, could you teach us how to code?”. Although I was no longer a teacher, I agreed to conduct extracurricular activities. I like teaching, interacting with young people and sharing knowledge. And I’m also aware that the computer science curriculum in Polish schools may not be particularly beneficial for future computer scientists. That curriculum focuses more on computer usage rather than programming or servicing. My aim is to show them that computer is not only for spending free time and surfing the net, or for working, but also to create something and have fun with it. Also, I would like make them aware how computers work and how much effort is needed to produce even a small application.

If somebody wants to be a software engineer, they need to practice creativity, develop analytical skills, and solve problems. I hope my students will develop and use those competences. Coding in a particular language (C# in this case) is not so important as understanding what we are doing and why. It is very possible, that they would not need coding skills, because working in IT still evolves and pure writing of code will probably be replaced by AI. But critical and design thinking they could use in every career.

How smart is a computer?

Those kids (don’t tell them, that I call them like that) know Scratch well and can make really beautiful applications in it. During additional classes for last six years they prepared a lot of projects — ranging from simple animations to games with a few levels (still quite simple, but you know — they were only ten). As I observed my daughter, she would say things like, “Try with that green puzzle and then use the red one. Change that number to six. Now it should work”. She was talking about a loop. She used it correctly, but she definitely couldn’t name it and didn’t understand, how it worked. So, they were able to effectively use a tool to bring their ideas to life, but they did not know how or why it worked in that particular way. It was more intuitive than deliberate.

We don’t use Scratch, Minecraft or any other tool created for teaching kids how to program in an amusing and entertaining way. Instead, we learn C# in .NET 6 and use Visual Studio as an integrated development environment (IDE).

Before kicking off our first class, I was almost sure that they would come only once. Black console and coding with key phrases instead of Scratch elements could seem to be boring and as everybody knows teenagers don’t like boring activities.

On first class I had five students. One boy asked me, if we would create some game and I knew he didn’t ask me about snake game. “Maybe we can create a mobile game?” he asked, to which I replied “No. First you have to understand, how computer works”. He didn’t come to the next class. And it is OK. Don’t get me wrong, I could find an application to create games (as I said — they already know Scratch) but it is not my goal to show them yet another fun app. I want to show them what is inside — inside every program on their smart devices, at the bottom of beautiful graphics.

In the first exercise, they got to know Console.WriteLine() and Console.ReadLine(). Also, they needed to learn how to declare one variable, operator ‘=’ and string interpolation. They didn’t write default “Hello, word”. Code looked like this:

Console.WriteLine("Hi! What is your name?");
var name = Console.ReadLine();
Console.WriteLine($"Hello, {name}. Nice to meet you");

Result looked like this:

They ran the program and Wiktor said: “It is smart. It talks to me. I said my name and it uses it”. I was so surprised with his reaction.

Young people live in an online world. They play, talk, watch, and learn with the Internet. They heard about AI. Probably they talked with some bot. Probably it was ChatGPT. They think computer can do everything and its reaction is smart — it understands us and can react in a clever way. However, I wanted to show my students that computer does only what it is programmed to do. So, I asked him to change third line to:

Console.WriteLine("Ala has a cat");

And that was the result after the change:

This sentence in this context doesn’t make sense (and Ala, my daughter, doesn’t have a cat). Computer wrote exactly what was in parentheses and Wiktor understood that it was no brilliance of his laptop, but a good algorithm. (;D)

Why did they stay with me?

It is the beginning of their adventure with a world of programming and I have opportunity to see, how they discover the magic of coding.

When we opened IDE for the first time, they looked terrified. This is a huge, powerful tool with expanded menus. My teens did not understand terms and all what they could do was repeating my moves. But they added spaces, when they copy code, they looked for some characters. Every underline was treated like mistake that could break… computer? Program? I’m not sure, but they behaved like something would explode.

On my side, I was afraid, this way of working will be ectypal and they would only copy something what is already done. We are working very slowly, because I am trying to show them each element from different perspectives. We modify, remove, add. I repeat words like “variable”, “method”, “string”, “int”, “decimal” hundred times. After the third class, they already know to check semicolons if code doesn’t work. They try to make the best of IDEs — use a tabulator to finish commands for them. They play with code — change variables and test results. They think about proper names. And — and this is great — they try to help each other.

At the beginning I thought that coding was boring for teens. I misjudged them and forgot that learning something new can be a sheer pleasure. And maybe I forgot to mention, that it is not only writing code, but first of all it’s about solving problems and deriving great satisfaction when they find a solution. They reminded me of all the things about my passion for computer science.

I do not think they need a lot of theory, so I chose project-based learning and slowly adding new terms into their vocabulary. Practice is more effective and gives more fun. Students agreed to create calculator, because they think it is easy. They know, how it works (well, they think, they know it). They are skilled in mathematics and can verify their results on their own. Additionally, since they have a good sense of what the end result should look like, there may not be a need to create something entirely new. The first template was pretty easy and worked in a console. It was capable of addition, subtraction, multiplication, and division, and the results were accurate (which they verified using their smartphones). Currently, we are working on creating an application with a user interface, which I will discuss in my next article.

--

--