My first computer was a Tandy. It was Dad's gift to the family for Christmas in 1991. I quickly tired of the simple office productivity software with GUI's made in ASCII. That's when I discovered Basic programming. From the code printed in issues of the Tandy enthusiast magazine I'd retype whatever games that might have been included. Inevitably, I'd mistype something on all but the simpliest of listings and things wouldn't run. But it wasn't wasted time. Even if the input was garbled beyond recognition I was learning logical thinking - being able to break down problems into repeatable, understood elements. After one particularly frustrating FAIL I took what I had gleaned about loops and screen coloring and made my own program. It manipulated the sixteen color display to produce a seizure-inducing, strobing effect. When my Dad saw it he asked, "You did this?". It wasn't with disdain or anger. It was one of the first times I can remember hearing genuine pride over something I had done in his voice.
I will cherish how I felt in that moment for the rest of my life.
Personal computing has come a long way since those days of beige desk monoliths. Computers — cloud, handheld, wearable, or other — have embedded themselves in every aspect of our lives. But the ubiquity of computers, and the software that runs on them, has had a troubling side effect. The computing I knew, the one with code sample magazines, has been replaced with shrink wrapped gadget lust. Need the phone to do something? Well, there's an app for that - no need to trouble yourself with creating your own. And, for heaven's sake, don't open the case - that will void your warranty. Better to just buy the new model then trying to update what you have. This disposable approach dismays me.
I believe that technology is a thing people should do, not something people are meant to buy. Technical literacy is the difference between being able to make a future, and reacting to one. As Douglass Ruskoff, media theorist, famously declared "Program or be Programmed". Lawrence Lessig also, correctly, pointed out that "in cyberspace, code is law". I don't want people to be consumers, users, marketing leads, or the product. I want them to be makers, or equal creators of their experiences. If our children don't have the ability to write the laws that will govern their interactions, they will become beholden to those that can.
That's why I started a group for my son and a group of his friends. We call it "Code with Kids". Once a week we have a collaborative play session around a particular topic. I start with some big concepts - the history of computing, web programming, game development - and attempt to atomize it down to comprehensible, candy-colored chunks. Each kid received their own Raspberry Pi computer and was encouraged to customize it; week one was looking at various computer case mods online and then making our own cases with Lego. I feel it is vital to establish their ownership of this device - this isn't the school's lab machines, or a parents' laptop, or something shared with their siblings. The PI is their computer and the basis for subsequent programming flights-of-fancy. I've posted some resources for what we're doing to Github, along with the agenda.
There aren't grades. There isn't homework or required assignments. And while the lessons do build on and re-enforce what was learned in previous weeks we're not building toward a final performance or competition. I've specifically tried to tailor things around a loose idea of directed play.
Children do need to learn how to overcome adversity, problem solve under time duress, and cope with pressure. They need to learn how to take winning and losing with equal grace. But this pointed, heavily-orchestrated approach can't be the entirety of a learning experience. I fear too much of youth's time for open-ended discovery has been replaced with the scheduled rigidity of pre-supplied intention. A rigid curriculum of orderly school topics spills over into numerous extra-curriculars, each with it's own set of quantifiable metrics and trending curves.
Kids need unstructured play. I want "Code with Kids" to be a space where they're free find a technology thread that interests them. I'm just a facilitator to them discovering a joy in making things. I don't know if, by the end, they'll be creating the software of tomorrow. I don't know if they're having fun (although early results are positive). Like trying to manually recreate those early computer programs, I don't know exactly where this is going. But, for the sake of tomorrow's creators, it is worth trying.