Saturday, August 31, 2013

Can computer programming in schools do more than just Scratch the surface?

Just the other night, I had the great pleasure of joining the Chicago Women Developers Meetup group for their tutorial of a beginner-friendly programming tool called Scratch. Made by the folks at the MIT Media Lab, Scratch is a free, robust little interface and code compiler all in one, and it is geared toward making programming basics fun and broadly accessible.

I've taken a look at Scratch before and could quickly see its advantages for kids: it has some built-in graphics and sounds that kids can begin applying to their projects immediately, which no doubt overcomes a lot of the most intimidating things about developing a new program: staring at a big, blank text document and wondering how that will ever translate into a working program. But what I wasn't certain about how teachers have been using Scratch in their classrooms and how students have been responding.

Scratch provides graphics, sounds, and a friendly
interface that make it easy to get a quick start.
Fortunately, this was a "Teacher's Night" meetup, and we heard several accounts from local teachers about how they've used Scratch and how they've witnessed students' excitement about making and sharing their programs with each other. Surely there could be no more of a ringing endorsement for Scratch than hearing that kids are engaged and enthused about working with it!

But after seeing a good chunk of what Scratch has to offer, I couldn't help but leave the meeting with a nagging little doubt in the back of my mind: is Scratch really the best approach to teaching programming?


For early elementary school kids, the appropriateness of Scratch seems beyond doubt to me. The drag-and-drop interface eliminates the need to first teach kids typing skills, and the colorful included graphics undoubtedly keep the kids' eyes from immediately glazing over at the prospect of programming. But for  somewhat older students, does it make sense to teach programming with a tool that has no real-world use?

By the time students are approaching the sixth and seventh grades, they're reading the likes of Dickens, Bradbury, Tolkien, and Stevenson. They should be able to work with ratios and solve math problems containing variables. Call me crazy, but I think if they're expected to be able to handle these kinds of intellectual challenges, then there's no reason why they couldn't also be reasonably expected to handle using a basic text editor and writing up some simple code in Python or Javascript

Am I too much of a dreamer? Am I drastically overestimating what my capabilities were as a middle schooler? I like to think not. I understand that Scratch makes it easy for kids to understand basic, abstract programming principles and logic by eliminating the tedious real-world difficulties of figuring out how to package and deploy code as a real software application. But for me, overcoming those difficulties and seeing my code live and functioning in-the-wild, so to speak, is half the satisfaction of being a developer.

When I was in middle school, I remember working with applications similar to Scratch insofar as we then had to drag and drop pieces of instructions to satisfy the constraints of a particular challenge or prompt. And I also remember hating those activities because they were totally artificial and felt like busywork. My love for development didn't begin until a teacher one day told me she needed a website and told me to figure out how to build one. Suddenly, that goal of needing a real, functional website inspired me in a way none of the canned scripting lessons I'd had up until that point ever did.

Lego buildings can be very impressive,
but I still wouldn't want to live in one.
Sure, we can give kids an all-in-one package that hides the messiness and simplifies the projects into one neat, complete package, but when we do, we're teaching kids to build with Legos rather than making them learn carpentry. For young kids, that's appropriate enough, but by middle school, shouldn't we be thinking about how to prepare students for contributing meaningfully in the adult world? Why not be teaching them how to make simple but real websites, applications, and games?

The Women Developers meetup group was a great opportunity to begin exploring Scratch, but I still have many unanswered questions for today's teachers. Is it too idealistic to think our kids can handle real programming languages by middle school? What tools would you, as teachers, need to be able to think about leaving Scratch behind and begin teaching middle-school age students and above intro programming in real languages? Would you need graphics and sound packs? Tutorials? Infrastructure for sharing projects? Can current developers create better tools to help you, or do you think Scratch is good enough? Please, share your thoughts below!

No comments:

Post a Comment