Creativity and coding can both conjure both powerful and opposing stereotypes. So let's begin with what creativity is. I spent years studying poetry, and without much understanding of it, poetry can look chaotic and obtuse. Poetry can be alienating because it seems to require special knowledge to make sense of it. The rules can be elusive, yet when read aloud, the words can transport us to a world of awareness and feeling crafted by the author.
Programming is also a system of syntax designed to support an interaction between two entities. So how can we use programming to teach creativity?
1. Creating a system to work from
First, I teach my students to understand that programming is a unique interaction with a common system. Programming is the way we can make things happen on a screen or with a robot, and creativity is finding unique or interesting things to make happen. All creative artists work within some systems, and creativity is about getting the system to do amazing and inventive things.
2. Focusing on skills
I teach creativity in a way that celebrates discovery and focuses on skills. Sometimes this comes down to the daily balance between directions and discovery. I meet the daily challenge of supporting creativity by under-instructing. I provide a goal like "create a presentation," and I provide suggested tools, but I don't give click-by-click directions because I want to make room for the student's ideas. When it comes to assessment I focus on the skills used, not the product itself. For instance, my rubric does not evaluate if a certain number of slides were used with word counts; I assess if information was presented clearly. While supporting creativity, I keep the focus on what truly matters: skill building.
3. Turning programming into a mode of expression
If you approach programming as a mode of expression, you can empower children to exercise their creativity. When we write long inelegant code we learn to appreciate more elegant structures when we find them. We learn about these structures by trying to build programs, presentations, animations, and games.
When we learn to write we begin with oversimplified diction, and over time we progress into writing obtuse and wordy academic prose. If we are lucky, with the help of readers and friends, we finally arrive at clear writing that communicates an idea or feeling to our audience. Programming requires much the same journey. Our programs start simple, building skills. Soon we progress from drawing hexagons and printing “hello world” to creating games and animations. The good news is that our students are already more familiar with the mentor texts of programming.
What can we express through code? In the classroom we have many opportunities everyday to create meaningful, important work with code. Create an app as part of project-based learning, write a game the helps practice sight words, or create an interactive web that puts a trifold board to shame.
4. Meeting students at their interests
My students, ages 5-20, all know they live in a world run on screens. If I claim to be a teacher who believes in empowering students, I have to help them learn to program. Programming is the new language of empowered producers. If I want them to stop playing Subway Runner and make something, I need to give them creative license. I need to give them the tools and permission to change their world.
Creativity is a mindset. My students need to know they can create important things that the world interacts with. They can create with wool, wood, or lines of code.
5. Learning alongside your students
If you want to promote creativity with programming, learn alongside your students. Get down on the floor with them and figure out how to make things happen with code. The important part is figuring it out. Creativity is perseverance at its best. Have faith in the process and learn together. Try many things--make animated films, document a Lego build, make a robot dance--and see what sticks.