Lessons Learned from Teaching a 6-year-old

apple and blocks on desk

How did I learn these lessons?

I am certain that I am not unique in this aspect of life where I have a 6-year-old family member that is interested in video games. This person just so happens to be my nephew. One afternoon we were together the younger kids were napping, so we had to find a quiet activity to do. Given that he is interested in video games. I asked if he wanted to learn about how they are made. He was wholly not interested in this it sounded like homework. So I ignored his lack of interest and began to write a simple tic-tac-toe game.

After a few minutes of boredom for him then decided to come over and see what I had going on. This was how I learned number 1:

Do not ask them to come and learn, let them come to the learning.

We first talked about how there are different languages that people speak. He gave me some examples: English and Spanish. Then we talked about there are tons of languages that computers know how to speak if we set them up to speak them. We rattled through some of the more popular languages, I made it a point to pick out languages that are named with words that he knew or would sound familiar. Such as Python, Java, Duck, and of course C#. He thought it was really funny someone named one language Duck. This is where I learned number 2:

Make it age-appropriate funny.

Now that he understood you can teach a computer a new language. We began to build. I suggested that we build tic-tac-toe. As it's a simple game we can easily translate it to a command-line implementation. There is little to no setup or boiler-plate code to write with a command-line implementation keeping it more interesting. Another plus, he already knows the game inside and out. This is where lesson number 3 comes into play:

Select a topic they already understand extremely well.

We started with printing the board to the console. He was pretty amazed by this. How quick and easy it was to generate a tic-tac-toe board and print it to the screen. We then needed to assign each space on the board an address. I described this would be used for the players to select which space to enter their game piece. We had a scrap piece of paper on the desk next to us. So I had him draw out the board, then assign each space a number. He was not 100% sure why I was asking for this task. He thought it was just an exercise of counting to 9. But, it was easily completed and gave us a piece to discuss how our programming language starts at 0. This is lesson 4 :

Use drawing to communicate, especially the pieces they understand.

Since he was able to draw and number the grid, this provided confidence in his understanding of what we were going to tackle. Then all we had to do was layer on the difference in counting. For us adults, this is a trivial task, however, he had never counted from 0. Why would he have done this in his short life? Having the drawing he fully understood the changes I showed him the subtract 1 from each location. After the first example, he did the rest. Now we both have a mutual understanding of the numbering scheme for the game spaces.

Next, we tackled the rules. Again, the goal here was to define a mutual understanding of how the game works. With each change of the rules, we would build the game and take a look at the information being printed in the console. I found this to be a great lesson learned, too important to get lost in a list of lessons learned. This was an overarching rule of teaching the young learner. This quick feedback was amazing, with each build and restart of the game he was able to see the changes we had made. No context in his head had to be maintained. We could just see it, then move on to the next small problem to solve.

Once all the rules were declared, it was time to build out the game logic. I quickly shelled out the game loop reading the user input. After each input by the user, the game loop would re-print the updated state of the board. While writing the game loop I would talk him through the pieces at a high level. Such as defining what a loop was. As the game loop was wrapping up, his attention was hanging by a thread. I'm certain that there is a lesson in here, however, I have not been successful in completely defining it. Back to something more engaging. We decided to play the game on paper, then enter our moves into the game we were writing. This way we could compare and contrast, seeing where our game had bugs.

He found it pretty fun locating the bugs in the software. The most apparent one, the game loop never terminated. It would go on forever. So we had to talk about how to terminate the execution of the game loop. Not sure he fully understood, but he was interested in the idea of terminating something. We chugged through some of the bugs. The easier ones where we could get quick feedback, he hung in there for. It was then that lesson 5 came to be successful:

Ask leading questions on what needs to be done next.

As the concepts escaped him the leading questions brought him back into thinking about the game as if it was on paper. I didn't want to give him the answer. If that was the case I probably would not have written the game, to begin with.

When it came time to write the logic to determine a winner he had enough. Rather than push the matter, he drifted away for a few minutes while I chugged through it. Just as I had learned in lesson 1, he came back to see how far we had gotten. By this time we were ready to play full games. Playing tic-tac-toe went on for some time we even got a couple of others involved in playing. The last lesson of the day :

The learner should take a break.

Overall, he was pretty proud of what he learned in the little bit of time it took to build the game. We both learned quite a bit. Best of all we had fun doing it. I already have plans to get some other projects staged up for the next time we have this break to play and learn about the software.

The Lessons Learned

The fundamental learning here above all other lessons learned is quick and easy feedback loops. This was critical to maintaining the engagement of the young learner. The quicker we transitioned from discussing how we're going to approach a problem, to information on the screen. The more excited he was to tackle the next problem set.

Do not ask them to come and learn, let them come to the learning.

The seemingly simple lesson to learn, perhaps this is more of a reminder for those of us who have (or have had) young kids. There are very few kids who think forced learning is fun. However, if they see something interesting. They forget that learning is even happening. At this point, they are just having fun. So keep it light, show them you are having fun doing this activity. They will pick up on the fact that you are having fun and curiosity will take over.

Make it age appropriate funny.

Making it appropriate goes without saying much more. But, funny? Why? Kids love to laugh and have fun. After all, they are kids! The more laughter we were able to have during this, the more fun it became. We were able to laugh at things outside of our control, then laugh at our own mistakes. Laughing doesn't prompt the learner to second guess if they are having fun. We are laughing, what isn't fun about that?

Use drawing to communicate, especially the pieces they understand.

For most problems, drawing is a great way to communicate. When with a younger learner, the first drawing allows for them to gain confidence in their understanding of what we are going to be doing. Even if it's just drawing a simple tic-tac-toe board. As the concepts get more difficult, we can fall back onto the original drawing amending it. Adding more layers on top, furthering the understanding to new areas. As you keep coming back to that drawing, they see the changes made over time.

Ask leading questions on what needs to be done next.

Most likely if you are reading this, you can solve tic-tac-toe in your head. Not a difficult problem. But part of what I was attempting to accomplish is to teach the learner how to think with a problem-solving mindset. If I had only asked him What is next?, it would be difficult for him to understand. In some aspects, the game appeared complete. So the answer would have been Nothing.. When in reality, we know there is always more that could be done. Asking the leading questions allowed not only for his input, increasing overall engagement. It also was guiding him towards an area that needed work, building some of that confidence we have been discussing.

The learner should take a break.

Everyone needs to take a break sometime. When the firehose is open and knowledge is coming your way, that break sounds nice. Younger learners are no different. This gives them a chance to quickly recharge the batteries. Then it gave me a chance to quickly get through some of the work that may be over his head. Or the chance where attention would be lost in a pit and never recovered.