I recently completed with my first Hour of Code experiment with a young friend. I intentionally did not explore too much beforehand, wanting to experience the learning process alongside the girl (I will call her Z). I was curious what I would learn by watching a young digital native engage with coding.
Z is 10 years old, and currently a fourth grader at a Waldorf school. Waldorf schools discourage children’s use of technology at school and home. Her family takes an inspiring approach to this recommendation. They choose to not completely swear off technology, but rather to have regular conversations about when and why technology can be appropriate. Thus, Z does not use computers or watch media at school, but she engages in these things very minimally and very mindfully at home. This provides an interesting context for coding with her: She is technically a digital native, but does not actually engage with digital media herself very often. Here’s a little bit more about her:
- She loves animals, and wants to be a vet when she grows up.
- She is endlessly creative and self-motivated, loves art, theater and making all different types of things.
- She insists on solving real world math problems in her head when they present themselves (before adults can tell her the answer).
- She is compassionate and thoughtful. As long as I’ve known her, she has used gift-getting holidays as opportunities to raise money for animal charities.
- She loves reading, and has been known to read a novel per day.
We began by watching the Hour of Code Video Introduction together, which got her excited about being one of “10 million” students to try “An Hour of Code” (and the number is currently much higher).
Code.org offers several different tutorials that students can try. We looked through several together, and I asked Z to choose which one looked the most interesting to her. I’ve personally been a bit wary of the Disney-sponsored Frozen-themed tutorial that has been promoted this year (another blog post for another day), so I felt personally excited when Z bypassed the princesses and chose the one titled Write Your First Computer Program.
The tutorial was pretty simple, and the instructions were easy to follow. The biggest challenge at first was to figure out all the tiny details, like making sure your character is facing the right direction before making him walk forward.
How it works
In the example below, if you want your little cartoon zombie to eat the sunflower, you need to first make him walk forward, then make him turn left, then make him walk forward, then make him turn right. This needs to repeat six times. If you make him turn before walking forward or walk forward too many steps, he will walk off the path and fail in his mission.
Perhaps the biggest challenge for Z was the very same challenge that I encounter when I’m doing Codecademy tutorials…you have to conform to what the tutorial wants you to do. Once you learn the basic concepts, the naturally creative person wants to explore and play. You can do whatever you want in the tutorials, but when you run your code, the program won’t let you move onto the next level until you do what it’s asking. It was about halfway through the tutorial that Z started wanting to do her own thing.
A born hacker?
At one point, the tutorial wanted her to make the zombie move around the course in a “C” shape by using a “repeat” block with “move forward” and “turn right” inside (rather than stacking several “move forward” and “turn right” blocks on top of each other). This means that you can use only three commands to get the Zombie to his goal, rather than six. Z knew exactly what the tutorial wanted her to do, but wanted to do it her way. She did what the tutorial was asking by incorporating the “repeat”, “move forward”, and “turn right” blocks, but insisted on creating a repeating loop of “turn left” blocks at the beginning, to make the zombie do a little dance before completing the course. Thus, she did what was asked and completed the goal, but in her own way. Creativity ruled the moment!
Urban Dictionary defines “hack” as: “a clever solution to a tricky problem”, or “to mod or change something in an extraordinary way”, and I realized that perhaps Z was a born hacker. She was determined to complete the goal, but sought her own rules of engagement, which made me proud!
After completing the tutorial, I sensed she was ready for a more open-ended experience, and introduced Scratch. This was another program that I myself had not played with, and quickly learned that it was pretty complex! It uses the same visual block format, but with tons more possibilities. You are basically given a blank canvas to use to create, which is a little overwhelming at first. Fresh off the tutorial, Z’s first reaction was “I don’t think I get this”. This was interesting, because she didn’t like the confines of the closed-ended tutorial, but was then intimidated by the completely open-ended one. I just repeated the following a couple times: “This one lets you do whatever you want. You just have to play around and discover the possibilities” It took her all of about 10 minutes to get past her intimidation and figure out some basics (as I sat and watched in awe), and after about an hour she had created a video entitled The Mosaic Cat and the Cheese Puffs:
I couldn’t believe that in such a short amount of time, she had figured out how to layer two different scripts that combine several different types of commands over a background. The “inside” (code) of her program looks like this:
“When you make an account and share your work in Scratch, other people can find it and see it. They can leave you comments or “like” your project. It might give them ideas about their own projects, or just make them laugh. They can also add their own creativity to your project by starting with your code and modifying it according to their own ideas. Then they can share it back with you and you can see what they did. You can write each other messages and talk about ideas. This is what ‘open-source’ means…it is a way of sharing and collaborating on coding projects. When everyone works together, the end results get better and more interesting.”
- There is a time and place for guided instruction, but also an important time and place for open-ended exploration. What is the balance?
- This video was the product of a fairly open-ended exploration…an experiment in combining different elements to see what they do. How would Z react if I asked her to define and plan a goal first and then try to figure out how to execute it?
- What would we learn by spending time looking through other Scratch projects to see what others have done?
- Could we find a project we like, start with their code and modify it?
- What new thinking would be inspired if we invited another similar-aged friend to explore Scratch together with Z?
Interested in learning more about digital nativism? Check out the article “Digital Natives, Digital Immigrants“, by Marc Prensky.