Today’s post is by guest author Bea Leiderman. Bea is a technology coach at Goochland County Public Schools in Goochland, Virginia, where she helps middle and high school teachers use technology to design effective learning opportunities and environments. Bea has won numerous accolades for her innovative teaching, and her work with colleagues incorporating Agile / SCRUM to transform learning projects was featured in the June 2016 issue of ISTE’s entrsekt magazine. Bea is the author of six books of insect macrophotography and a book about iBooks Author, all available on Apple’s iBooks Store. You can find more of her amazing insect photos on Flickr, and can follow her on Twitter, where she also has a channel for insect photography and information.
For as long as humans have been alive, we have been problem-solvers. The idea of designing solutions and executing them did not come about with the advent of the personal computer, although the personal computer and other related technologies do make the iteration of approaches and ideas so very convenient. This might be why Steve Jobs said in a 1990 interview that a computer is “the equivalent of a bicycle for our minds,” allowing our creative and problem-solving processes to go so much faster.
Coding in particular seems the most obvious method for teaching the design-and-iteration process that develops creative and critical thinking skills. Using coding is transparent, and it is easy to contrive ways of bringing coding into the traditional school schedule. It is also easy to dampen the joy that comes with ideating, designing, and executing an idea when coding is adopted as the only way to do so. As much as we might think we are helping students be creative, by making them all learn “coding,” whether they are interested or not, reduces coding to the same level as anything else we have ever forced upon children in schools.
I’m not against the idea of teaching coding, but I believe we are pushing too hard in the wrong direction. We don’t all need to know how to develop apps, as fun as it might seem to some, especially because each of us have our own particular idea of fun and our own plans for our future. Knowing how to code is not as important as knowing the ideas behind coding: designing a process and making it happen. If indeed all jobs will require coding in the coming century, everyone will have a better incentive than a grade on a report card (or *gasp* a standardized test) to pick up the skills.
Years ago, during my first few weeks as a classroom Spanish teacher, I collided with a pretty sad reality: with few exceptions, my students were not interested in speaking Spanish. I had dreamed of a room full of kids eager to understand the subtleties of Colombian slang and the poetry of Machado. Instead, students (and their parents) were mostly interested in making it through my class with minimum effort and a decent grade, and that’s as far as it went. I could have stuck to my ideals, but I realized a more practical approach would make the year easier and more productive, both for me and for the reluctant learners. Instead of trying to win them over, I met kids where they were. I told them we would approach the course content as something to be conquered. We would use Spanish to learn how to learn.
I don’t think of coding in terms so different from Spanish these days. Right now, everyone has to learn to code because someone out there says so. Mention coding to any group of students, let alone teachers, and many eyes glaze. Yes, there are a few willing learners here and there, but, overall, coding seems like a pill to swallow followed by a big gulp of anything else.
What are we trying to accomplish with coding that cannot be accomplished with a different approach? Despite the well-intentioned predictions, nobody out there actually believes we will all be app developers in the future, just as I did not believe my students would be fluent Spanish speakers. Still, we are all being pushed to learn app development tools. There are hordes of people making coding environments colorful, cute, and cuddly. This does not make people want to code any more than when they had clunky, pixelated blocks on bland, light gray backgrounds. Making coding blocks look like toys might make them temporarily more attractive to children, but it does not make the end result of the coding process any different, especially if we come up with contrived ways to shoehorn coding into an already bloated curriculum.
If our goal is to teach our students how to create a copy of Frogger in Scratch so we can check the box that says we participated in the Hour of Code, we miss the opportunity to teach them how to think through their own problems that they have to overcome to meet their own goals. Instead of teaching a particular tool because it was specifically made for coding, we should aim to teach the principles behind coding using any and all tools that drive us to develop computational thinking, iterative thinking, and design thinking.
Cooking as Code
Planning and executing the preparation of a complex meal involves some thinking of how the process should be organized and executed within very particular parameters, not unlike setting up a process to run in any programming language.
Let’s look at an everyday (or maybe just once a year) example. We are planning our Thanksgiving meal. We have to assemble all the building blocks (ingredients) and we have to design a process through which all of them will end up cooked and served at roughly the same time (dinner is served!). Some things have to happen in sequential order. The turkey must be trimmed and seasoned before it goes in the oven. Then it must be basted at regular intervals. This can be treated like a stack of code.
Dress turkey Put turkey on roaster Insert roaster in oven If internal turkey temperature < 165ºF Wait 30 minutes Baste Repeat If internal turkey temperature > 165ºF Remove from oven Wait 15 minutes Carve Serve
The turkey is simple, but now we need to add some complications, such as a green bean casserole, a pie, and some mashed potatoes. If all these dishes must be ready to serve at the same time, we need to add some parallel coding. We must cook other dishes while we wait for the turkey, and we must time each step properly so nothing is undercooked, overcooked, or cold.
If you are preparing your very first Thanksgiving meal, you might have a difficult time. However, next year you will have learned from any mistakes you made and you will do much better. And the year after that, you’ll be so good you’ll even add a cranberry relish and some appetizers.
Luckily, when working in a digital medium, we don’t have to wait until next year to debug and improve. Still, here the focus was on preparing a meal unique to this family in a way that fit the available tools in the kitchen, fed the expected number of guests, and was served at their traditional dining time. An authentic “problem” such as this meal cannot be solved by applying a single existing formula and there is no single right answer. It allows for creativity, personal choice, and singular expression. One family might choose to make tamales instead of a turkey. Another may have a vegan meal. The “code” for assembling these meals will be unique to these families, and all are valid solutions to unique, personal, and very real problems. These elements of choice and personalization should also be present in any formal attempt to teach design thinking, iterative thinking, and computational thinking.
Be Like Spielberg (or Ken Burns)
One of my favorite tools for digital projects, both at home and at work, is video editing software. I love using iMovie and Final Cut Pro, and I love showing people how they can make their own movies. It is very satisfying to drag clips into place and layer titles and effects over them.
Some projects are easy and consist of just an opening title, a few clips with transitions, and an audio track. Others have cutaways, green screen layering, Ken Burns effects, multiple lower-third titles, and layers of audio. At each step I have to hit play, watch, listen, and keep track of where I need to make adjustments. Then I split, drag, replace, transform, and hit play again. As I iterate, I might watch the same three minutes of video forty or fifty times, making hundreds of changes.
Video clips, audio tracks, filters, titles, and other video components can be seen as blocks of code just like the turkey, the green beans, and the potatoes. Luckily, I’m not eating that Thanksgiving meal forty or fifty times trying to get it just right. And, I don’t have to wait a full year between one Thanksgiving and the next. Technology lets me iterate dozens of times in a short span of time. Still, the iterative process is the same. I stack my blocks, hit play, judge the overall effect, make adjustments, and then do it again.
Teaching anyone to edit a complex video project achieves the same overall effect of teaching someone to code. There are a set of blocks (video, audio, images, effects) that can be combined in sequence or in parallel to yield a movie attractive to an audience. In addition to the combination of audio, video, and on-screen effects, anyone making a video must be aware of the visual and auditory language used to convey ideas. Framing and camera angles, fonts used in titles, and the scale and tempo of the background music have to be intentional and in perfect coordination with the intended message of the video. These add a new level of complexity to a video project that might not be present in a coding project. Everyone can code, but some of us might prefer editing a blockbuster. The learning is not diminished by the choice.
Art and Coding?
Just as someone may prefer to edit a blockbuster film, someone else might want to compose a digital symphony using GarageBand instead. Whether the composer is using individual notes or complex loops, they must be assembled in a particular order, in sequence or in parallel, to achieve an aural effect. Composers in previous centuries might have sat at the pianoforte scribbling filled or empty circles on the staves, forced to imagine the resulting symphony until instruments and musicians were available. Again, what technology brings is the capability of instantaneous preview and iteration.
Music and coding are more like each other, in my opinion, than any of my previous examples. There are loops, variations, open spaces for cadenzas and improvisations. There is even a very well defined syntax of music that goes beyond being able to set it down in writing for others to play: to achieve a specific emotional effect with a composition, the musician must have a thorough understanding of scales and timing.
Visual arts aided by technology could also be a medium for teaching students to ideate solutions to create the effect they hold in their mind’s eye. For example, Kandinsky often referred to his paintings as compositions, a deliberate combination of shapes and colors that convey rhythm and melody. He created dozens of small sketches of each of his works prior to executing the final work on canvas. In other words, he was testing his ideas in multiple iterations prior to declaring his design complete.
What would Kandinsky have created if, instead of watercolors and paper, he had had an iPad with an app similar to Procreate or Sketchbook for creating his initial sketches? What if, instead of having to be satisfied with static brushstrokes on canvas, he could have created rhythmic animations for his shapes to interact with each other? Imagine solid and semi transparent brush strokes overlapping and moving around each other, maybe even set to music of the period.
I would hope the tech-enabled Kandinsky would think to take screenshots of each design iteration as he did, undid, and tried again in his drawing app of choice. We are very lucky that someone in Kandinsky’s life had the forethought to save the piles of paper he must have left behind. Otherwise, we would lose this perspective of how his ideas came to be and how they changed over time. His sketches make the iteration visible and give any aspiring artist hope. If all we saw were the perfection of his gallery pieces and assumed they emerged from the artist’s brush fully formed, beginners might never have the courage to start painting. Understanding that even a genius needs to develop and improve designs over time is essential to learning.
Unfortunately, we reserve art and music too often for students who have already mastered other skills. This means we are providing art and music education only to students who have already figured out how to learn while depriving those who need the most help and would benefit the most from alternate routes to computational and iterative thinking. I fear that, as we go deeper and deeper into this coding craze we will add coding to the set of skills that must be mastered before students are allowed to tinker with sound and color. If not treated carefully, coding could end up as part of what we criticize in schools: a box we must check and a test we must pass.
Coding and the Maker Movement
Problem-solving and making go hand in hand. Education in previous centuries used to be primarily about making. Apprentices would learn from a master by helping out, then graduate to making their own products. Young people learned clearly necessary skills in a variety of contexts by observing, emulating, and working with experts. The Maker movement seeks to bring back these ideas of developing skills in context with the help of a mentor.
Making is an excellent idea, of course, but there is the danger of falling into the same trap of coding for the sake of coding: Making “stuff” that serves no purpose is simply making landfill content. Run a search for 3D printers and for schools raising money to buy 3D printers. Now run a search for schools making usable solutions to real-world problems with 3D printers. They are rare enough to make the evening news.
Just like coding, Making that fits into a particular curriculum can take a life of its own that is divorced from any real purpose. Printing little plastic cubes sounds like a novel idea, but if all kids print the same little cubes, the learning is not very different from a “yes” or a “no” on a worksheet. Making, if it aims to teach anything, must be about designing something that solves a problem or expresses a unique idea in a creative way. Otherwise, all we are teaching is how to use this or that particular brand of 3D printer or electronics kit. Rushing to create a Maker space without having a real understanding of what students could be making or why they will be making it drives up the cost of, again, checking a box. Do we have a Maker space? Yes, we do! Check!
An excellent example of modern-day Making without the gimmicks is the Modern Smarts Club run by Jay Brockman and Jim Frago at Goochland Middle School in Goochland, VA. Students and teachers have been collaborating on some amazing projects throughout the 2016–17 school year. Mr. Frago and Mr. Brockman might bring ideas to students, but mostly, students bring ideas and discuss the usefulness of any project before taking it on. This year the students have been working on building an augmented reality sandbox for modeling land formations, erosion, and runoff. They are also working on a kinetic bench, a digital sign that will display bell schedules, and a documentary about coal ash around the James River. While working on these projects, students have compiled code, but they have also measured, sawed, hammered, consulted with experts, and talked to teachers about how what they are making can be used for teaching. Students are learning to build useful things. They are also learning to interact with adults in a very different context than in a traditional classroom setting. The power dynamic is not that of a teacher and a student, but that of colleagues, co-learners working toward a common goal.
Requirements vs. Reality
In the spring of 2016, President Obama launched an initiative to bring Computer Science to all students in K-12 public institutions. It sounds really great, but I wonder how this will be implemented and how much students will actually learn. We don’t even know what exactly we should teach, and we don’t know where we will find qualified teachers. Tapping an app developer to come wrangle twenty third graders through a lesson on parallel processing might be the perfect recipe for disaster.
Not too long ago, we taught technology to students in labs. We taught typing in rooms full of IBM Selectric typewriters in straight rows. Every student typed the same memo from the same book. Teachers assured their students: Nobody would get into college without typing, much less get a good job. Of course, not everyone learned, and here we are. After typing came word processing, spreadsheets, and databases taught on blocky beige computers in straight rows. Every student calculated the same return on investment for the same non-existent company. Not all of us learned, and again, here we are. Now we are in danger of making coding another box to check, another obsolete trend to laugh at in decades to come. We are giving in to our cyclical amnesia, repeating the same mistakes we have made before when our lives are turned around by new technologies.
Bringing coding and computer science to kids will take some time. If we put all our eggs in the narrow basket of “coding-for-the-sake-of-coding,” we might miss opportunities to give our students the skills they need to compete in whatever economy might have emerged by the time today’s fifth graders enter the workforce: computational thinking, design thinking, iterative thinking in real contexts working towards real solutions to real problems. If you want students to code, have them create something that will run on devices available at your school, something that can be shared with the student body to help them solve a problem particular to your geographic area or school building. Or have them create something bigger, something with universal appeal. Let students learn skills as they need them to complete a task rather than all at the same time as demanded by some textbook or online program. The motivation to learn will be the real need for that particular skill. Think of how you, as a professional, have learned to navigate around the demands of your job. When did you learn to print double-sided and staple? Likely when you needed to hand out a document, not when you sat through the meeting at which the video from the DVD was projected for all to see.
Instead of looking for one particular technology kids should master, we should focus on helping students see a path forward through any situation in school, at home, and in a future workplace. If any technology is part of that solution, students will embrace and master it. We need to have an open mind about the tools students should have at their disposal and give them the freedom to experiment, mix and match, tinker, and dream. In today’s connected classrooms, the hurdle is often not the technology but the fear of letting kids take the steering wheel of their learning through projects and challenges that go beyond the classroom walls.
January 8, 2017 at 5:22 pm
Excellent post. Great ideas for expanding coding so that it embraces all subject areas!
January 7, 2017 at 7:52 pm
I was fascinated by your article, and especially by your broad set of examples. I can easily visualize finding just the right problem that will entice each student to want to get involved. Good job!