This article is the sixth in our new series of blog posts for 2019 – posts exploring topics from the perspectives of our expert instructors. Subscribe to our blog to read analysis, programming tips and overall thoughts, straight from our instructors. This month, Phil Williams, Software Guild .NET/C# Instructor, explains how to turn a bright-eyed kid into a budding software developer.

In my time teaching at The Software Guild, I have instructed a wide range of students, from those who came straight from high school knowing exactly what they wanted to do to people near retirement simply looking for a change of pace. My students usually share varying degrees of three key attributes: pattern recognition, creativity and a thirst for knowledge. When those elements are present, effective learning can happen.

So, when a bright 6-year-old in my life began to solve video game puzzles in the blink of an eye, create his own board games and ask questions about how the inside of a computer works, I knew I needed to give him an outlet to explore his interests. The three keys were there, and I realized he might enjoy programming.

“I Wanna Be Like You When I Grow Up”

When I started dating my partner, it was a package deal that included her young son, whom I will call “Z” during this post. I’ll avoid cliché statements, and just say he is very smart compared to others in his age bracket and does math and reading at least a grade level higher than he is. Proud parent moment!

He is fascinated by my job, and associates programming with being able to make video games. Basically, he thinks it’s the “coolest job ever.” Z came to me one day and asked me to make a video game for him, and I blew his mind when I told him that he could learn how to make them himself instead. From then on, every dinner conversation was focused on the latest great idea he had, and so began our search for a way to satisfy his curiosity

We started out with a learning laptop filled with mini games for him to “hack.” Through using both a drop-down menu and modifying the values of variables in code snippets, these games allow students to manipulate the size of objects on the screen or the speed at which things move, etc.

While Z had fun with this for a while, he quickly got bored when he realized he wasn’t creating anything on his own. He began constantly asking for more advanced projects, so I began looking for new resources.

A random trip to the bookstore netted me a book, How to Code In 10 Easy Lessons by Sean McManus, that I thought could do the trick. I knew this challenge would require me to do a bunch of reading for him, as he is entering first grade next year and the book is aimed at third and fourth graders. Even though his reading skills are still developing, his memory and pattern recognition skills are strong, so I knew he would be able to learn from McManus’s book.

Scratch-ing the Surface

While the book gives an overview of other languages, the tool for the job here is a language built into a web browser called Scratch. The system is very simple. You have Sprites (pictures) and Backgrounds that both act as containers for code. There is a menu on the side, color-coded by related event types, that you use to drag and drop snippets of code onto the code-box. Young people can use dozens of Sprites and Backgrounds to keep their minds engaged and learn new skills. Scratch also lets users create projects using a free account, then share them with friends and family who have access to a web browser. (Interactive Christmas cards anyone?)

scratch sprite library

As I looked through the book and then messed around with Scratch prior to teaching Z, I remembered my first experience with programming inside of the Starcraft Map Editor. (You nerds know what I’m talking about!) For those not familiar, the computer game Starcraft had a program that included all of their maps and visual resources. With Map Editor, you could create your own game through the same type of drag/drop system that Scratch is using today. I spent hours as a teenager trying to make my own game based off the television show Survivor. While I never managed to get my idea off the island (see what I did there?), it gave me a creative outlet and taught me how to attack problems one step at a time.

Chasing Knowledge (Literally)

My first adventure with Z had us make a cat go across the screen and back, then have it play some sounds when we pressed specific buttons. The code-along made it pretty easy to do, but that simple program unlocked his confidence and creativity in a way that excited us both, showing just how much potential he had as a budding developer. We proceeded to add a dog onto the screen to chase the cat.

My first adventure with Z had us make a cat go across the screen and back, then have it play some sounds when we pressed specific buttons. The code-along made it pretty easy to do, but that simple program unlocked his confidence and creativity in a way that excited us both, showing just how much potential he had as a budding developer. We proceeded to add a dog onto the screen to chase the cat.

ESRC: Explain, Show Repeat, Challenge

When asked to write this post, it was suggested that I focus on how I planned to apply the teaching methods I use with adults to my activities with Z. In thinking about this, I realized that while the content may be different, the approach is basically the same:

1. Explain the concept: When we introduce new concepts to our students at The Software Guild, we explain them in a big-picture way. When explaining to Z how the “forever” loop worked, I explained what it did and why to plant the seeds of understanding.

2. Show the concept: In The Software Guild’s program, the big-picture concept is followed up with an example. If we are talking about loops, then you are going to see some examples of loops, build your own and try them out. After explaining to Z how the “forever” loop worked, we followed the book and created one, and he giggled when his cat moved back and forth “purr-fectly” across the screen.

3. Repeat the concept: Here is where the true learning begins, whether you’re six or 60. After you’ve heard it and seen it, we then ask you to repeat what you’ve seen on your own. To continue with our example here, we may challenge you to create a loop that repeats 10 times and does something each time without looking at past work. For Z, we went outside of the book and I challenged him to add the dog. Without needing to look at the cat code, he brought all the parts over, remembering the shape and small words. Before he even knew he was programming, he had a classic cartoon happening on his screen.

4. Challenge the concept: Now we see if you really get it. By adding a step, changing a rule or combining with another concept, an entirely new challenge awaits. In The Software Guild’s program, we may ask you to take in a user input for the number of times a loop should happen. Then, inside that loop, we ask you to print any even numbers you come across. Ideally, you do this without using code from step two or three, showing that you’ve locked in all of those ideas. For Z, this happened in the form of me asking him what he wanted the program to do. When he told me he wanted them to chase each other across different backgrounds, we talked about how we’d make that happen. When the animals hit the right side of the screen, we would change the background to a different one and move the animal to the far-left side of the screen to make it look like they ran into the next room. While he had lots of guidance from me, you could see the light bulbs go off in his head, and his bouncing in the chair was a clear indicator of his excitement about making these ideas come to life.

Fun, the Most Important Lesson

As I said, Z and I are just getting started, so there is plenty of learning to go. However, the one thing Z has taught me so far is something I think I had forgotten somewhere along the way: Have fun. I know, the idea of writing a piece of software that captures the weight of potatoes, for example, isn’t very a-peeling (See what I did there this time?) on the surface, but you can mash in (Yes, now I’m trying too hard.) some fun while you are learning new things.

Z is writing games, so it’s easy for him to have fun. But who is to say that you can’t take the loops from my earlier example and come up with something fun from that? Do what brings you joy and what makes you excited to learn! If you are into playing cards, bring blackjack to life through programming. If you have a huge collection of comic books, make a program that helps you inventory them all. And if you just want to watch a picture of a dog chase a picture of a cat around on the screen “forever,” you now know you can use Scratch to make that happen!

The Fun Continues

Z has a dream of making games, and we are excited to continue our journey through this book to give him the tools and skills he needs to make it a reality. Peeking ahead, once we get past the basics, we will be creating a “Donkey Kong” like platform game that I know will both cause him to bounce excitedly in his chair and more importantly expand the outlets for his creative mind. Some kids color in books, others build with Legos, but this one wants to code! (Programming is 99.99% less hazardous to your feet in the middle of the night…theoretical fact!) We’ll keep collaborating, and in a few months I’ll be back with an update on how he has progressed – and what I have learned along the way