September 23, 2017

Subscribe to SLJ

Of Coding and Compassion


“I don’t get it.”
“This is too hard.”
“The computer is broken.”
“I’m never going to be able to code.”

And that’s just what we have to say.
Many of us begin learning code with a fixed mind-set that says, “Everything is as it is now, so if I don’t know how to code, I never will.”

A growth mind-set says, “I don’t know how to code, but it matters to me, so I will find ways to learn it.”

Psychologist Carol Dweck explains these two outlooks in her book Mindset: The New Psychology of Success (Random, 2006). According to Dweck, a belief in the process, not innate talent, drives the growth mind-set.

“People may well differ in intelligence, talent and ability,” Dweck noted in “The Secret to Raising Smart Kids,” a 2015 Scientific American article. “And yet research is converging on the conclusion that great accomplishment, and even what we call genius, is typically the result of years of passion and dedication and not something that flows naturally from a gift.”

Most of us have spent very little time with coding, and it’s important to recognize that mastering it takes a long time, but that we can begin learning any time—especially if we adhere to a growth mind-set and help our students do so. That’s where compassion comes in. As we teach, we have to remember that coding can be hard—and that moving from a fixed to a growth mind-set is hard, too. We also need to teach about the kind of self-care that lets us benefit from—not run from—mistakes.

Learners conditioned to a fixed mind-set often think in absolutes: “I’m not good enough to make the computer do this” or “The computer is not good enough.” It’s no fun being stuck in this way. It takes compassion, more than logic, to overcome it.

Of course, changing a mind-set won’t answer everything, and we can’t ascribe every obstacle to a fixed mind-set. Kids in crisis need a safe space and community of caretakers, not a lesson on debugging code. Prejudice must be eliminated everywhere.

However, if we want to learn how to teach code, we must believe that we—and our kids—can do it. We can help by acknowledging students’ frustration and suggesting concrete, accomplishable steps forward: “I understand how you feel. I felt the same way and I want to help you feel better about coding. Can we look at this together? How does this look compared to the example? See anything different?”

We can show compassion through our interactions with kids in class and in planning curriculum and lessons. Drawing from my experience as a teacher and curriculum developer, here’s the best practical advice I can give about teaching code.

4-week Online course

“Code Your Library”
April 20–May 11, 2016

Learn how to create meaningful tech programming for your library in this four-week online event and workshop. Speakers include Mitchel Resnick and Natalie Rusk from MIT’s Scratch Program, Kim Wilkens of Tech Girls, Alberto Tornes of All Star Code, Chad Sansing from the Mozilla Foundation, and more.

Registration is $250; LEARN MORE

Find help in the community. Look for local meet-ups that can help you learn to code, practice inclusivity in coding, and connect mentors with your kids. Help broker learning experiences for your students outside of school so that their work with coding spans borders and gains relevance.

Learn one thing at a time and teach one thing at a time. Pick activities that make something observable happen on a screen or in a circuit.

Prepare. Know how to do what it is you’re going to teach. Get a handle on what’s happening conceptually, as well as what to type. Keep track of your mistakes and be ready to talk through them with kids during the lesson.

Start each lesson with a simple, brief description of what you’re about to do. For example, describe a lesson with something like, “Today we’ll make a button on a web page you can click to tell a joke.”

Follow up with an illustration or video explaining the big idea. For the above, you could share something like a drawing of a pool of jokes connected to a button connected to a speech bubble containing one joke.

Kick off student work with a hands-on, participatory activity modeling your technical concepts IRL (in the real world). Build something; draw; play a game. This helps creates a shared metaphor everyone can pull from later in the lesson.

Demo everything. Talk through and do a “think-aloud” for each step you take. If you do something like switch between windows, let your learners know why you’re doing that.

Work through the lesson step by step. Make sure your text is big enough for everyone to read, and stop to answer questions as they come up. You’ll help convince students that they won’t be abandoned during lessons on code.

Test your work on screen, frequently, to see what works and what’s broken. Talk through trouble-shooting. Celebrate mistakes—“bugs”—and ask for kids input on how to solve them.

Encourage kids to mess with the code in order to find out what happens as a result of their work. Breaking code is a great way to see how it works.

Allow students to work ahead, as long as they continue to tinker and mess with the code once they finish. Be clear that you will help them if they get stuck, once you’re done demonstrating the lesson for the class.

Let kids look around online for examples of code that does things they want to learn. A lot of the learning happens when they can imagine doing something, but don’t know how. In such cases, coders go online, find solutions to similar problems, and adapt others’ code for their use. Coding isn’t an isolated task.

Diagnose the best way forward. Sometimes that means letting most of the class play with the day’s learning while you repeat a demo for a small group that needs it—or working side-by-side with the last few students who need help. You can’t go wrong offering the most support possible to the largest number of learners.

Ask kids how to improve your teaching after each lesson. Figure out what works and revise lessons around the pillars of engagement and meaning-making that reach the most students.

Start coding here

Arduino Simple circuits that do stuff in the real world. Studio Learn the basics of using a computer before you code.

Hummingbird Build simple robots and control them with block programming.

littleBits Prototype everything from robots to synthesizers to practice computational thinking and circuit design.

MaKey MaKey Connect real world objects to programs on your computer.

Mozilla’s Web Literacy Basics Get a feel for code on the web through playful, participatory online and offline activities.

Scratch Join this robust online community known for leading the way on block programming.

Educators to follow on their coding journeys

Rafranz Davis, executive director of professional and digital learning at Lufkin (TX) ISD and national leader on equity in technology education. @RafranzDavis

Colleen Graves, high school librarian and maker educator. @gravescolleen

Claire Shorall, manager of division-wide computer science education and peer-to-peer computer science professional development leader. @cklshorall

Kim Wilkens, girls-in-technology non-profit leader and director of a K–12 computer science lab. @kimxtom


Project ideas

Creativity, fluency, inquiry, and improvisation come with time. The more you code, the more you see opportunities for coding in your life, classroom, content area, school, and community. For example, you and your kids might:

Code a lifestyle advice app for people living with diabetes or returning home after a hospital stay. Spark!

Create a webpage mapping kid-friendly, safe routes to outside-school learning events in your community. RideW/Me

Prototype a random design challenge, project, or game-generator for student-directed time during class. Homework Excuse Machine

This article was published in School Library Journal's April 2016 issue. Subscribe today and save up to 35% off the regular subscription rate.

Chad Sansing About Chad Sansing

Chad Sansing ( teaches middle school language arts in Staunton, VA.

Our newest installment of Maker Workshop will feature up-to-the-minute content to help you develop a rich maker program for your school or library. Join us to learn new ways of sparking engagement and hands-on learning directly from experts doing inspiring work that you can emulate, regardless of your library’s size or budget.
Empower Your Community with Coding
Launch a coding program in your library that will promote digital literacy and impact your community. You’ll learn how to run computer programming courses that will introduce your patrons to new career paths and technologies. We’ll explore all facets of building coding programming for your library such as making your case for funding, hosting Code Clubs and Hackathons, and curating free resources and technologies available online.